【问题标题】:expressjs POST header parameters?expressjs POST头参数?
【发布时间】:2011-08-27 08:39:39
【问题描述】:

我没有发布到正文,并且键/值对在我从 PHP 进行 curl 发布时没有显示在任何地方——它们在哪里?!

更新:

在 curl 帖子中使用 http_build_query($parameters) 有效,因为它们随后在 req.body 中可用,但 sinatra、play 和其他 web api 框架都以相同的方式处理发布的数组似乎很奇怪(w/ o http_build_query 方法),并且 express 看起来像混蛋继子。谁在右边?

app.js 有配置:

app.use(express.bodyParser());
app.use(express.methodOverride());

电话:

app.post('/call/:genericUrlParam', function(req, res){

    // where is 'key'/'value' pair?!
    console.log('headers: ' + JSON.stringify(req.headers));
    console.log('body: ' + JSON.stringify(req.body));

});

php 的样子:

        $parameters = array (
            'key' => 'value'
        );


        $curl_handle = curl_init();
        curl_setopt($curl_handle, CURLOPT_URL, "localhost/call/myparam");
        curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 50);
        curl_setopt($curl_handle, CURLOPT_USERPWD, "username:password");
        curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);


        curl_setopt($curl_handle, CURLOPT_POST, 1);
        curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $parameters);

        $buffer = curl_exec($curl_handle);
        $error = curl_error($curl_handle);
        curl_close($curl_handle);

        if (empty($buffer)) {
            return "Error: ".$error;
        } else {
            return $buffer;
        }

【问题讨论】:

    标签: javascript post node.js express


    【解决方案1】:

    只有当请求的标头Content-type 的值为application/x-www-form-urlencoded 时,bodyParser 才会从POST 请求参数中填充Request.body。如果请求没有参数或不同的内容类型,Request.body 对象将是未定义的。

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多