跨多种编程语言重用HTTP REST功能

时间:2019-04-25 15:21:31

标签: c++ linux language-agnostic api-design language-interoperability

背景

我正在一个项目中,多个独立的系统服务需要通过定义良好/完全定义的REST API(即通过HTTP GETPUT和{{1 }} 要求)。我们希望将一些复杂的操作集合简化为一个功能,并使所有充当REST服务客户端的服务都可以使用(即,来自许多不同端点的POST,合并结果并执行GETPOST到另一个/新端点)。


问题

所有这些系统服务都是用各种编程语言(即C,C ++,Go,Node.js和Python)编写的,我们希望在这些不同的项目中重复使用相同的功能。到目前为止,最可行的方法似乎是编写一个库,并将其提供给其他项目使用。

  • 但是,使用PUT作为代码的语言将导致大多数其他语言/较新语言支持的某些功能缺少使用,并使代码过于复杂。
  • 不过,如果我们要使用C ++编写该库,那么现在就开始使用绑定生成器,这会增加更多的复杂性。
  • 我们可以潜在地创建一个额外的REST服务(不允许修改当前的服务),该服务充当中间“代理”的作用,以“翻译”其他系统服务的请求,但是我们宁愿使用一个库而不是添加其他服务(如果可能的话)(因为我们必须通过在混合中添加“代理”服务来重新定义/重构身份验证/安全模型)。

问题

由于所有项目和编程语言都只需要一种以相同方式解释HTTP调用的方式,是否存在一种更优雅/可维护的方式来允许代码在多个项目和编程语言之间重复使用?例如,协议缓冲区(或类似的东西)可以管理吗?

0 个答案:

没有答案