Как общаться между разными языками программирования? - PullRequest
0 голосов
/ 06 декабря 2018

Я написал API для моего кода Python, как это:

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 должен быть способ взаимодействия с этим API-интерфейсом Python, его выполнения и получения результата, чтобы разработчики javascript тоже могли использовать мой API.

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

В общем смысле, как два языка могутразговаривать друг с другом?

1 Ответ

0 голосов
/ 06 декабря 2018

Есть два очень популярных способа сделать это, и, вероятно, миллион других, которые я игнорирую в своем ответе.

Трубы:

import sys

Этогде вы используете sys.stdin и sys.stdout, чтобы прочитать входные данные для вашей программы с помощью вашей ОС, а затем вывести результат.Оба они являются файловыми объектами в Python, поэтому вы, вероятно, уже знакомы с тем, как их использовать.В js и node у вас есть дочерние процессы и exec и т. Д., Которые могут выполнять вызовы вашей программы, например, cat file.txt | python myscript.py

API:

import flask, django

СПри таком подходе вы можете использовать фреймворки, такие как flask & django, для определения конечных точек (например, example.com/api/my/endpoint), которые сопоставляются с вашим API таким образом, который имеет смысл для ваших бизнес-целей.Разработка API слишком широка, чтобы я мог вникнуть в этот ответ (но в Интернете есть гораздо лучшие люди, чем я, которые блестяще написали на эту тему.)

Редактировать:

Бонус: PubSub

Я, вероятно, также должен упомянуть PubSub, который создает систему сообщений, на которую вы можете публиковать и подписываться при условии, что вы используете язык, который имеет клиента для этой системы PubSub.Например, вот все клиенты для redis https://redis.io/clients, а вот redis pubsub https://redis.io/topics/pubsub

...