我实施了重命名公司如下的API:如何以幂等方式重命名资源?
PUT /companies/A
{
"name": "B"
}
将返回HTTP 301
与Location
头在该公司的新的URI指出:/companies/B
。
我该如何使这个操作幂等与If-Match
标题?
没有
If-Match
头:如果用户试图重命名一个不存在的公司,我期望服务器返回HTTP 404
,但我不能这样做,因为当时合法的重命名操作不会幂(他们会在第一次返回301
,在后续调用时返回404
)。这是有问题的,因为我希望客户能够区分失败的重命名(公司不存在)和已经发生的重命名。With
If-Match
标题:如果公司的ETag
取决于公司名称,则后续重命名操作将失败,因为前提条件不再成立。再一次,这使得看起来操作失败了,事实上它已经发生了。
对不起。我限制自己的核心HTTP方法。没有WEBDAV对我来说:) – Gili