【问题标题】:Post from PHP to Node Js从 PHP 发布到 Node Js
【发布时间】:2020-04-11 18:20:45
【问题描述】:

我正在尝试在 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 当前都在具有不同端口的 localhost 上运行,这就是它没有响应的原因。如果是,那么角度如何能够将数据发送到节点。 谢谢,

【问题讨论】:

    标签: php node.js laravel express curl


    【解决方案1】:

    在 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);
    })

    【讨论】:

      【解决方案2】:

      我们使用带有 Apache、PHP 和 MySQL 的传统 Linux 主机。 ... PHP 和 Node.js 都可以访问同等的 MySQL 数据库,因此 PHP 和 Node.js 之间的整个通信可以在数据库级别处理。如果实在不够用,您可以随时使用缓存服务器,例如 Memcached 或 Redis。

      【讨论】:

        猜你喜欢
        • 2019-01-29
        • 2014-01-21
        • 1970-01-01
        • 1970-01-01
        • 2018-01-07
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多