为什么HTTP的PUT方法强制执行201 Created / 204 No Content split?

HTTP在PUT方法的定义中包含了这一点:

如果目标资源没有当前的表示,并且PUT成功创建一个,那么源服务器必须通过发送201(创建)响应来通知用户代理。 如果目标资源确实有当前的表示形式,并且根据所包含表示的状态成功修改了表示形式,那么源服务器必须发送200(OK)或204(无内容)响应以指示成功完成请求。

标准 - 非常强烈 - 要求服务器必须在创建目标资源时返回201。 但为什么? 是否有充分的理由通知客户PUT是创造物,而不是修改?

从我作为服务器编写者的角度来看,这是一项繁重的要求:不幸的是,我写的存储服务支持插入,但实际上并没有提供任何关于upsert是更新还是插入的指示。 我可以事先进行查询,但底层服务也不会为该查询和随后的插入提供原子性,并且会为底层服务增加额外的往返行程,所有这些只是为了确定要发送的状态代码。

是否有充分的理由说明为什么我不应该忽略这个规范,并且总是返回201 Created204 No Content之一,无论它是否是语义上的创建?

链接地址: http://www.djcxy.com/p/41379.html

上一篇: Why does HTTP's PUT method mandate a 201 Created/204 No Content split?

下一篇: Disable sonarlint automatic analysis in Eclipse by default