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

做设计找参考的设计网站有那些工艺品网站设计

做设计找参考的设计网站有那些,工艺品网站设计,大良网站建设机构,两学一做纪实评价系统登陆网站之前写过使用自定义返回类的方式来统一接口数据返回格式#xff0c;.Net Core webapi RestFul 统一接口数据返回格式-CSDN博客 但是这存在一个问题#xff0c;不是所有接口会按照定义的数据格式返回#xff0c;除非每个接口都返回我们自定义的类#xff0c;这种实现起来不…之前写过使用自定义返回类的方式来统一接口数据返回格式.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 ApiResponseobject{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 IApiResponseT : IApiResponse{public T? Data { get; set; }}public interface IApiErrorResponse{public Dictionarystring, object ErrorData { get; set; }}public class ApiResponseT : IApiResponseT{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 crefApiResponse/ 隐式转换为 see crefApiResponse{T}//// /summary/// param nameapiResponsesee crefApiResponse//parampublic static implicit operator ApiResponseT(ApiResponse apiResponse){return new ApiResponseT{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/// /summarypublic Dictionarystring, 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.AddResponseWrapperFilter(); }); 再次调用GetUser接口可以看到已经包装成统一的数据格式返回了 而对于之前已经定义返回类型是ApiResponse的接口也不会重复包装
http://www.w-s-a.com/news/257759/

相关文章:

  • 大连地区做网站自己怎么做电影网站
  • 成都APP,微网站开发手机要访问国外网站如何做
  • 网站app建设用discuz做的手机网站
  • vs 2008网站做安装包公众号登录超时
  • 银川做网站推广wordpress dux会员中心
  • 双辽做网站wordpress怎么写html代码
  • 建站公司哪家好 知道万维科技西安都有哪些公司
  • 设计网站官网入口佛山 品牌设计
  • 专用网站建设wordpress mega
  • 网站建设与优化推广方案内容网站整站下载带数据库后台的方法
  • 做网站PAAS系统外链是什么意思
  • 网页设计专业设计课程googleseo排名公司
  • 网站百度百科那些免费网站可以做国外贸易
  • 做视频的网站有哪些南京计算机培训机构哪个最好
  • ppt做视频 模板下载网站商业街网站建设方案
  • 佛山网站定制开发星光影视园网站建设案例
  • wordpress子站点商务网页设计与制作微课版答案
  • 山东省住房城乡和建设厅网站软件开发主要几个步骤
  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广