如何避免表單的重複提交?
冪等性
效果:系統對某介面的多次請求,都應該返回同樣的結果!(網路訪問失敗的場景除外)
目的:避免因為各種原因,重複請求導致的業務重複處理
重複請求場景案例:
1,客戶端第一次請求後,網路異常導致收到請求執行邏輯但是沒有返回給客戶端,客戶端的重新發起請求
2,客戶端迅速點選按鈕提交,導致同一邏輯被多次傳送到伺服器
簡單來劃分,業務邏輯無非都可以歸納為增刪改查!
對於查詢,內部不包含其他操作,屬於只讀性質的那種業務必然符合冪等性要求的。
對於刪除,重複做刪除請求至少不會造成資料雜亂,不過也有些場景更希望重複點選提示的是刪除成功,而不是目標不存在的提示。
對於新增和修改,這裡是今天要重點關注的部分:新增,需要避免重複插入;修改,避免進行無效的重複修改;
冪等性的實現方式
實現方法:客戶端做某一請求的時候帶上識別引數標識,服務端對此標識進行識別,重複請求則重複返回第一次的結果即可。
舉個例子:比如新增請求的表單裡,在開啟新增表單頁面的時候,就生成一個AddId標識,這個AddId跟著表單一起提交到後臺介面。
後臺介面根據這個AddId,服務端就可以進行快取標記並進行過濾,快取值可以是AddId作為快取key,返回內容作為快取Value,這樣即使新增按鈕被多次點下也可以識別出來。
這個AddId什麼時候更新呢?只有在儲存成功並且清空表單之後,才變更這個AddId標識,從而實現新資料的表單提交
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2797884/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java 表單避免重複提交?Java
- jFinal避免表單重複提交
- PHP 防止表單重複提交PHP
- Spring MVC表單防重複提交SpringMVC
- Struts2防止表單重複提交
- PHP防止使用者重複提交表單PHP
- 如何防止使用者重複提交訂單?(下)
- 如何防止使用者重複提交訂單?(上)
- 如何防止使用者重複提交訂單?(中)
- 前端如何防止介面重複提交前端
- 重複提交,你是如何處理的?
- PHP透過session判斷防止表單重複提交例項PHPSession
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 如何避免任務重複執行
- SpringBoot如何防止重複提交?- Adrian AdendrataSpring Boot
- axios 重複提交iOS
- 避免重複踩坑
- 分散式重複提交分散式
- WEB安全新玩法 [8] 阻止訂單重複提交Web
- 技術分享:如何避免ajax重複請求?
- 如何優雅的提交一個表單
- js 防止重複提交方案JS
- 提交表單
- Go~避免重複造輪子Go
- mysql避免插入重複資料MySql
- vue+elementUI 複雜表單的驗證、資料提交方案VueUI
- 高併發下如何避免產生重複資料?
- 如何避免重複性地做資料維護頁面?
- 小程式如何避免多次點選,重複觸發事件事件
- Linux 下如何避免重複性壓迫損傷(RSI)Linux
- React 效能優化 - 避免重複渲染React優化
- javascript避免dom事件重複觸發JavaScript事件
- 如何解決表單提交的中文亂碼問題
- form表單提交方式ORM
- 我是如何使用 vue2+element-ui 處理複雜表單,避免單檔案過大的問題VueUI
- MySql避免重複插入記錄的幾種方法MySql
- 前端防止使用者重複提交-js前端JS
- 如何使POST請求具有冪等性防止重複提交 - mscharhag