0
我發送一個POST請求來創建一個對象。該對象在服務器上成功創建,但我無法收到響應(放在某處),所以我嘗試再次發送POST請求(以及再次)。結果是服務器端有很多重複的對象。如何避免發送2個重複的POST請求到webservice
什麼是處理這個問題的官方方式?我認爲這是一個非常普遍的問題,但我不知道它的確切名稱,所以不能谷歌它。謝謝。
我發送一個POST請求來創建一個對象。該對象在服務器上成功創建,但我無法收到響應(放在某處),所以我嘗試再次發送POST請求(以及再次)。結果是服務器端有很多重複的對象。如何避免發送2個重複的POST請求到webservice
什麼是處理這個問題的官方方式?我認爲這是一個非常普遍的問題,但我不知道它的確切名稱,所以不能谷歌它。謝謝。
在REST術語,這是在POST
用於創建對象的接口如何(和PUT
修改,DELETE
刪除並GET
檢索)被調用時,操作POST
歸因未'safe」和非'冪等性的,因爲其他類型請願的第二種操作對收集對象沒有影響。
我懷疑是否有一種「官方」的方式來處理這個問題,但可能有一些設計模式需要處理它。例如,這兩個替代方案可能會在某些情況下解決此問題:
POST
請求之前,通常在客戶端使用輸入表單加載頁面之前,向每個客戶端發出一次性使用令牌。第一個POST
創建一個對象並將該標記標記爲已使用。第二個POST
會看到該令牌已被使用,您可以回答「是的,是的,好的,好的!」錯誤或成功消息。
您可以爲您的請求設置超時窗口 – drtf
Hi @MrKlin,我不太明白。如果我有超時(比方說30秒),那麼沒有響應,我仍然需要重新發送POST請求,並可能在服務器上創建2個重複的對象。 –
Hi @ N.Q.P,如果由於某些原因需要服務器處理您的請求超過30秒(很長時間),您可能會改變一點業務邏輯。說立即返回一個「接收通知」,並在處理完成時提出一個完整的標誌。 – drtf