[英]req.body is empty on express POST call
我正在尝试以快递方式编写示例POST调用。
var express = require("express")
, app = express()
, server = require('http').createServer(app)
, bodyParser = require('body-parser');
app.listen(80, function() {
console.log("server started");
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.post("/test", function(req, res) {
try {
console.log(req.body);
res.send("working " + req.body.name);
} catch(e) {
console.log("error in test API" + e.message);
res.end();
}
});
但是我无法访问服务器上的主体数据。 它是空的。 以下是邮递员查询。
如果要JSON数据,请在Postman中选择raw under body,而不是form-data。
然后以JSON格式输入数据。 如果您设置了标头,则邮递员应将其格式化: Content-Type: application/json
编辑:
如果要解析表单数据,则不能使用自述文件中所述的body-parser:
由于其复杂且通常较大的性质,因此无法处理多部分实体。 对于多部分实体,您可能对以下模块感兴趣:
要阅读为req.body,您会丢失Content-Type:我认为是application / json标头,将其添加并将请求发送到原始json中。 否则,您将得到一个字符串,而无法作为req.body直接访问它
例如:
{"name" : "abcd"}
更新:
如果您需要表单数据,请使用bodyParser将文本转换为json
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json());
更新2:
看来问题出在您使用的multipart / form-data。 要处理它,由于安全性问题,您将需要诸如multer之类的特定框架。 下面应该工作。
var multer = require('multer'); var upload = multer() ; app.post('/test', upload.array(), function (req, res, next) { console.log(req.body); });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.