国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何防止接口重復提交?

開發 前端
對于下單流量不算高的系統,可以采用這種請求唯一ID+數據表增加唯一索引約束的方式,來防止接口重復提交!

一、摘要

對于投入運營的軟件系統,最近小編在巡檢項目數據庫的時候,發現某些表存在不少的重復數據,對于這樣的臟數據,初步分析大致的來源有以下可能:

1.由于用戶誤操作,多次點擊表單提交按鈕

2.由于網速等原因造成頁面卡頓,用戶重復刷新提交頁面

3.黑客或惡意用戶使用 postman 等網絡工具,重復惡意提交表單

這些情況都可能會導致表單重復提交,造成數據重復,比如訂單表,重復提交訂單數據所造成的問題,可能不僅僅是數據上的混亂,也會造成業務混亂。

那么問題來了,我們該如何防止用戶重復提交數據呢?

方案實踐如下!

二、方案實踐

下面我們以防止重復提交訂單為例,向大家介紹最簡單的、成本最低的解決辦法。

我們先來看一張圖,這張圖就是本次方案的核心流程圖。

圖片

實現的邏輯,流程如下:

1.當用戶進入訂單提交界面的時候,調用后端獲取請求唯一ID,并將唯一ID值埋點在頁面里面

2.當用戶點擊提交按鈕時,后端檢查這個唯一ID是否用過,如果沒有用過,繼續后續邏輯;如果用過,就提示重復提交

3.最關鍵的一步操作,就是把這個唯一ID 存入業務表中,同時設置這個字段為唯一索引類型,從數據庫層面做防止重復提交

防止重復提交的大體思路如上,實踐代碼如下!

2.1、給數據庫表增加唯一鍵約束

以訂單表為例,新增一個request_id字段,并設置為唯一約束,結構如下:

