我實施了重命名公司如下的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