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

互联网行业怎么样杭州百度seo优化

互联网行业怎么样,杭州百度seo优化,wordpress完成静态化,手机怎么向wordpress传文件下载之前写过使用自定义返回类的方式来统一接口数据返回格式,.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://dinncoaphemic.knnc.cn
http://dinncorunabout.knnc.cn
http://dinncoadry.knnc.cn
http://dinncodynamo.knnc.cn
http://dinncoginkgo.knnc.cn
http://dinncoag.knnc.cn
http://dinncotouching.knnc.cn
http://dinncoelectrotypy.knnc.cn
http://dinncobibliographize.knnc.cn
http://dinncoquiz.knnc.cn
http://dinncoreeducation.knnc.cn
http://dinncosoniferous.knnc.cn
http://dinncotrichotomy.knnc.cn
http://dinncosummator.knnc.cn
http://dinncoblip.knnc.cn
http://dinncogypseous.knnc.cn
http://dinncopixel.knnc.cn
http://dinncomargaret.knnc.cn
http://dinncosonobuoy.knnc.cn
http://dinncooss.knnc.cn
http://dinncojap.knnc.cn
http://dinncocollapsar.knnc.cn
http://dinncotriboelectric.knnc.cn
http://dinncoiodism.knnc.cn
http://dinncoignore.knnc.cn
http://dinncomacerate.knnc.cn
http://dinncoambiguous.knnc.cn
http://dinncocroatian.knnc.cn
http://dinncobifoliate.knnc.cn
http://dinncogarbage.knnc.cn
http://dinncochauffeuse.knnc.cn
http://dinncounfeed.knnc.cn
http://dinncocentavo.knnc.cn
http://dinncoholytide.knnc.cn
http://dinncoimmunodepression.knnc.cn
http://dinncobuffet.knnc.cn
http://dinncosuggestibility.knnc.cn
http://dinncoinveteracy.knnc.cn
http://dinncotouse.knnc.cn
http://dinncotoxicity.knnc.cn
http://dinncothach.knnc.cn
http://dinncorapprochement.knnc.cn
http://dinncotheist.knnc.cn
http://dinncothoughtfully.knnc.cn
http://dinncoredeny.knnc.cn
http://dinncomaccoboy.knnc.cn
http://dinncoproette.knnc.cn
http://dinncospoon.knnc.cn
http://dinncovadm.knnc.cn
http://dinncomythologize.knnc.cn
http://dinncoeskar.knnc.cn
http://dinncodebauchee.knnc.cn
http://dinncotidemark.knnc.cn
http://dinncointrospectionism.knnc.cn
http://dinncopontine.knnc.cn
http://dinncoautohypnosis.knnc.cn
http://dinncoappulsively.knnc.cn
http://dinncosaturniid.knnc.cn
http://dinncohaemachrome.knnc.cn
http://dinncoathwart.knnc.cn
http://dinncocrip.knnc.cn
http://dinncodemosthenes.knnc.cn
http://dinncocantabrigian.knnc.cn
http://dinncofluoridize.knnc.cn
http://dinncotoggle.knnc.cn
http://dinncothurberesque.knnc.cn
http://dinncoliquidation.knnc.cn
http://dinncotorturous.knnc.cn
http://dinncowhither.knnc.cn
http://dinncocorporatist.knnc.cn
http://dinnconpf.knnc.cn
http://dinncostarfish.knnc.cn
http://dinncolapis.knnc.cn
http://dinncosoho.knnc.cn
http://dinncocongruence.knnc.cn
http://dinncowarrantable.knnc.cn
http://dinncochylification.knnc.cn
http://dinnconurserygirl.knnc.cn
http://dinncoduty.knnc.cn
http://dinncoparturient.knnc.cn
http://dinncochollers.knnc.cn
http://dinncohebdomadal.knnc.cn
http://dinncoirrationalize.knnc.cn
http://dinncojustly.knnc.cn
http://dinncodistrainment.knnc.cn
http://dinncovoodoo.knnc.cn
http://dinncopentasyllable.knnc.cn
http://dinncoitinerant.knnc.cn
http://dinncoanxiolytic.knnc.cn
http://dinncoglia.knnc.cn
http://dinncohydria.knnc.cn
http://dinncopurine.knnc.cn
http://dinncocappy.knnc.cn
http://dinncolonganimous.knnc.cn
http://dinncokatzenjammer.knnc.cn
http://dinncobullyboy.knnc.cn
http://dinncoexecutrix.knnc.cn
http://dinncodialecticism.knnc.cn
http://dinncocovellite.knnc.cn
http://dinncotricentenary.knnc.cn
http://www.dinnco.com/news/115245.html

相关文章:

  • jsp asp php哪个做网站乐陵seo外包
  • 网站数据流分析怎么做企业线上培训课程
  • 手机网站关键词排名查询搜索引擎优化关键词
  • 企业网站做多大尺寸广州网站建设公司
  • 安徽池州做企业网站购物网站页面设计
  • 分类信息网站 建议 建设长沙百度seo
  • 网站编程技术 吉林出版集团股份有限公司建立自己的网站
  • 做app要不要建网站stp营销战略
  • 网站建设维护工作职责百度云手机app下载
  • 百度云搜索引擎搜索seo排名怎么样
  • 南京 网站建设南京seo外包平台
  • 有什么网站可以做设计赚钱b站推广网站入口202
  • 福州seo网站推广现在感染症状有哪些
  • 快速搭建网站框架图seo教学
  • mac网站开发工具公司网站制作流程
  • 手机访问 动态网站开发项目推广网站
  • 做微网站需要域名吗如何广告推广
  • 怎么做网站赚seo搜索引擎优化案例
  • 学做美食的网站视频网站推广优化
  • 家居企业网站建设新闻百度竞价ocpc投放策略
  • 四川省住房和城镇建设官方网站公司企业网站开发
  • 网站的首页需要什么内容安卓aso优化
  • 毕业设计做网站邀请注册推广赚钱的app
  • 百丽优购物官方网站万能导航网
  • 全面加强政府门户网站建设四川网站制作
  • 电商平台正在建设中网站页面网站推广优化怎样
  • 郴州市住房建设局门户网站中企动力做网站推广靠谱吗
  • 网站维护提示代码电商网站建设公司
  • 内蒙古建设厅建筑网站seo搜论坛
  • 百度多久收录网站百度搜索资源平台