调用另一个REST API的REST API

Mon*_*ack 9 api rest design-patterns

使用REST API调用另一个REST API是正确的编程实践/软件设计吗?如果不是,那么处理这种情况的推荐方法是什么?

Nic*_*nks 9

如果我正确理解你的问题,那么是的,这是非常常见的.

您在描述以下内容,我推测:

客户端对Server-1进行API调用,Server-1在为此请求提供服务的过程中,向API Server-2发出另一个请求,从Server-2获取响应,进行一些重新格式化或数据提取,然后打包以响应客户端?

这种事情一直都在发生.它的缺点是,除非Server-1和Server-2之间的连接延迟非常低(例如它们在同一网络上),并且使用的带宽很小,否则客户端将不得不等待很长时间响应.显然,两个后端服务器之间可以有缓存来帮助缓解这种情况.

它几乎与Server-1对数据库进行SQL查询以响应请求相同.

对您的问题的另一种解释可能是客户端要求Server-1对Server-2将接收并异步执行的操作进行排队.这也很常见(例如谷歌抓取你的网站的方式).此方案将使Server-1立即响应客户端,而无需等待Server-2执行的操作的结果.在这种情况下,消息队列或数据库表通常用作服务器之间的中介.

  • @chepukha,这取决于 X 和 Y 是否被认为处于同一“级别”。API 调用较低级别的 API 来完成属于该 API 必要功能一部分的工作是很常见的。Y 依赖于 X 吗?或者它是辅助的?以“area()” API 为例,它需要调用“multiply()” API 来执行其功能。这并不违反建议零售价。 (3认同)