记录处于不适当状态时返回什么HTTP代码?

时间:2016-03-31 08:20:37

标签: rest http status

我需要将通过REST Api访问的特定资源设置为已定义状态之一 - 空闲,运行或停止。如何通知REST API客户端该记录是否已处于请求状态?例如。客户想要启动记录并且该记录已经在运行?他需要知道记录正在运行且操作无法处理。

确切地说客户端错误,因此来自4xx系列的状态代码应该是答案。我有一个想法是使用400409412,但不确定。

2 个答案:

答案 0 :(得分:3)

这里有“先行前瞻”技术。

您可以在PUT(我假设其PUT)请求中插入If-Match标头

PUT /states HTTP/1.1
Host: www.example.com
Content-Type: text/plain
If-Match: "running"

Running

您可以获得200412 (Precondition Failed)

答案 1 :(得分:2)

  

如何通知REST API客户端该记录已处于请求状态

我能找到的最近的是

409 Conflict
  

由于与资源的当前状态发生冲突,无法完成请求。此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许。响应主体应该包含足够的信息供用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。

     

最有可能发生冲突以响应PUT请求。例如,如果正在使用版本控制并且包含PUT的实体更改为与早期(第三方)请求所产生的资源冲突的资源,则服务器可能会使用409响应来指示它无法完成请求。在这种情况下,响应实体可能包含由响应Content-Type定义的格式的两个版本之间的差异列表。

强调我的

<强> RFC 2616