首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb反向匹配API端点路径

Mongodb反向匹配API端点路径
EN

Stack Overflow用户
提问于 2019-08-07 09:33:27
回答 1查看 128关注 0票数 1

尝试建立一个web钩子系统,用户可以通过提供一个方法和一个端点来连接到我的快速服务器的任何方法(例如PUT /movies/*)。这将将编辑的电影发送到用户的回调url。

我在这里面临的挑战是:

  1. 不强迫用户编写一个完整的正则表达式(比如bash通配符,或者节点path-to-regexp库的工作方式)。
  2. 当端点被调用时,检索与其匹配的所有钩子

我真的不知道如何处理第一点,但是我能够使用这里提供的解决方案( MongoDB reverse regex )检索我的webhooks

代码语言:javascript
复制
  private static async getWebhooks(endpoint: string, method: string): Promise<any[]> {
    return await MongoDb.Instance.Models.Webhook.find({
      $where: `"${endpoint}".match(this.endpoint)`,
      method: method,
    });
  }

这并不像预期的那样有效。如果是GET /movies/*,这将匹配GET /movies端点和GET /movies/:movieId端点,而只应该匹配后者。

EN

回答 1

Stack Overflow用户

发布于 2019-08-07 12:22:46

好吧,我只是睡眠不足,我走错路了。

一种解决方案是在注册web钩子时调用用户提供的端点上的path-to-regexp方法,这样就可以将真正的表达式存储在端点旁边,但将其隐藏给用户。

代码语言:javascript
复制
import * as pathToRegexp from 'path-to-regexp';  

public async Create(webhook: IWebhook): Promise<any> {
  let pattern = pathToRegexp(webhook.endpoint.original, []);
  webhook.endpoint.pattern = pattern;

  const createdWebhook = await MongoDb.Instance.Models.Webhook.create(webhook);

  this.setStatus(201);
  return createdWebhook;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57391258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档