在Firebase中使用HTTP触发的函数时,我无法从HTTP请求中访问HAL + JSON有效内容。
请求如下:
POST /endpoint
Content-Type: application/hal+json
{ /* some payload */ }
在我的功能中,我使用request.body
访问有效负载,如下所示:
...
var myPayload = request.body;
...
myPayload的值是:
{}
相反,当HTTP请求包含Content-Type: application/json
时,myPayload
的值是正确的:
{ /* some payload */ }
我认为它与以下内容有关:express.json()
有没有办法在Firebase中配置express以包含application/hal+json
?例如:
express.json({
type: [ 'application/json', 'application/hal+json' ]
});
或者自己访问原始身体?
注意:我不想在函数中创建快速应用程序。
答案 0 :(得分:0)
请参阅the documentation了解Cloud Functions如何自动处理传入请求。
Cloud Functions解析application / json的请求正文内容类型 和application / x-www-form-urlencoded根据描述的规则 以上。纯文本内容类型(text / plain)作为传递 使用UTF-8作为默认编码的字符串(或自定义编码) 在内容类型标题中提供。)
对于其他内容类型,rawBody属性包含未解析的内容 请求体的字节作为Buffer对象。
您的"其他内容类型"这可能意味着您的原始请求正文可以从rawBody
属性中的Request对象获得。