在项目Utility中建立文件夹ApiResult,先建立 ResultHelper文件
ResultHelper.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using NET6Demo.IRepository;
namespace NET6Demo.Utility.ApiResult
{
public class ResultHelper
{
private readonly ILogger<ResultHelper> _logger;
private IResultModel _result;
public ResultHelper(ILogger<ResultHelper> logger, IResultModel result)
{
_logger = logger;
_result = result;
}
public IActionResult GetResult(int code, string msg = null, object value = null)
{
_result.StatusCode = code;
_result.Result = value;
if (string.IsNullOrWhiteSpace(msg))
{
if (code > 199 && code < 299)
{
_result.Message = "success";
}
else if (code > 399 && code < 499)
{
_result.Message = "error";
}
else if (code > 499 && code < 599)
{
_result.Message = "reject";
}
}
ObjectResult objResult = new ObjectResult(_result);
return objResult;
}
}
}
再建立ApiResultFilterAttribute.cs文件
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace NET6Demo.Utility.ApiResult
{
public class ApiResultFilterAttribute : ActionFilterAttribute
{
private ResultHelper _result;
public ApiResultFilterAttribute(ResultHelper result)
{
_result = result;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
base.OnActionExecuting(context);
}
public override void OnResultExecuting(ResultExecutingContext context)
{
var objectResult = context.Result as ObjectResult;
var code = objectResult != null ? objectResult.StatusCode : 500;
context.Result = _result.GetResult((int)code, string.Empty, objectResult.Value);
}
}
}
在Utility项目的Autofac中注册ResultHelper
//api返回值处理
container.RegisterType<ResultHelper>().InstancePerLifetimeScope();
在program.cs中添加统一返回值处理
#region 统一返回值
builder.Services.AddMvc(options =>
{
options.Filters.Add<ApiResultFilterAttribute>();
});
#endregion
//加在这句话的上面
var app = builder.Build();
在TestController中添加代码进行测试
运行代码,查看结果
再换一个返回值,再测试一次
到此统一返回值设置完毕。返回值内容可以根据项目需要再做修改