我已经尝试了Node "req is not defined"和req.body is empty when making a post request via http.request上的线程,但问题仍然存在。
服务器端代码:
var express = require('express');
var bodyParser = require('body-parser');
var validator = require('validator');
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
next();
});
app.post('/sampleurl', function (req, res) {
var reqbody = req.body;
console.log(reqbody);
});
app.listen(process.env.PORT);
console.log("listening");
我发送的内容(使用hurl.it):
我从服务器(console.log)返回的内容:
listening
{}
答案 0 :(得分:5)
答案 1 :(得分:2)
要扩展另一个答案,这是正确的,正文解析器会在尝试解析HTTP正文之前检查Content-Type
。
如果您想要更改此行为,您可以让body-parser尝试将任何输入解析为json,而不管Content-Type
:
app.use(bodyParser.json({ type: '*' }));
通配符*
会告诉它尝试解析任何类型:https://github.com/expressjs/body-parser#bodyparserjsonoptions