using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Utility.Entity; namespace Utility { public class ApiResponseActionFilter: IAsyncActionFilter { public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { // 在执行动作之前的逻辑 var resultContext = await next(); // 执行动作方法并获取执行结果 // 在执行动作之后的逻辑 if (resultContext.Result is ObjectResult objectResult) { var apiResponse = new ApiResponse( context.HttpContext.Response.StatusCode, context.HttpContext.Response.StatusCode == 200 ? "请求成功" : "错误", objectResult.Value ); var json = JsonConvert.SerializeObject(apiResponse); context.HttpContext.Response.ContentType = "application/json"; context.HttpContext.Response.ContentLength = Encoding.UTF8.GetByteCount(json); await context.HttpContext.Response.WriteAsync(json); } } } }