文章摘要:本文介绍了两种统一API接口返回值的实现方式。传统方式通过定义ResponseModel和ResponseModel<T>基类,包含状态码、消息和数据字段,并提供了扩展方法SetSuccess和SetFail来设置响应结果。ABP框架方式则更全面,通过WrapResult<T>类、WrapResultAttribute特性及ResultExceptionFilter过滤器实现,能自动处理异常并统一返回格式。后者还包含日志记录、状态码转换等功能,通过在控制器或Action上添加WrapResult特性即可启用统一响应格式。两种方式都实现了成功/失败状态的标准化返回,提高了API接口的一致性。
传统常规方式统一接口返回值
Domain.Shared
// <summary>
/// 响应结果
/// </summary>
public class ResponseModel
{
//响应状态码
public ResponseCode code { get; set; }
/// <summary>
/// 响应消息
/// </summary>
public string message { get; set; }
}
/// <summary>
/// 有对象的响应结果
/// </summary>
/// <typeparam name="T"></typeparam>
public class ResponseModel<T> : ResponseModel
{
public T data { get; set; }
}
public enum ResponseCode
{
Success = 0,
Fail = 1
}
public static class ResponseExtend
{
public static ResponseModel SetSuccess(this ResponseModel response, string message = "")
{
ResponseModel result = new ResponseModel();
result.code = ResponseCode.Success;
result.message = message == string.Empty ? "操作成功" : message;
return result;
}
public static ResponseModel<T> SetSuccess<T>(this ResponseModel<T> response, T data = default, string message = "")
{
response.code = ResponseCode.Success;
response.message = message == string.Empty ? "操作成功" : message;
response.data = data;
return response;
}
public static ResponseModel SetFail(this ResponseModel response, string message = "")
{
response.code = ResponseCode.Fail;
response.message = message == string.Empty ? "操作失败" : message;
return response;
}
public static ResponseModel<T> SetFail<T>(this ResponseModel<T> response, string message = "", T data = default)
{
response.code = ResponseCode.Fail;
response.message = message == string.Empty ? "操作成功" : message;
response.data = data;
return response;
}
Application
public async Task<ResponseModel<PagedResultDto<PageSPWxTagOutput>>> SPPageAsync(PageSPWxTagInput input)
{

最低0.47元/天 解锁文章
616

被折叠的 条评论
为什么被折叠?



