使POST参数无法正常工作

时间:2016-11-08 12:52:30

标签: javascript node.js express restify

我正在尝试使用PostMan使用 restify 框架发送post参数(key:test,value:somevlaue)。为此,我使用了两种方法,两种方法都不起作用:

第一个显示此错误:

{
  "code": "InternalError",
  "message": "Cannot read property 'test' of undefined"
}

第二个(评论)仅显示错误:someerror

我做错了吗?

这是我的代码:

var restify=require('restify');
var fs=require('fs');
var qs = require('querystring');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var controllers = {};

var server=restify.createServer();

server.post("/get", function(req, res, next){
    res.send({value: req.body.test,
     error: "someerror"});

    //**********METHOD TWO*********************

/*
     if (req.method == 'POST') {
         var body = '';

         req.on('data', function (data) {
             body += data;
         });

         req.on('end', function () {
             var post = qs.parse(body);
             res.send({
                 Data: post.test,
                 Error: "Someerror"
             });
         });
     }
     */

});
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});

2 个答案:

答案 0 :(得分:0)

您的bodyparser设置可能不正确。 根据body解析器部分下的the docs,您可以这种方式设置解析器:

server.use(restify.bodyParser({
    maxBodySize: 0,
    mapParams: true,
    mapFiles: false,
    .....
 }));

默认设置是将数据映射到req.params,但您可以通过将req.body选项设置为mapParams

来更改此值并将其映射到false
  

<强> BodyParser

     

在读取和解析HTTP请求正文时阻止您的链。   切换Content-Type并执行适当的逻辑。   application / json,application / x-www-form-urlencoded and   目前支持multipart / form-data。

答案 1 :(得分:0)

使用restify ^ 7.7.0,您不再需要('body-parser')。只需使用restify.plugins.bodyParser():

var server = restify.createServer()
server.listen(port, () => console.log(`${server.name} listening ${server.url}`))
server.use(restify.plugins.bodyParser()) // can parse Content-type: 'application/x-www-form-urlencoded'
server.post('/your_url', your_handler_func)