node.js - req.body 在帖子上为空

标签 node.js express

突然之间,我所有的项目都发生了这种情况。

每当我使用 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 和 postman ,它总是空的。

但是通过 curl

$ curl -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:2000/

它按预期工作。

我尝试在前者中手动设置 Content-type : application/json 但我总是得到 400 bad request

这让我发疯了。

我以为是 body-parser 中更新了一些东西,但我降级了它并没有帮助。

任何帮助表示赞赏,谢谢。

最佳答案

在可用于内容类型的 3 个选项的 Postman 中,选择“X-www-form-urlencoded”,它应该可以工作。

还要去掉错误信息替换:

app.use(bodyParser.urlencoded())

与:

app.use(bodyParser.urlencoded({
  extended: true
}));

https://github.com/expressjs/body-parser

“body-parser”中间件只处理 JSON 和 urlencoded 数据,不处理多部分

正如@SujeetAgrahari 所说,body-parser 现在内置于 express.js 中。

使用 app.use(express.json()); 在 JSON 主体的最新版本中实现它。对于 URL 编码的正文(由 HTTP 表单 POST 生成的那种),请使用 app.use(express.urlencoded());

关于node.js - req.body 在帖子上为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543847/

相关文章:

javascript - 用node js动态导出函数

node.js - AWS S3 node.js SDK 上传文件和文件夹权限

javascript - Mongoose 使用 Promise 或 Async/Await 的区别?

javascript - express app.get ('/* ' ) 和 api CORs 问题

node.js - 不允许 POST 请求 - 不允许 405 - nginx,即使包含 header

javascript - 在nodejs中处理异步数据库

node.js - 从 Angular 发布到 Node。在 Node 上获取空体

node.js - 无法从 Angular 调用 Express Rest api

mysql - 在 Sequelize 中未定义 findOne 属性

javascript - Node .js : How do I pass in multiple variables into a view?