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

Rest 当记录处于不适当的状态时,HTTP代码返回什么?,rest,http,status,Rest,Http,Status,我需要将通过RESTAPI访问的特定资源设置为定义的状态之一—空闲、运行或停止。如何通知RESTAPI客户端记录已处于请求状态?例如,客户希望启动记录,而该记录已在运行?他需要知道记录正在运行,并且操作不可处理 这肯定是客户机错误,所以答案应该是来自4xx系列的状态代码。我想用400、409或412但不确定 如何通知REST API客户端记录已处于请求状态 我能找到的最接近的是 409 Conflict 由于与资源的当前状态冲突,请求无法完成。只有在预期用户可能能够解决冲突并重新提交请求的情况

我需要将通过RESTAPI访问的特定资源设置为定义的状态之一—空闲、运行或停止。如何通知RESTAPI客户端记录已处于请求状态?例如,客户希望启动记录,而该记录已在运行?他需要知道记录正在运行,并且操作不可处理

这肯定是客户机错误,所以答案应该是来自
4xx
系列的状态代码。我想用
400
409
412
但不确定

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

我能找到的最接近的是

409 Conflict
由于与资源的当前状态冲突,请求无法完成。只有在预期用户可能能够解决冲突并重新提交请求的情况下,才允许使用此代码。响应主体应包含足够的信息,以便用户识别冲突的来源。理想情况下,响应实体将包括足够的信息,供用户或用户代理修复问题;然而,这可能是不可能的,也不是必须的

在响应PUT请求时最有可能发生冲突。例如,如果正在使用版本控制,并且正在放置的实体包含对资源的更改,这些更改与先前(第三方)请求所做的更改相冲突,则服务器可能会使用409响应来指示它无法完成请求。在这种情况下,响应实体可能会以响应内容类型定义的格式包含两个版本之间差异的列表

重点矿山

这里有一种“三思而后行”的技巧可能很有用

您可以在PUT(我假设是PUT)请求中插入
If Match


要么你得到
200
要么
412(前提条件失败)

Ooo这很性感:)
PUT /states HTTP/1.1
Host: www.example.com
Content-Type: text/plain
If-Match: "running"

Running