1

我正在尝试使用 Express 4.0 实现一个简单的服务器并使用 BodyParser 解析消息。为了测试我的服务器,我使用 Postman。

使用x-www-form-urlencoded作为消息模式它可以正常工作,但是使用JSONI can't parte data using更改消息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 格式发送的参数?

4

1 回答 1

4

如果您的请求正文作为 JSON 字符串发送,那么您必须通过内容类型标头告诉您的应用程序。

  1. 在 Postman 中,单击Headers下拉菜单旁边的按钮以选择方法和URL params按钮。(右上)
  2. 表格将展开,填写Content-Type左侧字段和application/json右侧字段。
  3. 提交请求。

bodyParser可以处理多种类型的数据,但它必须知道你提交的是什么格式。它不会尝试猜测数据类型。

填写请求正文的文本区域上方的下拉菜单(根据您的评论,目前设置为“JSON”)仅切换语法突出显示,它不会为您设置 Content-Type 标头。

于 2014-10-09T13:19:22.203 回答