V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EminemW
V2EX  ›  问与答

一般接口保证幂等性的最佳实践是什么

  •  
  •   EminemW · 2020-03-29 21:06:00 +08:00 · 2019 次点击
    这是一个创建于 1706 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在我的做法是,post 请求之前先去获取 token,然后前端带着 token 进行下一步请求,后端接到请求后,去 redis 删除 token,删除成功代表 token 验证通过,就可以完成后续操作。

    这样做,对于一些并发不高的接口,会不会有点小题大做。

    5 条回复    2020-03-30 17:09:11 +08:00
    leonme
        1
    leonme  
       2020-03-29 22:39:11 +08:00
    幂等性难道不是跟具体业务有关吗?不是什么接口都需要幂等性的
    ClericPy
        2
    ClericPy  
       2020-03-29 22:52:04 +08:00
    CSRF token 算是幂等性的一个常见套路, 实际上后端直接套现成的 middleware 就够使了, 何必要自己 redis 什么的, 看你这套实现又像是带了存储的 jwt...

    并发高不高应该不耽误要不要做防护, 还是看具体业务吧, 有的业务安全性要求确实高, 有的业务就是用户改个名字什么的

    平时常见的幂等就是购物车我点付款的时候, 手抖点两次别让我付款两次给我寄来两份就行了...
    123444a
        3
    123444a  
       2020-03-29 22:54:01 +08:00 via Android
    response 带下一次序号即可,加一个序号接口,req 需要传序号
    123444a
        4
    123444a  
       2020-03-29 22:55:32 +08:00 via Android
    购物车是有 checkout id, 所以啥 token 都不用加,自然就能避免同一个 checkout id 付款 2 次,因为 checkout 是有状态机的
    EminemW
        5
    EminemW  
    OP
       2020-03-30 17:09:11 +08:00 via iPhone
    @123444a 这个我知道,如果是一般的添加纪录请求呢,除了唯一索引,select+insert 还有没有更优雅的方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.