对子资源进行批量POST请求的预期逻辑是什么

时间:2017-03-14 14:40:56

标签: api-design

我喜欢向量化/批量化请求的想法,类似于StackExchange API offers并希望为我自己的API实现某些内容,即GET /users/1;2;3;4;5将返回ID为1到5的所选用户资源。

我认为这在读取数据时相当简单,但对于子资源的POST请求会产生什么样的预期行为?

POST /1;2;3;4;5/subresource

这是不是意味着:

  • 创建五个新的子资源,分配给每个id(1:1)
  • 创建单个新子资源,但分配给每个资源ID(1:n)

1 个答案:

答案 0 :(得分:0)

我对这种方法有几个担忧。首先,资源应该通过某些资源定位器(URI)唯一地寻址。然而,使用您的方法以某种方式绕过IMO的这一要求。这种方法也可能在以后导致其他问题,即大量框架do not allow URIs that exceed a certain character size

此外,资源应使用UUID而不是连续的资源ID。这首先会阻止guessing attacks,并且还可以防止在移动资源或插入资源之间出现逻辑问题。

  

POST方法请求目标资源处理      根据资源的请求包含在中的表示      拥有特定的语义

关于HTTP POST操作,specification明确指出通过POST接收的任何主体的语义由服务开发人员决定。因此,基本上允许您在POST请求中执行任何操作。由于语义完全取决于您,您必须明确记录行为。不记录应用的逻辑将为服务用户留下一个大的灰色区域。