Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取POST参数不起作用_Javascript_Node.js_Express_Restify - Fatal编程技术网

Javascript 获取POST参数不起作用

Javascript 获取POST参数不起作用,javascript,node.js,express,restify,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');

我正在尝试使用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);
});

看起来您的
bodyparser
设置不正确。 根据body parser部分下的说明,您以以下方式设置解析器:

server.use(restify.bodyParser({
    maxBodySize: 0,
    mapParams: true,
    mapFiles: false,
    .....
 }));
默认情况下,将数据映射到
req.params
,但您可以通过将
mapParams
选项设置为
false

BodyParser

在读取和解析HTTP请求正文时阻止链。 打开内容类型并执行相应的逻辑。 application/json、application/x-www-form-urlencoded和 当前支持多部分/表单数据


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


在你的邮政编码中,你检查过数据了吗<代码>请求,
请求正文
请求正文测试
?它们都是未定义的还是返回了一些值?那么你是如何向它发送帖子的呢?选中时,req显示为一个长URL类型的东西(我不知道它是什么),req.body是[object object]@epascarello我正在使用PostMan向它发送表单参数“'m试图发送一个post参数(key:test,value:somevlaue)使用PostMan-您是如何配置的?您发送的是什么内容类型?抱歉,页面现在没有加载。您是否删除了
var bodyParser=require('body-parser')
你有什么错误吗?我还没有删除它。我要删除它吗?我不确定,但我想是的,它看起来像是restify有自己的
bodyParser
。你是在按照教程设置这个吗?嘿,看起来我找到了。当我把它改成x-www-form-url的时候,我得到了我想要的响应。
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)