我正在像这样使用 nodejs + Express (v3):
app.use(express.bodyParser());
app.route('/some/route', function(req, res) {
var text = req.body; // I expect text to be a string but it is a JSON
});
我检查了请求 header 并且缺少内容类型。即使“Content-Type”是“text/plain”,它似乎也被解析为 JSON。无论如何告诉中间件总是将正文解析为纯文本字符串而不是 json? req
的早期版本曾经有 req.rawBody
可以解决这个问题,但现在它不再存在了。在 Express 中强制将正文解析为纯文本/字符串的最简单方法是什么?
最佳答案
默认情况下 bodyParser.text()
只处理文本/纯文本。更改类型选项以包含 */json
或 */*
。
app.use('/some/route', bodyParser.text({type: '*/*'}), function(req, res) {
var text = req.body; // I expect text to be a string but it is a JSON
});
//or more generally:
app.use(bodyParser.text({type:"*/*"}));
您可以找到文档 here
https://stackoverflow.com/questions/12345166/