Python 和 Node.js 之间如何进行 JSON 数据的通信?
原文:https://www . geesforgeks . org/how-communication-JSON-数据在 python 和节点之间-js/
下面的文章介绍了如何在 python 和 Node.js 之间传递 JSON 数据,假设我们使用的是 Node.js 应用程序,我们希望利用一个只有 Python 才有的特定库,反之亦然。我们应该能够将结果从一种语言共享到另一种语言,为了实现这一点,我们将使用 JSON,因为它与语言无关。
进场:
- 为每种语言设置一个服务器,并使用旧的 GET 和 POST 请求使用 JSON 共享数据。
- 从 Node.js 调用一个 python 后台进程,反之亦然,并在这两种情况下监听进程的 stdout 流。
项目结构:下面使用的所有文件都存在于如下所示的同一个目录中。
文件结构
1。使用服务器:这类似于使用第三方应用编程接口服务的方法,其中我们向远程服务器发出获取数据的 GET 请求,并发出发送数据的 POST 请求。唯一的区别是我们将在本地运行服务器(这也适用于具有所需网址的远程服务器)。
Node.js 转 Python: 当我们在 Node.js 工作,想用 Python 处理一些数据的时候。
在下面的例子中,我们将为 Python 设置一个服务器,并从 node.js 发出请求。我们正在使用微框架,因为这是在 Python 中设置服务器并在 Node.js 中发出请求的最简单方法。我们将需要一个 请求 包。
*模块安装:*
-
**使用以下命令为 Python 安装烧瓶模块:
js pip install flask
* 使用以下命令为节点安装请求模块:js npm install request-promise
**
*示例:*计算包含整数的数组的和,并将结果返回给 Node.js
pyserver.py
from flask import Flask
import json
# Setup flask server
app = Flask(__name__)
# Setup url route which will calculate
# total sum of array.
@app.route('/arraysum', methods = ['POST'])
def sum_of_array():
data = request.get_json()
print(data)
# Data variable contains the
# data from the node server
ls = data['array']
result = sum(ls) # calculate the sum
# Return data in json format
return json.dumps({"result":result})
if __name__ == "__main__":
app.run(port=5000)
使用以下命令运行服务器。
python pyserver.py
这将在http://127 . 0 . 0 . 1:5000/启动服务器。现在我们从 Node.js 向T5【http://127 . 0 . 0 . 1:5000/arraysum发出 POST 请求
talk.js
var request = require('request-promise');
async function arraysum() {
// This variable contains the data
// you want to send
var data = {
array: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
var options = {
method: 'POST',
// http:flaskserverurl:port/route
uri: 'http://127.0.0.1:5000/arraysum',
body: data,
// Automatically stringifies
// the body to JSON
json: true
};
var sendrequest = await request(options)
// The parsedBody contains the data
// sent back from the Flask server
.then(function (parsedBody) {
console.log(parsedBody);
// You can do something with
// returned data
let result;
result = parsedBody['result'];
console.log("Sum of Array from Python: ", result);
})
.catch(function (err) {
console.log(err);
});
}
arraysum();
通过以下命令运行该脚本。
node talk.js
*输出:*
{ result: 55 }
Sum of Array from Python: 55
*Python 到 Node.js:* 当我们在 Python 中工作,想在 Node.js 中处理一些数据的时候。
这里我们将颠倒上述过程,使用 express 在 node.js 中启动服务器,使用 python 中的 请求 包。
*模块安装:*
-
**使用以下命令为 Python 安装请求模块:
js pip install requests
* 使用以下命令为 NodeJS 安装快速和主体解析器模块:js npm install express npm install body-parser
**
nodeserver.js
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.post("/arraysum", (req, res) => {
// Retrieve array form post body
var array = req.body.array;
console.log(array);
// Calculate sum
var sum = 0;
for (var i = 0; i < array.length; i++) {
if (isNaN(array[i])) {
continue;
}
sum += array[i];
}
console.log(sum);
// Return json response
res.json({ result: sum });
});
// Server listening to PORT 3000
app.listen(3000);
使用以下命令运行服务器。
node nodeserver.js
这将在http://127 . 0 . 0 . 1:3000/启动服务器。现在我们从 Python 向127 . 0 . 0 . 1:3000/arraysum发出 POST 请求
talk.py
import requests
# Sample array
array = [1,2,3,4,5,6,7,8,9,10]
# Data that we will send in post request.
data = {'array':array}
# The POST request to our node server
res = requests.post('http://127.0.0.1:3000/arraysum', json=data)
# Convert response data to json
returned_data = res.json()
print(returned_data)
result = returned_data['result']
print("Sum of Array from Node.js:", result)
版权属于:月萌API www.moonapi.com,转载请注明出处