Фон
Я работаю над проектом, в котором нескольким независимым системным службам необходимо взаимодействовать с центральной службой через четко / полностью определенный REST API (т.е. через запросы HTTP GET
, PUT
и POST
). Существует несколько сложных наборов операций, которые мы хотели бы свести к одной функции и сделать доступными для всех сервисов, выступающих в качестве клиентов для сервисов REST (т. Е. GET
от нескольких разных конечных точек, объединить результаты и выполнить POST
и PUT
для другой / новой конечной точки).
Задача
Все эти системные службы написаны на разных языках программирования (например, C, C ++, Go, Node.js и Python), и мы хотели бы повторно использовать одни и те же функции в этих различных проектах. Пока что наиболее жизнеспособным подходом является написание библиотеки c и предоставление ее другим проектам.
- Тем не менее, использование
C
в качестве языка для размещения кода приведет к тому, что при использовании некоторых функций, поддерживаемых большинством других / более новых языков, будет упущено использование, и чрезмерно усложнит код.
- Если бы мы собирались сделать библиотеку на C ++, теперь возимся с генераторами привязок, что еще больше усложняет).
- Мы могли бы потенциально создать дополнительную службу REST (нам не разрешено изменять текущую), которая действует как промежуточный «агент» для «перевода запросов» для других системных служб, но мы бы предпочли использовать библиотека, а не добавление другой службы, если это возможно (так как тогда мы должны переопределить / перефакторизовать модель аутентификации / безопасности, добавив в соединение «прокси-службу»).
Вопрос
Существует ли более элегантный / поддерживаемый способ повторного использования кода между несколькими проектами и языками программирования, поскольку всем им просто нужен способ интерпретировать HTTP-вызовы одинаковым образом? Например, это то, что буферы протокола (или что-то подобное) может управлять?