如何允许用户创建/更新批量数据并保持安静?

时间:2014-09-25 20:52:45

标签: rest asp.net-web-api api-design

我正在创建一个Web API,我有一个场景,用户希望批量加载大量数据,然后将其作为多个单独的条目加载到数据库中。该数据可以是全新的并因此创建,或者数据可能已经存在并因此被更新。 POST和PUT的定义似乎一次只能处理一个数据,而创建的状态代码反映了提供位置时的情况。

我已经有了允许创建或更新单个数据的方法。我是否应该编写其他方法来促进此批量数据的创建和更新,还是应该让用户进行单独调用(可能数十万次)来加载数据?就状态代码和其他数据而言,我应该返回什么?哪些请求动词应定义这些批量调用?

1 个答案:

答案 0 :(得分:0)

在集合中创建多个项目的RESTful方法是在整个集合中使用PUT。

这样您就可以请求替换整个集合,因此您需要传递旧项目和新项目,但新项目将由服务器创建。

假设/ items集合中只有一个名为“old item”的项目。在这里,您请求更新集合,以便它有两个新项目。

PUT /items

[{ Name: "old item"}, { Name: "new item 1"}, { Name: "new item 1"}]

您无需在成功的PUT响应中返回任何内容,因为在这种情况下成功意味着您应用了您请求的确切状态。所以它留下了状态代码204。

由于您要更新整个集合资源,因此无论是否创建新项目,都不会返回201.