REST API:在API上附加“批量”以在同一资源上创建批量创建?

时间:2018-08-31 08:52:51

标签: rest

我有一个资源class。我需要两个API:

  1. 批量创建类
  2. 创建一个类。

在REST标准中,我应该创建2个API:

  1. /classes/bulk/ ---用于批量创建
  2. /classes/-创建一个类。

这种方法对我来说似乎不足够,是吗? 为此使用查询参数是否更RESTful:/classes?type=bulk

对于批量调用和非批量调用,200的处理逻辑和响应模式也不同

1 个答案:

答案 0 :(得分:0)

  

这种方法对我来说似乎不是RESTful的?

URI拼写与REST体系结构无关。是否将/bulk附加到URI不会使您的应用程序更RESTful。


或者在URI中使用/bulk,也可以使用相同的URI处理一个或多个资源的创建。考虑您的资源是消息。然后,您可能会得到以下内容:

POST /api/messages HTTP/1.1
Host: example.org
Content-Type: application/json

{ 
  "to": "John"
  "content": "Hi"
}
POST /api/messages HTTP/1.1
Host: example.org
Content-Type: application/json

[
  { 
    "to": "John"
    "content": "Hi"
  },
  { 
    "to": "James"
    "content": "Hey"
  },
  { 
    "to": "Sarah"
    "content": null
  }
]

记住操作是否为原子操作也很重要。如果一封邮件中包含无效数据,则您可以拒绝也可以不拒绝整个请求。

如果操作是原子,则可以使用400422报告无效数据。如果操作不是原子操作,则可以使用207报告每个资源的操作结果。