[英]How to implement Idempotent key into an asp.net web api?
应用程序在 API 请求 header 中使用幂等密钥发布 HTTP。
在服务器端,您要检查带有幂等密钥的请求是否已为此客户端处理。
我们如何跟踪 API 请求、API 计数以及请求中使用的幂等密钥等?
通过在数据库中记录所有 API 请求并在每次发出新请求时往返数据库以检查此信息? 或者,还有更好的方法?
你可以尝试使用github上的这个开源组件来解决你的问题IdempotentAPI
我喜欢在一个相当标准的设置(数据库、EF 核心、web api)中做的是使用中间件将幂等性密钥添加( Context.Add()
)到数据库而不提交。
稍后,在 controller 服务或某种处理程序中,我确保只调用一次Context.SaveChanges()
(或UnitOfWork.Commit()
)(通常应该是这种情况,因为你应该只更新每个事务 1 个聚合根)。
这样你就可以确定你是以原子方式保存的,只有当你的插入/更新/删除成功时,你的幂等键才会被保存。 如果幂等键已经存在于数据库中,您的插入/更新/删除将失败。
最后,你还可以做的是缓存你的成功响应,这样在幂等性异常的情况下,你可以简单地返回缓存的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.