我正在尝试使用Express 4.0实现一个简单的服务器并使用BodyParser解析消息。为了测试我的服务器,我使用Postman。
使用x-www-form-urlencoded
作为消息模式,它可以正常运行,但使用JSON
更改消息我无法使用BodyParse
分享数据。
这是我的代码:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
var router = express.Router()
router.get('/', function (req, res){
res.json({message: "nd..."})
})
var sendRoute = router.route('/msg')
sendRoute.post(function(req, res){
// HERE IS THE PROBLEM******************************
// It works with urlencoded request but not with JSON
var dataparam1 = req.body.param1
var dataparam2 = req.body.param2
****************************************************
.
.
.
})
让我们说这是我从请求中得到的JSON数据:
[{"param1":"This is the param1",
"param2":"This is the param2"
}]
我的代码出了什么问题?我如何获得以JSON格式发送的params?
答案 0 :(得分:4)
如果您的请求正文是作为JSON字符串发送的,那么您必须通过内容类型标题告诉您的应用。
Headers
按钮,选择方法和URL params
按钮。 (右上)Content-Type
和右侧字段中的application/json
。 bodyParser
可以处理多种类型的数据,但它必须知道您提交的格式。它不会尝试猜测数据类型。
下拉菜单(根据您的评论,目前设置为'JSON')就在您填写请求正文的textarea上方,仅切换语法突出显示,它不会设置Content-Type标头您。