AspNet Core Api Restful +Swagger 实现微服务之旅(四)

接着上一篇的内容

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

      (3)  返回结果包装

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

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

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

复制代码

 public class WebApiException : IExceptionFilter
    {
        /// <summary>
        /// 监控程序错误
        /// </summary>
        /// <param name="context"></param>
        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 = "你的程序有误!" });
                    //写入日志
                }
            }
        }

    }

复制代码

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

复制代码

   public class WebApiResultMiddleware : ActionFilterAttribute
    {
        /// <summary>
        ///  对返回的结果进行统一的 格式
        /// </summary>
        /// <param name="context"></param>
        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 }); 
                }
            }
          
        }
    }

复制代码

            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;
            });

复制代码

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

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

 

生成的路径样式

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值