如何在Python和Node.js之间传递JSON数据
以下文章介绍了如何在Python和Node.js之间传递JSON数据。假设我们正在使用Node.js应用程序,并且我们想要使用一个仅在Python中可用的特定库,或者相反。我们应该能够在一种语言中共享结果到另一种语言,并为此使用JSON,因为它是语言无关的。
方法:
- 为每种语言设置一个服务器,并使用JSON共享数据,使用GET和POST请求。
- 从Node.js调用一个Python后台进程,或者反过来,在两种情况下监听进程的stdout流。
项目结构:
下面所示的所有文件都与同一目录中的文件相同。
1. 使用服务器: 这与使用第三方API服务的方法类似,我们向远程服务器发出GET请求以获取数据,并向服务器发送POST请求以发送数据。唯一的区别是我们会在本地运行服务器(在所需的URL上也可以在远程服务器上工作)。
Node.js to Python: 当我们在node.js中工作并且想要在python中处理一些数据时。
在下面的示例中,我们将为Python设置一个服务器,并从node.js发出请求。我们使用 Flask 微框架,因为这是在Python中设置服务器和在Node.js中发出请求的最简单方法,我们需要一个 request 包。
模块安装:
- 使用以下命令安装Python的flask模块:
- 使用以下命令安装Node.js的request模块:
示例: 计算包含整数的数组的总和,并将结果返回给Node.js
pyserver.py
使用以下命令运行 服务器 。
这将在 http://127.0.0.1:5000/ 启动服务器。现在我们从Node.js向 http://127.0.0.1:5000/arraysum 发起POST请求。
talk.js
通过以下命令运行此脚本。
输出:
Python转Node.js: 当我们在Python中工作,并且想在Node.js中处理一些数据时。
在这里,我们将反转上述过程,并在Node.js中使用 express 来启动服务器,并在Python中使用 request 包。
模块安装:
- 使用以下命令为Python安装request模块:
- 使用以下命令为NodeJS安装express和body-parser模块:
nodeserver.js
使用以下命令运行 服务器 。
这将在 http://127.0.0.1:3000/ 处启动服务器。现在我们将在Python中向 127.0.0.1:3000/arraysum 发送POST请求。
talk.py
通过以下命令运行此脚本。
输出:
2. 使用后台进程: 在下面的示例中,我们将通过从Node.js生成一个Python进程并反之亦然来进行通信,并监听stdout流。
Node.js 到 Python: 从node.js调用python进程。它涉及以下步骤:
- 调用python进程,并将JSON数据作为命令行参数传递。
- 在Python中读取数据,对其进行处理,并以JSON格式输出到stdout流中。
- 再次从node.js读取输出流并处理JSON数据。
arraysum.py
现在Python将处理数组的总和并将其打印到标准输出(stdout),如下面的代码所示。
caller.js
通过以下命令运行这个脚本:
输出:
Python 到 Node.js: 从 Python 调用 Node.js 进程。步骤基本与上述提到的 Python 和 Node.js 互换其角色保持一致。
arraysum.js
现在从Python运行这个Node.js进程。
文件名:caller.py
请使用以下命令运行此脚本。
输出: