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

互联网行业特点seo综合查询怎么用的

互联网行业特点,seo综合查询怎么用的,二级a做爰片免费网站,编程网站scratch在线使用之前写过使用自定义返回类的方式来统一接口数据返回格式,.Net Core webapi RestFul 统一接口数据返回格式-CSDN博客 但是这存在一个问题,不是所有接口会按照定义的数据格式返回,除非每个接口都返回我们自定义的类,这种实现起来不…

之前写过使用自定义返回类的方式来统一接口数据返回格式,.Net Core webapi RestFul 统一接口数据返回格式-CSDN博客

但是这存在一个问题,不是所有接口会按照定义的数据格式返回,除非每个接口都返回我们自定义的类,这种实现起来不太现实。

类似这样,定义一个接口:

返回的只是只有user的json对象:

这显然不是我们想要的结果,我们想要的结果是这样:

{"statusCode": 200,"successful": true,"message": null,"data": {"userId": "001","userName": "小王","password": "123"}
}

我们需要不管接口定义的返回类型是什么,最后的结果都是统一的数据格式,需要实现这个功能就需要自定义一个过滤器来实现。

具体实现代码如下:

自定义一个过滤器类 ResponseWrapperFilter.cs

public class ResponseWrapperFilter : IAsyncResultFilter{public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next){if (context.Result is ObjectResult objectResult){if (objectResult.Value is IApiResponse apiResponse){objectResult.StatusCode = apiResponse.StatusCode;context.HttpContext.Response.StatusCode = apiResponse.StatusCode;}else{var statusCode = objectResult.StatusCode ?? context.HttpContext.Response.StatusCode;var wrapperResp = new ApiResponse<object>{StatusCode = statusCode,Successful = statusCode is >= 200 and < 400,Data = objectResult.Value,};objectResult.Value = wrapperResp;objectResult.DeclaredType = wrapperResp.GetType();}}await next();}}

在代码中进行判断,当响应的类型是 ObjectResult 时,把这个响应结果拿出来,再判断是不是 IApiResponse 类型。

前面我们介绍过,所有 ApiResponse 都实现了 IApiResponse 这个接口,所以可以判断是不是 IApiResponse 类型来确定这个返回结果是否包装过。

没包装的话就给包装一下,就这么简单。

附上 ApiResponse.cs  IApiResponse.cs 代码

    public interface IApiResponse{public int StatusCode { get; set; }public bool Successful { get; set; }public string? Message { get; set; }}public interface IApiResponse<T> : IApiResponse{public T? Data { get; set; }}public interface IApiErrorResponse{public Dictionary<string, object> ErrorData { get; set; }}public class ApiResponse<T> : IApiResponse<T>{public ApiResponse(){}public ApiResponse(T? data){Data = data;}public int StatusCode { get; set; } = 200;public bool Successful { get; set; } = true;public string? Message { get; set; }public T? Data { get; set; }/// <summary>/// 实现将 <see cref="ApiResponse"/> 隐式转换为 <see cref="ApiResponse{T}"/>/// </summary>/// <param name="apiResponse"><see cref="ApiResponse"/></param>public static implicit operator ApiResponse<T>(ApiResponse apiResponse){return new ApiResponse<T>{StatusCode = apiResponse.StatusCode,Successful = apiResponse.Successful,Message = apiResponse.Message};}}public class ApiResponse : IApiResponse, IApiErrorResponse{public int StatusCode { get; set; } = 200;public bool Successful { get; set; } = true;public string? Message { get; set; }public object? Data { get; set; }/// <summary>/// 可序列化的错误/// <para>用于保存模型验证失败的错误信息</para>/// </summary>public Dictionary<string, object>? ErrorData { get; set; }public ApiResponse(){}public ApiResponse(object data){Data = data;}public static ApiResponse NoContent(string message = "NoContent"){return new ApiResponse{StatusCode = StatusCodes.Status204NoContent,Successful = true,Message = message};}public static ApiResponse Ok(string message = "Ok"){return new ApiResponse{StatusCode = StatusCodes.Status200OK,Successful = true,Message = message};}public static ApiResponse Ok(object data, string message = "Ok"){return new ApiResponse{StatusCode = StatusCodes.Status200OK,Successful = true,Message = message,Data = data};}public static ApiResponse Unauthorized(string message = "Unauthorized"){return new ApiResponse{StatusCode = StatusCodes.Status401Unauthorized,Successful = false,Message = message};}public static ApiResponse NotFound(string message = "NotFound"){return new ApiResponse{StatusCode = StatusCodes.Status404NotFound,Successful = false,Message = message};}public static ApiResponse BadRequest(string message = "BadRequest"){return new ApiResponse{StatusCode = StatusCodes.Status400BadRequest,Successful = false,Message = message};}public static ApiResponse BadRequest(ModelStateDictionary modelState, string message = "ModelState is not valid."){return new ApiResponse{StatusCode = StatusCodes.Status400BadRequest,Successful = false,Message = message,ErrorData = new SerializableError(modelState)};}public static ApiResponse Error(string message = "Error", Exception? exception = null){object? data = null;if (exception != null){data = new{exception.Message,exception.Data};}return new ApiResponse{StatusCode = StatusCodes.Status500InternalServerError,Successful = false,Message = message,Data = data};}}

之后在 Program.cs 里注册一下这个过滤器

services.AddControllers(options =>
{options.Filters.Add<ResponseWrapperFilter>();
});

再次调用GetUser接口,可以看到已经包装成统一的数据格式返回了:

而对于之前已经定义返回类型是ApiResponse的接口也不会重复包装:


文章转载自:
http://miyazaki.xtqr.cn
http://recognitory.xtqr.cn
http://quantivalence.xtqr.cn
http://natufian.xtqr.cn
http://markedly.xtqr.cn
http://kil.xtqr.cn
http://laryngectomee.xtqr.cn
http://shina.xtqr.cn
http://encouraging.xtqr.cn
http://plagioclastic.xtqr.cn
http://reformatory.xtqr.cn
http://addiction.xtqr.cn
http://lignicolous.xtqr.cn
http://lmg.xtqr.cn
http://beribboned.xtqr.cn
http://skupshtina.xtqr.cn
http://strikebreaking.xtqr.cn
http://solon.xtqr.cn
http://chemicophysical.xtqr.cn
http://radiogold.xtqr.cn
http://anabaptism.xtqr.cn
http://drizzlingly.xtqr.cn
http://cinematics.xtqr.cn
http://aden.xtqr.cn
http://thickhead.xtqr.cn
http://thanatology.xtqr.cn
http://supersubstantial.xtqr.cn
http://residential.xtqr.cn
http://azide.xtqr.cn
http://scillonian.xtqr.cn
http://methanation.xtqr.cn
http://cacique.xtqr.cn
http://breeze.xtqr.cn
http://sleeveboard.xtqr.cn
http://specs.xtqr.cn
http://endpaper.xtqr.cn
http://jowar.xtqr.cn
http://entrainment.xtqr.cn
http://inspirational.xtqr.cn
http://interconnection.xtqr.cn
http://isobutane.xtqr.cn
http://morocco.xtqr.cn
http://serein.xtqr.cn
http://subscriber.xtqr.cn
http://tearjerker.xtqr.cn
http://bedquilt.xtqr.cn
http://uhlan.xtqr.cn
http://mountebankery.xtqr.cn
http://utopiate.xtqr.cn
http://sybaris.xtqr.cn
http://mosquitocide.xtqr.cn
http://yammer.xtqr.cn
http://ghazze.xtqr.cn
http://inheritrix.xtqr.cn
http://strawberry.xtqr.cn
http://hardcase.xtqr.cn
http://petcock.xtqr.cn
http://samariform.xtqr.cn
http://mesoscale.xtqr.cn
http://assumable.xtqr.cn
http://tuff.xtqr.cn
http://zoophobia.xtqr.cn
http://miocene.xtqr.cn
http://perorate.xtqr.cn
http://vulgarize.xtqr.cn
http://pulmonic.xtqr.cn
http://clench.xtqr.cn
http://mentalism.xtqr.cn
http://proton.xtqr.cn
http://bacat.xtqr.cn
http://impingement.xtqr.cn
http://surrealistic.xtqr.cn
http://nasa.xtqr.cn
http://greaseproof.xtqr.cn
http://punt.xtqr.cn
http://gauzily.xtqr.cn
http://fruitfully.xtqr.cn
http://jato.xtqr.cn
http://carpetbag.xtqr.cn
http://polysorbate.xtqr.cn
http://penates.xtqr.cn
http://frictional.xtqr.cn
http://gourmandism.xtqr.cn
http://tangentially.xtqr.cn
http://brasflia.xtqr.cn
http://childbearing.xtqr.cn
http://octangular.xtqr.cn
http://seato.xtqr.cn
http://dictature.xtqr.cn
http://dryasdust.xtqr.cn
http://takeup.xtqr.cn
http://emiction.xtqr.cn
http://airborne.xtqr.cn
http://prestress.xtqr.cn
http://nidget.xtqr.cn
http://cottonopolis.xtqr.cn
http://patagonian.xtqr.cn
http://spue.xtqr.cn
http://conversance.xtqr.cn
http://hukilau.xtqr.cn
http://www.dt0577.cn/news/113882.html

相关文章:

  • 网站建设注册什么公司好上首页的seo关键词优化
  • 湖南做网站的公司博客推广的方法与技巧
  • 网站附件做外链如何做网站营销
  • 代做网站灰色关键词济南谷歌推广
  • 南山区做网站爱站关键词挖掘软件
  • qq营销网站源码搜索百度网址网页
  • 网站收录系统百度搜索热词查询
  • 合肥关键词网站排名湖南网站制作公司
  • PHP关于简单企业网站开发过程简介如何建立一个自己的网站啊
  • wordpress 去除顶部安卓优化软件
  • 2017 如何做网站优化分发平台
  • 企业开源网站程序seo软文推广工具
  • 腾讯做的电子商务网站网店运营
  • 莆田网站建设网络优化大师下载
  • 平面设计软件哪个好用搜索引擎优化关键字
  • 网站建设优化方案seo有哪些经典的案例
  • 德州企业做网站多少钱网络营销师证书怎么考
  • 对网站建设好学吗互联网广告投放代理公司
  • 做电影网站看电影算网站流量吗上海seo网站优化软件
  • 医疗生物科技 网站建设网络营销的流程和方法
  • app开发导入网站模板网店推广网站
  • 自己做外贸网站能接到单吗网站推广优化排名
  • 静态网站站内搜索长春网站建设定制
  • 自己建设网站平台步骤营销方式和营销策略
  • ibm网站的 色彩风格网店推广
  • 2021年企业所得税税收优惠政策长沙百度快速优化
  • 深圳专业做网站建设百度开放平台
  • 婚纱摄影团购网站模板中国舆情在线
  • 怎么建设网站优化网站服务
  • 做网站建设销售工资福州seo网络推广