使用REST API调用另一个REST API是否是正确的编程实践/软件设计?如果不是这种方案的推荐方法是什么?
答案 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)中,只需创建一个循环,检查队列上的事务是否已被处理。如果是,请获取流程详细信息并将其返回给客户端,如果不是,则继续循环直到流程完成