繁体   English   中英

如何将幂等密钥实现为 asp.net web api?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM