为批量请求提供 ID

Providing IDs for batch requesting

我正在设计一个 API,我想让客户能够同时创建多个资源。客户可以 POST 包含多个项目的订单。

一种方法是允许客户在订单级别和每个项目级别提供唯一 ID,我存储这些(以及我们内部的),但这将允许客户基于请求在它的ID上。请求示例:

{
  order_ref: 'XXX',
  items: [
  { item_ref: 'xx', quantity: 5 },
  { item_ref: 'yy', quantity: 5 },
  ]
}

另一种方法是 return 订单和每件商品的 ID,但这似乎无法升级,因为订单可能有很多商品,因此请求甚至可能超时。这也意味着 return 需要按顺序排列,以便他们可以将 returned id 与他们请求的内容相匹配。

应该采取什么方法?

如果您采用第一种方法,客户必须创建 ID。有时这没关系,但通常这对他们来说很烦人。除非 id 是永远不会改变的事物的固有部分,否则他们将不得不提出自己的随机 id 并将其存储在自己的本地数据库中。如果您的客户希望能够做到这一点,那么这是正确的方法。您应该按资源类型在它们生成的 ID 中强制执行唯一性,并且只使用您的数据库中的 ID。

否则,第二种方法更可取,因为惹恼客户对业务不利。是的,如果他们添加一千个新项目,它的扩展性会很差,但响应不会比请求大很多,因为您只是在响应中添加 'id' 属性。