跨多种编程语言重用HTTP REST函数

Re-using HTTP REST functions across multiple programming languages

提问人:Coder 提问时间:4/25/2019 最后编辑:CommunityCoder 更新时间:4/26/2019 访问量:179

问:

背景

我正在做一个项目,其中多个独立的系统服务需要通过一个定义良好/完全定义的 REST API(即通过 HTTP 、 和请求)与中央服务进行通信。我们希望将一些复杂的操作集简化为单个函数,并提供给充当 REST 服务客户端的所有服务(即 从一堆不同的端点,组合结果,然后对不同的/新端点执行 和)。GETPUTPOSTGETPOSTPUT


问题

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

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

问题

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

C C++ Linux - 不可知 API 设计 语言 - 互操作性

评论

0赞 Patrick87 4/26/2019
需要明确的是,您问的是如何编写可以从各种编程语言中使用的客户端,而不是如何编写 REST API 本身,对吧?用什么方式编写 REST API 并不重要。在某个时候,橡胶会遇到道路,你将不得不做一些与语言相关的事情 - 你只是不希望它出现在 http 客户端中。是吗?
0赞 jamieguinan 4/26/2019
也许也可以在 softwareengineering.stackexchange.com 上询问
0赞 gnat 4/26/2019
@jamieguinan在推荐其他网站时,指出交叉发布是不受欢迎的,这通常会有所帮助
0赞 jamieguinan 4/26/2019
@gnat适当地指出了这一点。

答: 暂无答案