CREATE TABLE tb_order (
id bigint(20) unsigned NOT NULL,
order_no varchar(100) NOT NULL,
....
request_id varchar(36) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY uniq_request_id (request_id) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2.2、編寫獲取請求唯一ID的接口

@RestController
@RequestMapping("api")
public class CommonController {

/**
* 獲取getRequestId
* @return
*/
@RequestMapping("getRequestId")
public ResResult getRequestId(){
String uuid = UUID.randomUUID().toString();
return ResResult.getSuccess(uuid);
}
}

2.3、業務提交的時候,檢查唯一ID

@RestController
@RequestMapping("order")
public class OrderController {

@Autowired
private OrderService orderService;

/**
* 下單
* @param request
* @return
*/
@PostMapping(value = "order/confirm")
public ResResult confirm(@RequestBody OrderConfirmRequest request){
//調用訂單下單相關邏輯
if(StringUtils.isEmpty(request.getRequestId())){
return ResResult.getSysError("請求ID不能為空!");
}
if(request.getRequestId().length() != 36){
return ResResult.getSysError("請求ID格式錯誤!");
}
//檢查當前請求唯一ID,是否已經存在,如果存在,再提交就是重復下單
Order source = orderService.queryByRequestId(request.getRequestId());
if(Objects.nonNull(source)){
return ResResult.getSysError("當前訂單已經提交成功,請勿重復提交");
}
orderService.confirm(request);
return ResResult.getSuccess();
}
}

如果是并發請求也不用擔心,因為數據庫表已經設置了唯一索引,尤其只有一條有效數據會插入成功,可以防止重復的數據產生。

三、小結

對于下單流量不算高的系統,可以采用這種請求唯一ID+數據表增加唯一索引約束的方式,來防止接口重復提交!

雖然簡單粗暴,但是十分有效!

可能有的人會問,看上面的代碼生成請求唯一 ID 很簡單,為啥不直接前端生成一個請求唯一ID,然后提交呢?

之所以把獲取請求唯一ID的生成規則放在后端,好處就是生成規則可以自己定義,也并不一定要用uuid來生成,也可以用雪花算法,或者自己設計一套計算規則,保證當前業務提交時請求ID是唯一的,比如事先生成唯一的訂單號,作為請求唯一ID,然后再提交,規則放在后端來生成,會更加靈活!

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2022-11-17 07:43:13

2022-11-15 07:39:48

2024-06-06 08:46:37

2023-06-05 08:22:20

2013-11-13 11:01:14

表單表單重復提交表單策略

2013-11-13 14:39:53

表單提交開發

2024-06-21 09:19:45

代碼接口重復請求開發

2025-11-07 08:05:18

2020-07-17 07:59:55

數據

2025-10-16 08:25:31

2024-08-05 09:29:00

前端接口請求

2010-11-23 16:56:04

mysql表單

2022-05-25 09:55:40

數據重復提交Java

2025-12-23 08:23:31

2024-05-28 09:26:46

2024-02-19 00:00:00

接口圖形驗證碼

2009-06-05 10:37:52

struts2 國際化表單

2009-08-24 10:47:45

C#接口重實現

2024-12-16 00:54:05

2024-09-02 11:05:49

點贊
收藏

51CTO技術棧公眾號

欧美综合在线视频观看| 性欧美疯狂xxxxbbbb| 91专区在线观看| 欧美午夜无遮挡| 欧美办公室脚交xxxx| 全球成人中文在线| 人人超碰91尤物精品国产| 五月婷婷开心综合| 欧美一级xxx| 欧美色爱综合| 久久最新免费视频| 欧美日韩国产高清一区二区三区| 超碰成人97| 日韩欧美视频第二区| 精品国产精品自拍| 欧美成a人免费观看久久| 欧美性猛交内射兽交老熟妇| 欧美肥妇毛茸茸| 国产精品99久久| 中文字幕在线免费专区| 国内精品一区二区三区四区| 国产精品18久久久| 国产另类xxxxhd高清| www.激情网| 精品精品欲导航| 国产精品mm| 九色网友自拍视频手机在线| 日本免费一区二区三区视频观看| 国产亚洲1区2区3区| 免费一二一二在线视频| 亚洲欧美日韩精品在线| 91精品久久久久久蜜臀| 国产综合网站| 国产三级在线播放| 亚洲欧美日韩国产成人综合一二三区| 91精品在线观看入口| 99在线观看免费视频精品观看| 邻居大乳一区二区三区| 国产99在线免费| 亚瑟在线精品视频| 日韩电影二区| 91夜夜未满十八勿入爽爽影院| 国产精品夜夜嗨| 久久日韩视频| 一本色道久久综合亚洲二区三区| 91精品国产福利| 国产精品一二三四| 综合欧美亚洲| 日本24小时在线高清视频| 久久青草欧美一区二区三区| 亚洲人成在线网站| 成人中文字幕av| 91传媒视频免费| 精品少妇一区二区三区视频免付费| 国产成人综合精品三级| 色综合久久中文| 男人的天堂在线视频| 水蜜桃亚洲一二三四在线| 免费91麻豆精品国产自产在线观看| 黄色一区二区在线观看| 日韩中文字幕一区二区三区| 日韩精品一级| 欧美69xxx| 日本一极黄色片| 国产精品第二页| 青椒成人免费视频| а√天堂8资源在线官网| 日韩网站免费观看高清| 国模吧精品视频| 91精品国产综合久久久久久蜜臀| 国产高清无密码一区二区三区| 国产精品一区二区精品视频观看| 青青草在线免费观看| av免费观看网| 免费h精品视频在线播放| 美女撒尿一区二区三区| 欧美夫妻性生活| 中日韩av电影| 国产成人综合亚洲网站| 99久久夜色精品国产亚洲1000部| 新版中文在线官网| 性视频在线播放| 日韩免费视频播放| 久久久久久久久久久久久9999| 欧美做受高潮电影o| 海角国产乱辈乱精品视频| 亚洲婷婷国产精品电影人久久| 亚洲精品不卡在线观看 | 91中文在线观看| 国产电影精品久久禁18| 免费在线中文字幕| 麻豆一区二区三区在线观看| 亚洲成av人片一区二区| 欧洲杯足球赛直播| wwwxxx在线观看| 日本视频在线观看一区二区三区| 手机看片一级片| 国产精品av免费| 粉嫩av免费一区二区三区| 午夜精品一区二区三区在线| 欧美成人免费全部观看天天性色| 国产一区二区日韩| 亚洲国产精品福利| 欧美精品一区二区蜜臀亚洲| 91.com视频| 欧美va天堂va视频va在线| 欧美日韩一本到| 精品国精品国产尤物美女| 91麻豆精品国产自产在线观看一区| 日韩情涩欧美日韩视频| 日韩欧美在线综合网| 日韩一区二区三区在线视频| 亚洲国产精品久久久久| 亚洲成人av资源网| 久久久91精品国产| 日本欧美一级片| 麻豆成人在线播放| 亚洲综合av影视| 国产精品久久久久av福利动漫| 岛国视频一区免费观看| 国产精品永久在线| 久久久久久99| 在线观看污污视频| 国内老司机av在线| 亚洲午夜久久| 成熟亚洲日本毛茸茸凸凹| 婷婷丁香激情综合| 久久久www成人免费精品| 久久久99国产精品免费| www.夜夜爽| 欧美成人黑人| 一区二区动漫| 中文乱码免费一区二区| 91精品视频网| 亚洲一区二区三区毛片| 五月天电影免费在线观看一区| 精品精品导航| 一级欧洲+日本+国产| 亚洲精品日韩综合观看成人91| 国产亚洲综合久久| 国产伦理久久久| 欧美偷拍视频| 亚洲涩涩av| 国产喂奶挤奶一区二区三区 | 日韩中文欧美| 欧美激情一区二区| 最近2019中文免费高清视频观看www99 | 秋霞成人午夜伦在线观看| 色天天综合色天天久久| 国产精品久久久精品| 美乳在线观看| 日韩欧美中文字幕一区二区三区| 欧美a级一区二区| 精品久久久久久久久久久久久久久久久| 亚洲va欧美va国产综合剧情| 欧洲亚洲妇女av| 国产成人精品在线| 成人图片小说| 国产精品地址| 国产精品自拍一区| 日韩精品亚洲元码| 国产精品成久久久久三级| 三级久久三级久久| 亚洲a级精品| 国产私拍福利精品视频二区| www.视频在线.com| 欧美成人影院在线播放| 精品国产一二三四区| 一区国产精品| 欧美日韩在线观看一区| 爱情岛论坛亚洲入口| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 亚洲丝袜在线视频| 日韩无一区二区| 欧美在线视频全部完| 香蕉影视欧美成人| 亚洲综合偷拍欧美一区色| 国产欧美一区二区在线| 91在线云播放| av高清不卡在线| 成人黄色av网站在线| 国产精品一区二区你懂的| 老司机精品导航| 亚洲一区一卡| 亚洲精选久久| 国产欧美在线| 噜噜噜在线观看免费视频日韩 | 呦呦在线视频| 免费高清在线观看| 成人性生交大片免费看午夜| 在线观看av网| 在线看的网站你懂| 亚洲最大黄色| 亚洲精品套图| www.视频在线.com| 岛国在线视频| 欧美一区二区三区| 中文字幕在线视频区| 日韩在线免费电影| 天堂av最新在线|