突然之间,我的所有项目都发生了这种情况。
每当我使用express和body-parser在nodejs中发帖时req.body
是一个空对象。
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded())
// parse application/json
app.use(bodyParser.json())
app.listen(2000);
app.post("/", function (req, res) {
console.log(req.body) // populated!
res.send(200, req.body);
});
通过ajax和邮递员它总是空的。
然而通过卷曲
$ curl -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:2000/
它按预期工作。
我尝试手动设置Content-type : application/json
在前者,但我总是得到400 bad request
这让我发疯。
我以为是 body-parser 中更新了一些东西,但我降级了,但没有帮助。
任何帮助表示赞赏,谢谢。
在 Postman 的 3 个可用于内容类型的选项中,选择“X-www-form-urlencoded”,它应该可以工作。
还要摆脱错误消息替换:
app.use(bodyParser.urlencoded())
With:
app.use(bodyParser.urlencoded({
extended: true
}));
See https://github.com/expressjs/body-parser https://github.com/expressjs/body-parser
“body-parser”中间件仅处理 JSON 和 urlencoded 数据,而不处理多部分
正如@SujeetAgrahari 提到的,body-parser 现在内置于express.js 中。
Use app.use(express.json());
在 JSON 主体的最新版本中实现它。对于 URL 编码的主体(由 HTTP 表单 POST 生成的那种)使用app.use(express.urlencoded());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)