在RESTful SOA中,假設我通過AJAX發出POST請求,但在請求超時之前我沒有收到響應。進一步假設重新提交請求會有害。 POST不是冪等的。例如,也許我正在發佈銀行轉賬。如果我沒有得到迴應,我不知道服務器是否處理了請求。如何處理超時POST請求
假設我可以控制客戶端和服務端,最佳做法是什麼?
我最初的想法是爲包括隨機數(即,僞ID;某種唯一標識符),每個POST請求;例如也許是If-None-Match標題中的一個值。通過這種方法,客戶端可以通過編程方式重新發出具有相同僞ID的超時請求,並且服務器可以拒絕它,如果它包含重複值。
如果您在某個超時後未收到響應,只是假設失敗並要求客戶端重試或中止。無論如何,服務器上的代碼顯然應該檢查相同的ID。 – alfred
要明確這一點,這個僞ID不是要*資源ID - 我不是直接尋址資源。我按照預期使用POST;即發佈到資源處理程序(例如/傳輸,而不是/傳輸/)。否則,我不會在第一時間做一個POST。 –
johnr
這與「[避免使用REST重複發佈](http://stackoverflow.com/q/15159274/1347968)」類似。 – siegi