.NET Core中使用结果过滤器ResultFilter统一结果返回封装

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET Core中使用结果过滤器ResultFilter统一结果返回封装相关的知识,希望对你有一定的参考价值。

介绍

实现需要继承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 返回结果统一封装。

最后我希望所有neter关注前沿技术,不要固步自封。

最后大家如果喜欢我的文章,还麻烦给个关注, 希望net生态圈越来越好!

以上是关于.NET Core中使用结果过滤器ResultFilter统一结果返回封装的主要内容,如果未能解决你的问题,请参考以下文章

[Core]Asp.Net Core中的各种过滤器(授权资源操作结果异常)

十二个 ASP.NET Core 例子——过滤器

在 .Net Core 的另一个线程上调用函数

如何使用 ASP.NET Core 从查询字符串中读取值?

net core 3.1 MVC如何返回JSONP

.net core web api - 如何以块的形式返回表结果