我正在尝试在PHP laravel和Node js之间进行通信。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://mylocalip/publish');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_PORT, 8001);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_POST, true);
$pf = array('clientId' => '123123', 'command' => '{"cmd":"start"}');
curl_setopt($ch, CURLOPT_POSTFIELDS, $pf);
curl_exec($ch);
curl_close($ch);
dd("Done");
这是m在php中用来发送数据的方式,因为它正在发送数据,但是在节点m上没有得到任何响应,尝试以角度的方式它可以按预期的方式进行响应,但是在php方面则没有响应。
var express = require("express");
var app = express();
app.post("/publish", function(req, res) {
console.log(req, res);
console.log(req.body);
});
});
我想在控制台中获取从php发送的数据。 laravel和node当前是否都可能在本地主机上使用不同的端口运行,这就是为什么它没有响应。如果是,那么angular如何将数据发送到节点。 谢谢
答案 0 :(得分:0)
我们使用传统的Linux主机以及Apache,PHP和MySQL。 ... PHP和Node.js都可以进入相同的MySQL数据库,因此PHP和Node.js之间的整个通信都可以在数据库级别进行。如果确实不够用,您可以随时使用Memcached或Redis之类的缓存服务器。
答案 1 :(得分:0)
在PHP方面,将CURLOPT_HTTPHEADER
设置为curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
如果您使用的是json内容类型,请确保帖子数据经过json编码:
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
在NodeJS脚本中,如果您使用的是Express 4.16+,则可以使用内置的body-parser中间件:
app.use(express.json())
或app.use(express.urlencoded())
,以便将数据从PHP附加到请求正文。
完整示例:
const app = require('express');
//depending on the content type you set in your PHP
app.use(express.json());
app.use(express.urlencoded());
app.post('publish', (req, res)=>{
console.log(req.body);
})