asp .net core api 通用返回类 ApiResult

    /**
     * @ClassName: ApiResult
     * @Description: 返回结果集封装
     * @Author: wu
     * @Date: 2020/06/12
     * @Version 1.0
     **/
    public  class ApiResult
    {

        public string Status { get; set; }
        public string Message { get; set; }
        public object Data { get; set; }

        private ApiResult(ResultCode resultCode)
        {
            Status = resultCode.GetValue<string>();
            Message = resultCode.GetAttributeValue();
        }

        public ApiResult(ResultCode resultCode, object rtnData = null)
        {
            Status = resultCode.GetValue<int>().ToString();
            Message = resultCode.GetAttributeValue();
            Data = rtnData ?? string.Empty;

        }

        public ApiResult(string responseCode, string responseMessage, object rtnData = null)
        {

            Status = responseCode;
            Message = responseMessage ?? string.Empty;
            Data = rtnData ?? string.Empty;
        }

    }


定义响应枚举状态码类

    /**
     * @Author wu
     * @Description 响应枚举状态码
     * @Date 2020/06/12
     **/
    public enum ResultCode
    {
        /// <summary>
        /// 成功
        /// </summary>
        [Desc("成功")]
        SUCCESS = 200,
        /// <summary>
        /// 失败
        /// </summary>
        [Desc("失败")]
        FALL = 9999,
        //缺少token或者会话信息
        /// <summary>
        /// 未认证(签名错误)
        /// </summary>
        [Desc("未认证(签名错误)")]
        UNAUTHORIZED = 9001,
        /// <summary>
        /// 查询无记录
        /// </summary>
        [Desc("查询无记录")]
        NO_RECORD = 9002,
        /// <summary>
        /// 缺少必须的请求参数
        /// </summary>
        [Desc("缺少必须的请求参数")]
        REQUEST_PARAM_ERROR = 9003,
        /// <summary>
        /// 找不到相关请求
        /// </summary>
        [Desc("找不到相关请求")]
        NOT_FOUND = 404,
        /// <summary>
        /// 服务器内部错误
        /// </summary>
        [Desc("服务器内部错误")]
        INTERNAL_SERVER_ERROR = 500,
        /// <summary>
        /// 权限不足
        /// </summary>
        [Desc("权限不足")]
        ACCESS_DENIED = 4301,
        /// <summary>
        /// 用户名不存在
        /// </summary>
        [Desc("用户名不存在")]
        LOGIN_NAME_ERROR = 4302,
        /// <summary>
        /// 密码错误
        /// </summary>
        [Desc("密码错误")]
        LOGIN_PASSWORD_ERROR = 4304,
        /// <summary>
        /// 不合法的token验证
        /// </summary>
        [Desc("不合法的token验证")]
        AUTH_HEADER_ERROR = 4305,
        /// <summary>
        /// 无token信息,访问当前资源请先登录
        /// </summary>
        [Desc("无token信息,访问当前资源请先登录")]
        TOKEN_NEEDED = 4306,
        /// <summary>
        /// token已过期,请重新登录
        /// </summary>
        [Desc("token已过期,请重新登录")]
        TOKEN_EXPIRED = 4307,
        /// <summary>
        /// token已被刷新,用户在其他地方登录
        /// </summary>
        [Desc("token已被刷新,用户在其他地方登录")]
        TOKEN_REFRESHED = 4308,
        /// <summary>
        /// 用户已在其他设备登录
        /// </summary>
        [Desc("用户已在其他设备登录")]
        ALREADY_LOGIN = 4309,

    }


扩展枚举操作:

  /// <summary>
    /// ** 描述:枚举扩展函数
    /// ** 创始时间:2020-9-18 13:16:05
    /// ** 修改时间:-
    /// ** 作者:child
    /// ** 使用说明:
    /// </summary>
    public static class CustomEnumExtenions
    {

        /// <summary>
        /// 获得枚举字段的特性(Attribute),该属性不允许多次定义。
        /// </summary>
        public static string GetAttributeValue(this Enum thisValue)
        {
            FieldInfo field = thisValue.GetType().GetField(thisValue.ToString());
            var attr = (Attribute.GetCustomAttribute(field, typeof(Desc)) as Desc);
            if (attr == null) return string.Empty;
            return (Attribute.GetCustomAttribute(field, typeof(Desc)) as Desc).Value;
        }
        /// <summary>
        /// 获得枚举字段的特性(Attribute),该属性不允许多次定义。
        /// </summary>
        public static T GetAttribute<T>(this Enum thisValue) where T : class
        {
            FieldInfo field = thisValue.GetType().GetField(thisValue.ToString());
            var attr = (Attribute.GetCustomAttribute(field, typeof(T)) as T);
            return attr;
        }
        /// <summary>
        /// 获得枚举字段的名称。
        /// </summary>
        /// <returns></returns>
        public static string GetName(this Enum thisValue)
        {
            return Enum.GetName(thisValue.GetType(), thisValue);
        }
        /// <summary>
        /// 获得枚举字段的值。
        /// </summary>
        /// <returns></returns>
        public static T GetValue<T>(this Enum thisValue)
        {
            return (T)Enum.Parse(thisValue.GetType(), thisValue.ToString());
        }
    }

    /// <summary>
    /// 字段或属性的中文解释属性
    /// </summary>
    [Serializable]
    [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
    public class Desc : Attribute
    {
        /// <summary>
        /// 获得字段或属性的中文解释.
        /// </summary>
        /// <value>字段或属性的中文解释.</value>
        public string Value { get; private set; }
        /// <summary>
        /// 初始化创建一个 <see cref="Desc"/> 类的实例, 用于指示字段或属性的解释说明.
        /// </summary>
        /// <param name="value">字段或属性的解释说明.</param>
        public Desc(string value)
        {
            Value = value;
        }
    }


用法:

        public ApiResult GetTest()
        {
            try
            {
                return new ApiResult(ResultCode.SUCCESS, usersService.GetList());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                return null;
            }
        }



本文作者:admin

本文链接:https://www.javalc.com/post/12.html

版权声明:本篇文章于2020-09-18,由admin发表,转载请注明出处:分享你我。如有疑问,请联系我们

asp .net core jwt 帮助类 JwtHelper

发表评论

取消
扫码支持