Node.js req.body是空白的
我已经尝试了Node上的线程“req is not defined” , 当通过http.request和类似方法发出post请求时 , req.body是空的 ,但问题仍然存在。
服务器端代码:
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 {}
我只是试过你的代码..这是完全没问题..
你缺less的是在请求中添加头文件。
将Content-Type
头添加为application/json
为了扩展另一个正确的答案,body-parser在尝试parsingHTTP正文之前检查Content-Type
。
如果你想改变这种行为,你可以让body-parser试图parsing任何input到json中,而不pipeContent-Type
:
app.use(bodyParser.json({ type: '*' }));
通配符*
会告诉它尝试parsing任何types: https : //github.com/expressjs/body-parser#bodyparserjsonoptions