V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
EminemW
V2EX  ›  问与答

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

  •  
  •   EminemW · Mar 29, 2020 · 2348 views
    This topic created in 2220 days ago, the information mentioned may be changed or developed.

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

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

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

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

    平时常见的幂等就是购物车我点付款的时候, 手抖点两次别让我付款两次给我寄来两份就行了...
    123444a
        3
    123444a  
       Mar 29, 2020 via Android
    response 带下一次序号即可,加一个序号接口,req 需要传序号
    123444a
        4
    123444a  
       Mar 29, 2020 via Android
    购物车是有 checkout id, 所以啥 token 都不用加,自然就能避免同一个 checkout id 付款 2 次,因为 checkout 是有状态机的
    EminemW
        5
    EminemW  
    OP
       Mar 30, 2020 via iPhone
    @123444a 这个我知道,如果是一般的添加纪录请求呢,除了唯一索引,select+insert 还有没有更优雅的方法
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1469 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    ♥ Do have faith in what you're doing.