Как общаться между разными языками программирования?
Я написал 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 ответ
Есть два очень популярных способа сделать это, и, вероятно, миллион других, которыми я пренебрегу в своем ответе.
Трубы:
import sys
Это где вы используете sys.stdin
а также sys.stdout
читать входные данные для вашей программы с помощью вашей ОС, а затем выводить результат. Оба они являются файловыми объектами в Python, поэтому вы, вероятно, уже знакомы с тем, как их использовать. В JS и узле у вас есть дочерние процессы и 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