我需要将通过REST Api访问的特定资源设置为已定义状态之一 - 空闲,运行或停止。如何通知REST API客户端该记录是否已处于请求状态?例如。客户想要启动记录并且该记录已经在运行?他需要知道记录正在运行且操作无法处理。
确切地说客户端错误,因此来自4xx
系列的状态代码应该是答案。我有一个想法是使用400
,409
或412
,但不确定。
答案 0 :(得分:3)
这里有“先行前瞻”技术。
您可以在PUT(我假设其PUT)请求中插入If-Match
标头
PUT /states HTTP/1.1
Host: www.example.com
Content-Type: text/plain
If-Match: "running"
Running
您可以获得200
或412 (Precondition Failed)
。
答案 1 :(得分:2)
如何通知REST API客户端该记录已处于请求状态
我能找到的最近的是
409 Conflict
由于与资源的当前状态发生冲突,无法完成请求。此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许。响应主体应该包含足够的信息供用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。
最有可能发生冲突以响应PUT请求。例如,如果正在使用版本控制并且包含PUT的实体更改为与早期(第三方)请求所产生的资源冲突的资源,则服务器可能会使用409响应来指示它无法完成请求。在这种情况下,响应实体可能包含由响应Content-Type定义的格式的两个版本之间的差异列表。
强调我的
<强> RFC 2616 强>