REST API设计:客户端对REST API“ vs”中间层进行N次调用以合并数据,并减少API调用和更大的负载? (HTTP 1.1)

时间:2019-01-16 07:35:43

标签: rest asp.net-web-api

有什么更好的

1)让客户端对Rest API进行N次调用,并使每次调用尽可能轻便?

OR

2)拥有更大的有效负载,该有效负载已提供给客户端,而有效负载是由中间层准备的?

我知道没有一种方法能适合所有解决方案,通常是由商务包担当。但是,让我们暂时忘记这些内容,让我们想象一下,一个新闻网站足以进行这场辩论。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果我们忘记了所有其他考虑点,而只是按照您的建议专注于这个特定角度,那么我想说的是,如果您的前端要进行“ N”调用,无论如何都要返回相同的数据(而是而不是分页,并且仅在用户需要时才请求下一页),那么在大多数情况下,最好只打一个电话,但并非所有情况(即有效载荷非常大的情况)。

多大才多大?除其他因素外,这取决于您的消费者是在同一网络还是外部网络中。

因素支持大负载:

  1. 减少网络流量和延迟(即与“ N”个呼叫有关的来回通信)。
  2. 消费者不必担心合并和处理数据。
  3. 通常更容易处理错误,因为消费者将只处理一个响应,而不是可能会相互影响的多个调用。

反对大型有效载荷的因素:

  1. 如果大负载的响应时间被认为很慢,那么您将 让您的消费者等待查看结果。带“ N” 电话,您可能会在开始时开始显示结果 仍在加载数据。这可能会影响用户体验。
  2. 如果呼叫中途失败,并且您没有内置了容错和连续性,那么您将不得不重播更大的有效负载,这迫使用户等待更长的时间。如果您的有效载荷非常大,这可能是一个重要因素。
  3. 同样,如果您的有效负载很大,则“ N”调用很有意义,因为消费者可以同时发起多个请求并更快地接收数据。

如上所述,有很多因素需要考虑,我的回答可能太过随意了,但希望它能使您对如何实现这一目标有所了解。