我有一个基于快速的服务器正在运行,它正在使用bodyParser.json()和bodyParser.text()添加到管道中。现在,一些消费者使用JSON有效负载向此服务器的端点发出POST请求,但未在请求标头中指定`content-type:application / json'。这导致bodyParser忽略了请求的主体,因此不包含在响应中。
--- client ---
fetch('http://myurl/submit', {method: 'POST', body: "{key: value}"}, cb);
--- server ---
app.use(bodyParser.json());
app.post('/submit', (req, res) => {
// req.body - IS EMPTY!!!
// I assume it's empty because bodyParser.json() didn't recognise the payload as json as no content-type header was included
})
问题:在我的快递应用程序中,如果没有提供POST主体的内容类型,如何检测?是否有标准库可以接受正文内容并返回其mime类型?
答案 0 :(得分:2)
来自bodyParser文档:https://www.npmjs.com/package/body-parser
bodyParser.json([选项])
返回仅解析json并仅查看Content-Type标头与type选项匹配的请求的中间件。此解析器接受正文的任何Unicode编码,并支持gzip和deflate编码的自动膨胀。
选项
json函数接受一个可选的options对象,该对象可能包含以下任何键:
严格
设置为true时,只接受数组和对象; false时会接受JSON.parse接受的任何内容。默认为true。
将严格设置为false可能会对您有所帮助。