Node.js API 中的幂等键

Sub*_*Das 1 rest transactions node.js

我在 node.js 中有一个处理货币交易的 REST API 端点。我想实现类似于 stripe 的幂等键的东西,以确保在网络故障时同一事务不会执行两次。我如何在 Node.js 中实现类似的东西?

jfr*_*d00 5

您将希望每个客户端事务生成一个随请求一起发送的 UID。然后,如果客户端处于任何类型的重试场景中,只要它保持相同的 UID,服务器就可以检测到与它已经看到的内容重复的请求。

有很多方法可以生成这种类型的 UID。您实际上可以将时间字符串化,然后在末尾Date.now()添加一组随机数字。Math.random()这为您提供了时间元素加上随机元素,从而为您提供了一个良好的唯一令牌字符串。

围绕这些类型的 UID 字符串也有一些标准。您可以在这里阅读各种答案:Create GUID / UUID in JavaScript? 对于一些库和一些创建遵循RFC 4122 的您自己的解决方案。

然后,您的服务器需要跟踪一组传入的 UID 令牌,以便它可以检测是否有针对已处理令牌的请求到达。