Express js post方法错误地读取编码的数据
我有我的angularjs代码,试图发送一个post请求如下
var req = { method: 'POST', url: 'http://localhost:3300/addInventoryItem', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { item_name : item.itemName } }; $http(req).then(function(response){...});
我有我的nodejsexpression代码有这个
app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.post("/addInventoryItem", function(req, res) { console.log(req.body); });
我总是在我的节点中获取请求
{ '{"item_name":"sweetB"}': '' }
为什么req.body
将整个表单数据作为关键字? 我该如何解决这个问题?
编辑我正在使用身体分析器模块快递
谢谢你的帮助
尝试以编码格式发送数据,请求标头为json。
var data = $.param({ json: JSON.stringify({ item_name : item.itemName }) });
正如@mzulch在评论中提到的那样,您正在寻找一个正文parsing器 ,以便Express将为您parsing请求正文。
var app = express(); //... var bodyParser = require('body-parser'); // parse urlencoded request body app.use(bodyParser.urlencoded({ extended: true, limit: '50mb'}));
然后,在控制器中,您将拥有一个对象:
app.post("/addInventoryItem", function(req, res) { // req.body is an object: {"item_name":"sweetB","item_price":10} console.log(req.body); });