可能会引起重复请求
用户重复操作,用户在操作时候可能会无意触发多次下单交易,甚至没有响应而有意触发多次交易应用
使用了失效或超时重试机制(Nginx重试、RPC重试或业务层重试等)
页面重复刷新
使用浏览器后退按钮重复之前的操作...,导致重复提交表单
使用浏览器历史记录重复提交表单
浏览器重复的HTTP请求
定时任务重复执行
用户双击提交按钮
如何保证接口幂等性?...按钮只可操作一次
一般是提交后把按钮置灰或loding状态,消除用户因为重复点击而产生的重复记录,比如添加操作,由于点击两次而产生两条记录
token机制
功能上允许重复提交,但要保证重复提交不产生副作用...使用Post/Redirect/Get模式
在提交后执行页面重定向,这就是所谓的Post-Redirect—Get(PRG)模式,简单来说就是当用户提交连表单后,跳转到一个重定向的信息页面,这样就避免用户按...F5刷新导致的重复提交,而且也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退导致同样重复提交的问题。