.NET 返回结果过滤器

88 阅读1分钟

添加依赖

Newtonsoft.Json

image.png

自定义返回格式

image.png

namespace ResultFilter
{
    public class ApiResult<T>
    {
        public int Code { get; set; }
        public string Message { get; set; } 
        public T Data { get; set; }

    }
}

创建Filter

image.png

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Newtonsoft.Json;
using System.Net;
using System.Text.Json.Serialization;

namespace ResultFilter
{
    public class ResultFilter : Attribute, IResultFilter
    {
        /// <summary>
        /// 返回结果之后
        /// </summary>
        /// <param name="context"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void OnResultExecuted(ResultExecutedContext context)
        {
        }

        /// <summary>
        /// 返回结果之前
        /// </summary>
        /// <param name="context"></param>
        /// <exception cref="NotImplementedException"></exception>
        public void OnResultExecuting(ResultExecutingContext context)
        {
            var result = new ApiResult<IActionResult>
            {
                Code = 200,
                Message = "OK",
                Data = context.Result
            };
            context.Result = new ContentResult
            {
                // 返回状态码为200,表示正常
                StatusCode = (int)HttpStatusCode.OK,
                // 设置返回格式
                ContentType = "application/json",
                Content = JsonConvert.SerializeObject(result)
            };
        }
    }
}

服务注册

局部注册

image.png

全局注册

builder.Services.AddControllers(o=>o.Filters.Add(typeof(ResultFilter)));

image.png

测试

image.png