NodeJs,Express,BodyParse和JSON

时间:2014-10-09 12:46:34

标签: json node.js express body-parser

我正在尝试使用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?

1 个答案:

答案 0 :(得分:4)

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

  1. 在邮递员中,点击下拉列表旁边的Headers按钮,选择方法和URL params按钮。 (右上)
  2. 表格会展开,填写左侧字段中的Content-Type和右侧字段中的application/json
  3. 提交请求。
  4. bodyParser可以处理多种类型的数据,但它必须知道您提交的格式。它不会尝试猜测数据类型。

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