接着上一篇的内容
(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) 对外开放的接口 参数必填与非必填的声明

生成的路径样式

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

本文介绍了一种统一API响应格式及异常处理的方法,包括创建WebApiException类用于捕获并自定义异常返回信息,使用WebApiResultMiddleware类对返回结果进行格式封装,以及在Startup.cs中注册服务实现。此外,还探讨了接口参数的必填与非必填声明。
510

被折叠的 条评论
为什么被折叠?



