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

2020-03-29 21:06:00 +08:00
 EminemW

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

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

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

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

平时常见的幂等就是购物车我点付款的时候, 手抖点两次别让我付款两次给我寄来两份就行了...
123444a
2020-03-29 22:54:01 +08:00
response 带下一次序号即可,加一个序号接口,req 需要传序号
123444a
2020-03-29 22:55:32 +08:00
购物车是有 checkout id, 所以啥 token 都不用加,自然就能避免同一个 checkout id 付款 2 次,因为 checkout 是有状态机的
EminemW
2020-03-30 17:09:11 +08:00
@123444a 这个我知道,如果是一般的添加纪录请求呢,除了唯一索引,select+insert 还有没有更优雅的方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/657350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX