假設我有一個名爲「Session」的資源。客戶將調用PUT來創建並開始一個新的會話。當客戶完成會話時,應該不再可訪問,但應該因歷史/問責原因而堅持。HTTP方法:DELETE vs POST
要結束會話,是否更適合發出DELETE請求,這似乎在語義上更接近所需的效果,或POST,因爲資源實際上並未永久刪除?
假設我有一個名爲「Session」的資源。客戶將調用PUT來創建並開始一個新的會話。當客戶完成會話時,應該不再可訪問,但應該因歷史/問責原因而堅持。HTTP方法:DELETE vs POST
要結束會話,是否更適合發出DELETE請求,這似乎在語義上更接近所需的效果,或POST,因爲資源實際上並未永久刪除?
這裏的問題是:請求idempotent?如果您執行兩次相同的請求,它是否有副作用?就像您訂購一篇文章時一樣,執行訂單請求兩次會讓您閱讀文章兩次。
在這種情況下,POST
是您想要的方法。如果不是,那麼您需要PUT
或DELETE
。
由於您似乎沒有刪除會話,因此只更改其狀態PUT
會是一個更好的方法,因爲這意味着資源被更改並且不會被刪除,您的情況就是這種情況。
編輯:
如果資源似乎是從客戶端刪除,DELETE
似乎更爲合適。客戶如何在後面執行事情並不重要。
POST請求會更好,因爲您實際上並沒有刪除session
。 POST請求通常用於更改對象的狀態。這是你的情況,我想。
如果從客戶的角度看資源「出現」被刪除怎麼辦?在我的例子中,請求會是冪等的,因爲再次調用它不會有任何副作用,並且在會話上發出GET請求會失敗。 –