我有一个PUT
端点,它创建/替换一个实体,不需要返回一个Location
头或任何实体。
总是返回204
(No Content)是否有意义,或者如果它是一个新实体,它应该是201
吗?如果它取代了实体,它是204
吗?
状态代码用于指示服务器尝试理解和满足请求的结果。这里有两种情况:
201
是有意义的。还可以返回Location
头以标识新创建的资源。如果服务器未返回Location
头,则客户端将假定新创建的资源由有效请求URI标识。204
或200
是合适的状态代码。使用后者,您可以返回资源的新状态的表示。来自RFC 7231的一些相关引用:
PUT
方法请求使用请求消息有效负载中包含的表示定义的状态创建或替换目标资源的状态。 [...]如果目标资源没有当前表示并且
PUT
成功创建了一个,那么源服务器必须通过发送201
(Created)响应来通知用户代理。如果目标资源确实具有当前表示并且该表示根据所包含的表示的状态被成功修改,则源服务器必须发送200
(OK)或204
(No Content)响应以指示成功完成请求。 [...]
200
(OK)状态代码表示请求已成功。在200
响应中发送的有效负载取决于请求方法。对于本规范定义的方法,有效载荷的预期含义可归纳为:[...]
PUT
,DELETE
:表明行动的地位;[...]
201
(已创建)状态代码表示已完成请求并已导致创建一个或多个新资源。由请求创建的主要资源由响应中的Location
头字段标识,或者如果没有接收到Location
字段,则由有效请求URI标识。 [...]
204
(无内容)状态代码表示服务器已成功完成请求,并且在响应有效负载正文中没有要发送的其他内容。响应头字段中的元数据在应用请求的操作后引用目标资源及其选定的表示。 [...]