我有一个API,可以使用application / json请求从所有传入请求中正常工作。但是最近我遇到了处理来自x-www-form-urlencoded的POST请求的需要,并且请求的正文始终为空。
我使用POSTMAN测试API,并且当我使用带有JSON(application / json)的raw选项发送请求时,效果很好。但是,当使用x-www-form-urlencoded发送数据时,正文为空。
POST的路由为app / api / sensor,文件如下:
app.js
var express = require('express');
var app = express();
.......
app.use(express.json());
app.use(express.urlencoded()); // THIS SHOULD WORK!
......
sensor.js开机自检
......
sensorRoute.post('/', (req, res, next) => {
console.log(req.body);
const temperature = req.body.temperature;
console.log(temperature);
if (!temperature) {
return res.status(400).send({'res': 'Missing data'});
} else {
return res.status(200).send({'res': 'OK'});
}
});
....
预期结果应该显示使用邮递员在req.body中发送的数据,而不是空对象,并且与应用程序/ jason相同。
答案 0 :(得分:0)
更改
app.use(express.urlencoded());
到
app.use(bodyParser.urlencoded({
extended: true
}));
扩展选项允许您在使用querystring库(如果为false)或qs库(为true)解析URL编码的数据之间进行选择。 “扩展”语法允许将丰富的对象和数组编码为URL编码格式,从而使URL编码具有类似JSON的体验。有关更多信息,请参见qs库。
默认为true,但是不建议使用默认值。因此添加选项extended: true