接口自定义代理V1—异常捕获、参数验证、日志记录

场景:很多时候接口的执行,我们在完成方法执行的本身,需要做额外的一些日志记录、异常捕获、参数验证等。

封装端代码:

/// <summary>
        /// 代理执行
        /// </summary>
        /// <typeparam name="T">请求参数类型</typeparam>
        /// <typeparam name="R">返回参数类型</typeparam>
        /// <param name="func">执行都方法</param>
        /// <param name="request">请求参数</param>
        /// <returns></returns>
        protected ResultMessage<R> ProxyExecute<T, R>(Func<T, ResultMessage<R>> func, T request)
        {
            var result = Activator.CreateInstance<ResultMessage<R>>();
            var logStr = new StringBuilder();
            try
            {
                logStr.AppendFormat("请求参数:{0}", JsonConvert.SerializeObject(request)); // 记录请求日志

                //参数验证
                request = ValidateHelper.ValidateParameter(request);

                //方法执行
                result = func(request);

                logStr.AppendFormat("返回参数:{0}", JsonConvert.SerializeObject(result)); // 记录返回日志
            }
            catch (Exception ex)
            {
                result.ResultCode = ResultCode.Exception;
                result.ResultMsg = ex.Message;

                logStr.AppendFormat("异常信息:{0}", ex.Message); // 记录异常日志
            }
            finally
            {
                //记录日志
                //WriteLog(logStr.ToString();) 
            }
            return result;
        }

调用端代码:

 /// <summary>
        /// 获取用户姓名
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost]
        public ResultMessage<StudentEntity> GetStudent(FindStudentRequest request)
        {
            return ProxyExecute(StuService.GetStudent, request);
        }

项目源码:https://pan.baidu.com/s/1BXCpcZy9Ew3cvGkIwqhW2Q    yg0a

当前代理封装其实为乞丐版,其实里面可以无限扩充,例如请求里面的用户权限验证、加密、解密、并发控制等,详情见接口自定义代理V2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值