在REST API中支持批量操作的几个不同方法 - mscharhag

21-05-11 banq

批量(或批处理)操作用于在单个请求中对多个资源执行操作。这可以帮助减少网络开销。为了提高网络性能,通常最好发出更少的请求,而不是发出更少的数据的更多请求。

但是,在添加对批量操作的支持之前,如果确实需要此功能,则应三思而后行。通常,网络性能并不是限制请求吞吐量的因素。您还应该考虑使用HTTP流水线之类的技术来提高性能。

在执行批量操作时,我们应该区分两种不同的情况:

  • 批量操作将一个请求中的许多任意操作组合在一起。例如:删除ID为42的产品,创建一个名为John的用户,并检索昨天创建的所有产品评论。
  • 对相同类型的不同资源执行一项操作的批量操作。例如:删除ID为23、45、67和89的产品。

请注意,所示的解决方案可能看起来不太像REST。通常,批量操作与REST约束并不十分兼容,因为我们只需要一个请求就可以在不同的资源上进行操作。因此,根本没有真正的REST解决方案。

本文研究了构建批量API的几个不同方法。所有方法都有不同的优点和缺点。没有唯一正确的方法,因为它始终取决于您的要求。

如果需要在单个请求中提交多个操作的通用方法,则可以使用自定义JSON格式。或者,您可以使用多部分内容类型将多个请求合并为一个请求。

您还可以拿出单独的资源来表达所需的操作。如果您只有一个或几个需要支持批量操作的操作,这通常是最简单,最实用的方法。

在所有情况下,您都应该评估批量操作是否真正产生了预期的性能提升。否则,批量操作的额外复杂性通常是不值得的。

详细点击标题见原文。

猜你喜欢