在创建webhook之后,当我填写表单时,它会向我的API发送一个POST请求,但主体是空的。
我在互联网上找不到任何东西,SM文档还有很多需要改进的地方。
我的API
async testWebhook({ request, response }) {
console.log('request.body', request.body)
response.status(200).send()
return
}那会是什么呢?
发布于 2019-02-26 00:55:07
如果您的应用程序在Express.js上运行,我找到了答案
Survey Monkey Webhook帖子声明了一个头'application/vnd.surveymonkey.response.v1+json‘
如果您不在Express中处理此问题,则request.body对象将为空。
您可以使用body-parser并定义header:
app.use(bodyParser.json({
type: 'application/vnd.surveymonkey.response.v1+json'
}));请参阅此处的文档- body-parser types
我还应该提一下,当我用Survey Monkey创建我的Webhook时,我确实包含了“内容类型”,但直到我在应用程序中添加了这个额外的配置,它才开始显示我的POST数据。
Webhook创建示例:
{
"name": "My Survey Completed Webhook",
"event_type": "response_completed",
"object_type": "survey",
"object_ids": ["1234"],
"subscription_url": "https://APP_URL/survey-responses",
"content_type": "application/json"
}发布于 2018-09-16 23:12:59
主体应该有一个JSON,其主体类似于示例。一个可能的问题是,来自SurveyMonkey的webhook发送带有自定义内容类型标头的正文,例如application/vnd.surveymonkey.survey.v1,这可能与您的服务器不兼容。
我不确定它是否有文档,但你可以在创建webhook时通过在正文中包含application/json来指定内容类型:
POST /v3/webhooks
{
...
"content_type": "application/json"
}这可能会使它工作,而不需要对服务器中的正文解析器设置进行任何更改。
https://stackoverflow.com/questions/52248105
复制相似问题