2017-08-02 26 views
0

根據REST,put,delete等是冪等的,即對資源重複執行的操作會導致相同的響應。這是否以某種方式自動完成(緩存在瀏覽器等),還是由程序員(在方法中)完成/確保? 這是冪等性嗎?Jersey/JAX-RS放置,刪除冪等性 - 由程序員提供或將要完成

例如,在我的方法來處理刪除請求 -

@DELETE 
@Produces({MediaType.TEXT_HTML}) 
public Response deleteEmployee() { 
     String response = DAOaccess.deleteEmployee(name); 
     return Response.noContent().build(); 
} 

我能做到這一點的方法裏面什麼。那麼,我是否必須通過編寫這樣的代碼來確保冪等性(檢查id等)?

當有人問我put和post之間的區別時,他們是從HTTP的角度來問,而不是從JAX-RS問(因爲可能在JAX-RS中沒有功能差異)?

回答

1

是的,開發者有責任確保這裏的冪等性。 PUT和DELETE 應該根據標準是冪等的,但是對於這意味着什麼還有很多解釋的餘地​​。 JAX-RS確保開發人員遵循REST最佳實踐,並且將每個請求路由到適當的端點,而沒有一個過濾器會將請求短路,因此JAX-RS確實相對較少。

第二次刪除調用是否返回204或404?由於重複調用相同的方法,任一響應都會使系統處於相同的狀態;一個向客戶發出信號,表示沒有資源要刪除,另一個則表示客戶端此時肯定沒有這種資源。

唯一錯誤實現(根據REST標準)將是該系統切換資源的反覆調用刪除狀態 - 這將使客戶不確定什麼影響它的下一個電話會在系統上有。

相關問題