传统常规方式统一接口返回值 以及Abp Vnext 统一接口返回值

文章摘要:本文介绍了两种统一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)
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云草桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值