REST:我们可以部分执行POST / PUT / DELETE资源,以便API同时执行多个请求

时间:2017-02-20 21:34:39

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

我们是一家电子商务公司,我们允许我们的经销商一次性列出多个产品。

API的简化版本如下:

{
 "dealerId":1,
 "stocks": {
        [] 
 }

}

由于我们允许经销商一次性发布多个股票,如果存在一些验证错误,我们应该怎么做。我们是否应该成功发布正确的股票并发送包含成功和不成功股票的ID的回复消息?如果是,那么在这种情况下应该是响应代码,200或400或其他一些代码?

例如,假设stockId1有正确的数据,但stockId2的价格小于1,这是验证错误。

我们应该POST stock1并拒绝stock2或者我们应该拒绝两者吗?

REST对这种情况的建议是什么?

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 返回202 Accepted告诉客户它已被接受,但无法保证一切顺利并按预期进行。
  2. 返回200以及失败的项目列表。
  3. 重要的是选择一个,在API上清楚地传达这一点,以便客户了解它并保持一致。换句话说,不要将202用于某些操作,而200用于其他操作。