为批量请求提供ID

时间:2016-02-27 09:16:27

标签: api-design

我正在设计API,我希望允许客户端一次创建多个资源。客户可以发布包含多个项目的订单。

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

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

另一种方法是为订单和每个商品返回一个ID,但这似乎无法升级,因为订单可能包含很多商品,因此请求甚至可以超时。这也意味着返回需要按顺序排列,以便他们可以将返回的ID与他们所要求的匹配。

应该采取什么方法?

1 个答案:

答案 0 :(得分:0)

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

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

相关问题