尝试建立一个web钩子系统,用户可以通过提供一个方法和一个端点来连接到我的快速服务器的任何方法(例如PUT /movies/*)。这将将编辑的电影发送到用户的回调url。
我在这里面临的挑战是:
path-to-regexp库的工作方式)。我真的不知道如何处理第一点,但是我能够使用这里提供的解决方案( MongoDB reverse regex )检索我的webhooks
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端点,而只应该匹配后者。
发布于 2019-08-07 12:22:46
好吧,我只是睡眠不足,我走错路了。
一种解决方案是在注册web钩子时调用用户提供的端点上的path-to-regexp方法,这样就可以将真正的表达式存储在端点旁边,但将其隐藏给用户。
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;
}https://stackoverflow.com/questions/57391258
复制相似问题