如何避免表單的重複提交?

daqianmen發表於2021-09-09

冪等性

效果:系統對某介面的多次請求,都應該返回同樣的結果!(網路訪問失敗的場景除外)

目的:避免因為各種原因,重複請求導致的業務重複處理

重複請求場景案例:

1,客戶端第一次請求後,網路異常導致收到請求執行邏輯但是沒有返回給客戶端,客戶端的重新發起請求

2,客戶端迅速點選按鈕提交,導致同一邏輯被多次傳送到伺服器

簡單來劃分,業務邏輯無非都可以歸納為增刪改查!

對於查詢,內部不包含其他操作,屬於只讀性質的那種業務必然符合冪等性要求的。

對於刪除,重複做刪除請求至少不會造成資料雜亂,不過也有些場景更希望重複點選提示的是刪除成功,而不是目標不存在的提示。

對於新增和修改,這裡是今天要重點關注的部分:新增,需要避免重複插入;修改,避免進行無效的重複修改;

冪等性的實現方式

實現方法:客戶端做某一請求的時候帶上識別引數標識,服務端對此標識進行識別,重複請求則重複返回第一次的結果即可。

舉個例子:比如新增請求的表單裡,在開啟新增表單頁面的時候,就生成一個AddId標識,這個AddId跟著表單一起提交到後臺介面。

後臺介面根據這個AddId,服務端就可以進行快取標記並進行過濾,快取值可以是AddId作為快取key,返回內容作為快取Value,這樣即使新增按鈕被多次點下也可以識別出來。

這個AddId什麼時候更新呢?只有在儲存成功並且清空表單之後,才變更這個AddId標識,從而實現新資料的表單提交


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2797884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章