(apache,nodejs)从PHP请求节点应用程序

时间:2017-06-16 12:36:08

标签: php node.js apache npm server

我从其他帖子中获取了一些代码来实现Apache应用程序以请求Node应用程序。 以下节点应用“工作”但我无法访问未定义的帖子参数。

//NODE
express = require('express');
bodyParser = require('body-parser');
app = express();
port = 3000;
app.use(bodyParser.json());

app.post('/get_php_data', function (req, res) {
    // php array will be here in this variable
    var data = req.param.data; // I've tried req.body.data;

    var response = String(data)+String((7*data+3*data+1*data) % 3);
    console.log(req); // This seems log req parameter in a loop
    res.send(data);
});

app.listen(port);

PHP-part(只有一个参数的POST请求):

echo httpPost('localhost:3000/get_php_data', array('data' => 1));

function httpPost($url,$params)
{
    $postData = http_build_query($params);
    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, count($postData));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

    $output=curl_exec($ch);

    curl_close($ch);
    return $output;
}

此设置返回undefined。如何使用Node访问POST参数?

2 个答案:

答案 0 :(得分:0)

嗯,答案很简单。在Node脚本中,按如下方式更改第5行:

//app.use(bodyParser.json());
app.use(bodyParser());

答案 1 :(得分:0)

如果它们在同一台机器上,您不必运行服务器,您可以使用php``解释命令行。无需在同一台机器上运行http即可到达它。