当前位置: 首页 > news >正文

惠安县规划建设局网站给我一个网页

惠安县规划建设局网站,给我一个网页,自适应网站一般用什么框架做,东营网站设计多少钱API的幂等性#xff08;Idempotent#xff09;#xff0c;是指调用某个方法1次或N次对资源产生的影响结果都是相同的。GET请求默认是幂等的#xff0c;因为它只是查询资源#xff0c;而不会修改资源。而POST请求默认是不幂等的#xff0c;多次调用POST方法可能会产生不同… API的幂等性Idempotent是指调用某个方法1次或N次对资源产生的影响结果都是相同的。GET请求默认是幂等的因为它只是查询资源而不会修改资源。而POST请求默认是不幂等的多次调用POST方法可能会产生不同的结果并会创建多个资源。想象一下你在扫码支付时输入金额后点击了2次“确定”按钮肯定不希望扣2次款。幂等性保证了操作只会执行一次。1.思路使用ASP.NET Core过滤器来处理POST请求检查请求头中的幂等键IdempotencyKey。如果在缓存中未检查到IdempotencyKey则真实执行操作并缓存响应数据否则直接返回缓存的响应数据。这样操作只能对资源产生一次影响。原理示意图如下2.实现2.1 IdempotentAttributeFilter创建自定义Filter。使用OnActionExecuting方法在执行操作前检查缓存如有缓存直接返回context.Result使用OnResultExecuted方法在执行操作后缓存响应。代码如下public class IdempotentAttributeFilter : IActionFilter, IResultFilter {private readonly IDistributedCache _distributedCache;private bool _isIdempotencyCache false;const string IdempotencyKeyHeaderName  IdempotencyKey;private string _idempotencyKey;public IdempotentAttributeFilter(IDistributedCache distributedCache){_distributedCache  distributedCache;}public void OnActionExecuting(ActionExecutingContext context){Microsoft.Extensions.Primitives.StringValues idempotencyKeys;context.HttpContext.Request.Headers.TryGetValue(IdempotencyKeyHeaderName, out idempotencyKeys);_idempotencyKey  idempotencyKeys.ToString();var cacheData  _distributedCache.GetString(GetDistributedCacheKey());if (cacheData ! null){context.Result  JsonConvert.DeserializeObjectObjectResult(cacheData);_isIdempotencyCache  true;return;}}public void OnResultExecuted(ResultExecutedContext context){//已缓存if (_isIdempotencyCache){return;}var contextResult  context.Result;DistributedCacheEntryOptions cacheOptions  new DistributedCacheEntryOptions();cacheOptions.AbsoluteExpirationRelativeToNow  new TimeSpan(24, 0, 0);//缓存:_distributedCache.SetString(GetDistributedCacheKey(), JsonConvert.SerializeObject(contextResult), cacheOptions);}public void OnActionExecuted(ActionExecutedContext context){}public void OnResultExecuting(ResultExecutingContext context){}private string GetDistributedCacheKey(){return Idempotency:  _idempotencyKey;} } 2.2 IdempotentAttribute创建自定义Attribute。声明了IdempotentAttribute的Class或者Method在运行时会创建IdempotentAttributeFilter。代码如下[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple  false, Inherited  false)] public class IdempotentAttribute : Attribute, IFilterFactory {public bool IsReusable  false;public IFilterMetadata CreateInstance(IServiceProvider serviceProvider){var distributedCache  (IDistributedCache)serviceProvider.GetService(typeof(IDistributedCache));var filter  new IdempotentAttributeFilter(distributedCache);return filter;} } 3.使用3.1 创建项目新建ASP.NET Core Web API项目实现代码如下private static ListWeatherForecast _db  new ListWeatherForecast();[HttpPost] public WeatherForecast Post(int temperature) {var data  new WeatherForecast { TemperatureC  temperature };_db.Add(data);return data; }[HttpGet] public IEnumerableWeatherForecast Get() {return _db.Select(p  new WeatherForecast{TemperatureC  p.TemperatureC,Summary  Summaries[rng.Next(Summaries.Length)]}).ToArray(); } 这里用一个静态变量模拟数据库POST请求写入数据GET请求读取数据。3.2 设置幂等为Post方法加上Idempotent Attribute[Idempotent] public WeatherForecast Post(int temperature) 3.3 注册分布式缓存从上面的原理图我们可以看到必须增加分布式缓存用于保存幂等键的值和响应数据。修改Startup.cspublic void ConfigureServices(IServiceCollection services) {...services.AddDistributedMemoryCache(); } 3.4 测试运行Web API使用不同IdempotencyKey执行POST请求然后获取数据:可以看到同一IdempotencyKey执行了2次但是只写入了一条数据成功结论为了确保关键Web API的高可用性和业务连续性实现幂等性是重要的一步。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“记住我
http://www.sadfv.cn/news/44813/

相关文章:

  • 做渐变色的网站怀化同城网站
  • 深圳网站建设 壹起航无锡建设机械网站
  • 医院网站建设哪家好网站建设和网络推广外包
  • 邵阳营销型网站北京设计公司哪家好
  • com网站怎么注册wordpress如何修改上传图片大小
  • 网站进行规划与设计环保网站模板 html
  • 南充网站网站建设英文网站建设设计
  • o2o网站建设如何学软件工程培训就业机构
  • 成都协会网站建设wordpress自学网
  • 自适应网站搭建网站服务器 试用
  • 网站备案 子域名长沙百度百科
  • 百度域名查询入口wordpress的seo收件箱
  • 天津建设工程竣工备案公示网站网店卖什么最赚钱
  • 郑州网站建设知名公司济南网站优化排名
  • 移动网站开发源代码学ui设计适合什么样的人
  • 毕业设计难度适中的网站开发项目题目wordpress模板展示网站
  • 亚马逊网站的建设和维护免费制作简历模板网站
  • 自己做网站怎么能被访问做网络推广阿里巴巴还是网站好
  • 网站建设设计ppt成都公司注册网
  • 杭州滨江网站建设公司做的好微信商城网站吗
  • 东莞网站建设工作室网络服务采购
  • 无锡品牌网站建设网站网站建设与网页设计是什么
  • 点击图片进入网站怎么做室外绿化工程施工方案久久建筑网
  • 上海做网站seo自己做的网站怎么上网
  • 公司做网站设计要注意html编辑器手机
  • 找做网站公司厦门建设网站企业
  • 做网站的费用记哪个科目铜仁建设局网站首页
  • 顶岗实践网站开发财务公司业务范围
  • 做网站销售有前景吗配件查询网站制作
  • python 做办公网站深圳宝安区1例确诊