介绍
实现需要继承IResultFilter或者 IAsyncResultFilter。
为了方便开发,简化代码,也为了与前端方便对接,需要对接口服务返回结果进行统一处理.
定义统一返回的结果类
我们需要定义一个统一返回结果泛型类ApiResult
public class ApiResult<T>
{
public int Code { get; set; }
public string Message { get; set; }
public T Data { get; set; }
}
使用
新建ResultFilter继承IResultFilter或者IAsyncResultFilter
public class ResultFilter : IResultFilter
{
public void OnResultExecuted(ResultExecutedContext context)
{
//返回结果之后
}
public void OnResultExecuting(ResultExecutingContext context)
{
var result = new ApiResult<IActionResult>
{
Code = 1,
Message = "",
Data = context.Result
};
//返回结果之前
context.Result = new ContentResult
{
// 返回状态码设置为200,表示成功
StatusCode = (int)HttpStatusCode.OK,
// 设置返回格式
ContentType = "application/json;charset=utf-8",
Content = JsonConvert.SerializeObject(result)
};
}
}
注册过滤器
注册过滤器有两种方式,一种是全局注册,另一种是局部注册!
局部注册
局部注册可以体现在类上或者方法上
全局注册
在startup类里面的ConfigureServices方法中
services.AddControllers(o=>o.Filters.Add( typeof(ResultFilter )));
查看返回数据
eg:当然还有很多方法实现.NET Core 返回结果统一封装。