Performance 将一个API调用分解为多个API调用的优点

Performance 将一个API调用分解为多个API调用的优点,performance,api,networking,Performance,Api,Networking,我有一个API调用,需要18秒的时间才能返回一组数据。此数据是具有多个关键点的对象 对于每个键,将其分解为多个调用是否可以并且被认为是更好的做法 发送一个需要很长时间才能返回的API调用是否比为网络负载和服务器发送多个调用(5分钟)更好?首先设计一个具有简单接口的API,如果加载成为问题,则在实现中解决 API调用将单个对象分解为多个子对象,用户必须重新组装这些子对象,这将增加API用户的复杂性。从API设计的角度来看,这是不好的 如果您的测试人员发现有必要解决网络负载问题,您可以在实现该API

我有一个API调用,需要18秒的时间才能返回一组数据。此数据是具有多个关键点的对象

对于每个键,将其分解为多个调用是否可以并且被认为是更好的做法


发送一个需要很长时间才能返回的API调用是否比为网络负载和服务器发送多个调用(5分钟)更好?

首先设计一个具有简单接口的API,如果加载成为问题,则在实现中解决

API调用将单个对象分解为多个子对象,用户必须重新组装这些子对象,这将增加API用户的复杂性。从API设计的角度来看,这是不好的

如果您的测试人员发现有必要解决网络负载问题,您可以在实现该API调用时限制数据传输,而无需更改接口。例如:

  • 您可以传输每个键,在键之间短暂暂停以允许 其他网络流量将发生。这对用户来说是不可见的 您的API,尽管他们可能会注意到这个特定的API调用 现在跑慢了

  • 或者,您可以根据需要从服务器检索密钥。也就是说,在通过另一个API调用请求密钥之前,不要将其检索到对象的本地副本中。同样,从API用户的角度来看,这是不可见的,尽管每个密钥的初始加载速度较慢(随后对已检索到的密钥的访问当然会很快)


在这两个示例中,都有必要为总体设计增加复杂性,但API的用户不知道这种复杂性。这是好的API设计的关键。

首先设计具有简单接口的API,如果加载成为问题,则在实现中解决

API调用将单个对象分解为多个子对象,用户必须重新组装这些子对象,这将增加API用户的复杂性。从API设计的角度来看,这是不好的

如果您的测试人员发现有必要解决网络负载问题,您可以在实现该API调用时限制数据传输,而无需更改接口。例如:

  • 您可以传输每个键,在键之间短暂暂停以允许 其他网络流量将发生。这对用户来说是不可见的 您的API,尽管他们可能会注意到这个特定的API调用 现在跑慢了

  • 或者,您可以根据需要从服务器检索密钥。也就是说,在通过另一个API调用请求密钥之前,不要将其检索到对象的本地副本中。同样,从API用户的角度来看,这是不可见的,尽管每个密钥的初始加载速度较慢(随后对已检索到的密钥的访问当然会很快)

在这两个示例中,都有必要为总体设计增加复杂性,但API的用户不知道这种复杂性。这是良好API设计的关键