zoukankan      html  css  js  c++  java
  • 接口幂等性校验

    一、概念

    一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同

    通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次,比如:

    1,订单接口, 不能多次创建订单

    2,支付接口, 重复支付同一笔订单只能扣一次钱

    3,支付宝回调接口, 可能会多次回调, 必须处理重复回调

    4,普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次

    二、常见方案

    三、案例

    1,状态机

    通过状态判断是否已经执行,是则跳过

    //先做幂等性校验
    RuleTaskVO rt = ruleTaskDao.selectRuleTask(ruleTaskDTO);
    if(rt == null
       || ReviewStatusEnums.SUCCESS.getCode().intValue() == rt.getReviewStatusId()
       || ReviewStatusEnums.FAIL.getCode().intValue() == rt.getReviewStatusId()
    ){
    logger.info("此规则任务重复审查");
    return;
    }

    2,Token机制+redis

    2.1,每一次请求创建一个唯一标识token, 先获取token, 并将此token存入redis。
    2.2,请求接口时, 将此token放到header或者作为请求参数请求接口。
    2.3,后端接口判断redis中是否存在此token,
    如果存在, 正常处理业务逻辑, 并从redis中删除此token, 
    如果不存在, 说明参数不合法或者是重复请求, 返回提示即可。
  • 相关阅读:
    RHEL7 安装Docker-CE
    Django2.2 Vue 前后端分离 无法访问Cookie
    Vue error: Parsing error: Unexpected token
    Python Warning
    Http post 接收 html .netcore
    Echart 中国地图
    CKplayer 视频播放插件
    (转)解决windows10下无法安装.net framework 3.5,错误代码0x800F081F
    第1章 信息化和信息系统
    .net core 添加 swagger
  • 原文地址:https://www.cnblogs.com/gezp/p/15407782.html
Copyright © 2011-2022 走看看