博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AspNet Core Api Restful +Swagger 实现微服务之旅(四)
阅读量:5348 次
发布时间:2019-06-15

本文共 2370 字,大约阅读时间需要 7 分钟。

这几天没更新,项目框架也是在发展阶段,这几天学习配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到时候把心得写出来相互学习。

接着上一篇的内容

      (2)  程序错误时  返回数据格式封装

      (3)  返回结果包装

      (4)  对外开放的接口 参数必填与非必填的声明

   (2)  程序错误时  返回数据格式封装/(3)返回结果包装

         2.1创建捕获异常类当有异常发生时自定义返回信息 WebApiException

public class WebApiException : IExceptionFilter    {        ///         /// 监控程序错误        ///         ///         public void OnException(ExceptionContext context)        {            NewMethod(context);        }        private static void NewMethod(ExceptionContext context)        {            if (context.Exception is Exception)            {                var objectResult = context.Exception as Exception;                if (objectResult.Message != null)                {                    context.Result = new ObjectResult(new { Success = false,  msg = "你的程序有误!" });                    //写入日志                }            }        }    }
View Code

             2.2创建 结果封装类  WebApiResultMiddleware  返回结果封装成统一的样式

public class WebApiResultMiddleware : ActionFilterAttribute    {        ///         ///  对返回的结果进行统一的 格式        ///         ///         public override void OnResultExecuting(ResultExecutingContext context)        {            //根据实际需求进行具体实现            if (context.Result is ObjectResult)            {                var objectResult = context.Result as ObjectResult;                if (objectResult.Value == null)                {                    context.Result = new ObjectResult(new {   Success=false, code = 404, msg = "未找到资源", data ="null" });                 }                else                {                    context.Result = new ObjectResult(new { Success = true ,code = 200, msg = "成功!", Data = objectResult.Value });                 }            }                  }    }
View Code

            2.3 在startup.cs 启动容器中注册 服务

services.AddMvc(options =>            {                //方法返回结果统一化                options.Filters.Add(typeof(WebApiResultMiddleware));                //程序错误返回结果统一化                options.Filters.Add(typeof(WebApiException));                //身份验证不通过是返回结果统一化                options.Filters.Add(typeof(WebApiAuthorizationFilter));                options.RespectBrowserAcceptHeader = true;            });
View Code

           返回结果就不在演示了,通过这三个类 我们能做很多的事情,比如写一个录入日志的方法就可以解决整个框架的写日志问题。

(4)  对外开放的接口 参数必填与非必填的声明

 

生成的路径样式

对控制器的包装  支持传输参数的的声明

 

我想先把基础的东西写下来 为以后做准备。

比如,路由的配置、DI、管道、中间件等,我也是在学习中希望和大家一起相互印证。

 

 

            

转载于:https://www.cnblogs.com/szlblog/p/8111577.html

你可能感兴趣的文章
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Mybatis输入类型和结果类型
查看>>
Linux常用命令(五)
查看>>
Linux常用命令(四)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(八)
查看>>
Linux常用命令(七)
查看>>
Linux常用命令(九)
查看>>
Linux常用命令(十一)
查看>>
Linux常用命令(十)
查看>>
实验吧之这就是一个坑
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十三)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>