如何在不同的编程语言之间进行通信?

时间:2018-12-06 01:49:10

标签: javascript python api communication-protocol

我已经为我的python代码编写了一个api,如下所示:

def greet_in_python(name, greets="Hello"):
    ## in real life this implementation may be more complex and has other **python** dependencies
    ....
    return greets + " " + name

但是只有python开发人员可以使用我的api。

我想做的是相同的事情,但是使用不同的语言(例如javascript),而无需从python重写整个代码。 我认为javascript必须有一种与该python API通信,执行并获取结果的方法,以便javascript开发人员也可以使用我的api。

greet_in_javascript(name, greets) {
    // talk to my python api
    // return the result easily
}

从一般意义上讲,两种语言如何互相交流?

1 个答案:

答案 0 :(得分:0)

有两种非常流行的方法可以做到这一点,我可能会忽略一百万种其他答案。

管道:

import sys

在这里,您可以使用sys.stdinsys.stdout在OS的帮助下读取程序的输入,然后输出结果。这两个都是Python中类似文件的对象,因此您可能已经熟悉如何使用它们。在js和node中,您有子进程和exec等,它们可以对您的程序进行调用,例如cat file.txt | python myscript.py

API:

import flask, django

通过这种方法,您可以使用flaskdjango之类的框架来定义端点(例如example.com/api/my/endpoint),这些端点以对您的业务目的有意义的方式映射到您的API。 API设计对我来说太宽泛,无法深入研究这个答案(但在互联网上比我出色的人对此主题写得很出色。)

编辑:

奖金:PubSub

我可能还应该提到PubSub,如果您使用的语言具有该PubSub系统的客户端,它会创建一个可以发布和订阅的消息系统。例如,这里是redis https://redis.io/clients的所有客户端,而这里是redis pubsub https://redis.io/topics/pubsub