Node通过body-parser获取发布的variables
我试图检索节点应用程序中发布的variables。 我正在使用Postman表单数据(就像我在其他许多APItesting情况下)将消息发布到我的节点应用程序。 但是当我console.log
request.body
,我得到一个空的对象。 这是我的整个节点应用程序:
var express = require('express'); var app = express(); var bodyParser = require("body-parser"); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.post('/foo',function(request,response){ console.log(request.body); }); app.listen(3000, function(){ console.log('listening on *:3000'); });
张贴一些数据后,这是什么显示在我的控制台:
listening on *:3000 {}
这是我的package.json:
{ "name": "api", "version": "0.0.1", "description": "api", "dependencies": { "express": "^4.12.4", "socket.io": "^1.3.5", "body-parser": "~1.12.0" } }
我想我想继续使用body parser,因为我打算使用json数据创build这个API。 该应用程序加载得很好,没有错误。 我错过了什么?
经过一些testing之后,我发现body-parser不能parsingmultipart/form-data
因为他们的README是Postman的默认编码。
要parsing这种格式,你可以使用:(再次从他们的自述文件中)
- busboy和连接busboy
- 多党和连接多党
- 强大
- multer
如果只是为了debugging目的,请设置邮递员发送:
x-www-form-encoded
通过选中相应的checkbox(见图片)
或者是原始模式,注意将mime头部设置为application/json
否则parsing器将忽略它(请参见图片)
当我使用邮递员发送数据和将代码内容设置为application/x-www-form-urlencoded
时,我得到了预期的控制台输出。 npm-bodyparser
不处理multipart/form-data
,这就是你发布的内容。
要parsingmultipart/form-data
,请使用multer
或者multer
。