从本地应用程序中快速接收Webhook

时间:2018-09-03 21:38:41

标签: node.js webhooks

我有一个本地运行的应用程序(无头CMS)。它具有将Webhook发送到另一个应用程序的选项。我一直在尝试通过快递使用帖子来解释这个网络挂钩。我什至无法获得它来注册来自应用程序的请求。我使用邮递员测试了这条路线,并发现在我发布该路线时可以使用。

router.post('/', (req, res) => {
    console.log("Recieved");
    console.log(req.body);
    res.status(200).send('ok')
});

因此,当我通过邮递员向http://localhost:3000/recall发送帖子时。我得到以下标头:

Access-Control-Allow-Credentials →true
Access-Control-Allow-Headers →X-Requested-With,content-type
Access-Control-Allow-Methods →GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Origin →http://localhost:3000
Connection →keep-alive
Content-Length →2
Content-Type →text/html; charset=utf-8
Date →Mon, 03 Sep 2018 21:23:22 GMT
ETag →W/"2-eoX0dku9ba8cNUXvu/DyeabcC+s"
X-Powered-By →Express

随身:

ok

我的脚本还打印了帖子的正文。

我可以通过使用请求bin测试Webhook来验证其是否正常运行。我得到以下信息:

FORM/POST PARAMETERS
None

HEADERS
Cloudfront-Forwarded-Proto: http
Cloudfront-Is-Mobile-Viewer: false
Cloudfront-Is-Desktop-Viewer: true
Connect-Time: 1
Via: 1.1 3566cbcd49f71967b52a565888e4d272.cloudfront.net (CloudFront), 1.1 vegur
Content-Length: 387
Connection: close
Accept: */*
Content-Type: application/json
Cloudfront-Viewer-Country: US
X-Amz-Cf-Id: dRe5CvkLFJZJNcpZbhmeEHo0ar_taj6guvN8utwkyVXM7ZMJc5BZTw==
Cloudfront-Is-Smarttv-Viewer: false
X-Request-Id: 4b6d2cdc-5c45-495b-b358-2e808e1bfeb4
Cloudfront-Is-Tablet-Viewer: false
Total-Route-Time: 0
Host: requestbin.fullcontact.com

BODY
{"event":"singleton.remove","hook":"Save After Sington","backend":1,"args":[{"name":"Wonder","label":"Wonder","_id":"Wonder5b8cef36a0097","fields":[{"name":"Best","label":"","type":"text","default":"","info":"","group":"","localize":false,"options":[],"width":"1-1","lst":true,"acl":[]}],"template":"","data":null,"_created":1535962934,"_modified":1535962934,"description":"","acl":[]}]}

我尝试启用跨域请求。我该如何解决这个问题?我认为这与该请求在本地发出和结束有关。

1 个答案:

答案 0 :(得分:2)

应用程序要使用Web钩子,需要有一个公共可访问的URL。基本上,世界其他地方(互联网)都不知道您的localhost:3000端点存在。

解决此问题的一种简单方法是使用ngrok之类的轻量级工具来公开您的本地服务器;进而允许其他应用程序与您的应用程序进行通信。

您将需要定义要使用webhook POST请求的特定回调路由。下面的示例。

  1. 运行您的节点脚本
  2. 打开ngrok
  3. 使用NGROK https地址将webhook POST请求发送到您的端点 Ngrok example

现在,不要将您的Webhook发送到localhost:8000/MyWebhookConsumingEndpoint
您将其发送到
 https://95e26af4.ngrok.io/MyWebhookConsumingEndpoint