调用另一个REST API的REST API

时间:2017-12-21 01:41:56

标签: rest api design-patterns

使用REST API调用另一个REST API是否是正确的编程实践/软件设计?如果不是这种方案的推荐方法是什么?

2 个答案:

答案 0 :(得分:7)

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

您正在描述以下内容,我认为:

  

客户端对服务器1进行API调用,服务器1正在服务中   这个请求,向API Server-2发出另一个请求,接受   来自Server-2的响应,进行了一些重新格式化或数据提取,以及   打包以回复客户端?

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

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

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

答案 1 :(得分:0)

另一种方法是让REST API(1)将请求详细信息存储到队列表中。制作一个后端,检查该队列表每次让我们说100毫秒。该后端将是将调用其他REST API的人(2)。

在REST API(1)中,只需创建一个循环,检查队列上的事务是否已被处理。如果是,请获取流程详细信息并将其返回给客户端,如果不是,则继续循环直到流程完成