コード例 #1
0
        public string InvokeRequest(ApiRequestData requestData)
        {
            try
            {
                var requestString = requestData.RequestString;

                if (CallBackChecker.IsCallBack(this))
                {
                    //callback接口,不进行参数校验,带有此特性的接口方法不用检测参数,用于其他平台回调

                    //如果回调需要做其他操作,请写在这里
                }
                else
                {
                    //系统参数检查
                    // SystemParamsChecker.Check(requestString);

                    //在这里可以做其他操作,比如某些特性的接口既不用检测sign,也不用检测token
                    //带有AnonymousChecker的接口可以任意访问不需要token
                    //AnonymousChecker.Check(this);

                    //这里检测 签名
                    //签名规则可以自定义,在cheker里面修改就行了,如果不需要,就直接不做

                    //Checker.SignChecker.Check(requestString, signkey);


                    //这里检验token

                    //做完了token验证之后,一般都可以得到用户唯一标识,这里用userid;我们传入到我们编写的api方法里面;
                    //这样,编写api的人员完全不用关心验证这一块的东西,在编写api的时候直接拿到userid用就行了
                    //如果需要多个,那么直接在这儿做就好了

                    //requestString.Add(Constants.USERID, "");
                }
                var request = ConverRequestObject(requestString);
                //这里用作检验参数的合法性,例如,我们为实体类的属性提供了required,stringlength等特性;检测失败就会抛出异常
                if (!CallBackChecker.IsCallBack(this))
                {
                    RequestChecker.Check(request);
                }
                log4net.Ext.IExtLog log = log4net.Ext.ExtLogManager.GetLogger("filelog");
                var response            = Invoke(request);

                if (!response.IsNull())
                {
                    response = OnAfter(response);
                }

                if (CustomerResponseChecker.IsCustomerResponse(this))
                {
                    return(response.ToJson());
                }
                else
                {
                    ApiResult result = new ApiResult()
                    {
                        Response  = response,
                        RequestId = requestData.RequestId,
                    };
                    return(result.ToJson());
                }
            }
            catch (ApiException apiex)
            {
                //可以在异常的时候多记录一些东西
                SeLog.Log.Error("apiex Error:", apiex);
                return(ApiResult.CreateErrorResult(requestData.RequestId, apiex.Type, apiex.Message));
            }
            catch (BusinessException businessex)
            {
                //可以在异常的时候多记录一些东西
                SeLog.Log.Error("businessex Error:", businessex);
                return(ApiResult.CreateErrorResult(requestData.RequestId, ResponseType.Business_Error, businessex.Message));
            }
            catch (Exception ex)
            {
                //可以在异常的时候多记录一些东西
                SeLog.Log.Error("ex Error:", ex);
                return(ApiResult.CreateErrorResult(requestData.RequestId, ResponseType.Error, ex.Message));
            }
        }
コード例 #2
0
 static SeLog()
 {
     log4net.Ext.IExtLog log = log4net.Ext.ExtLogManager.GetLogger("filelog");
     Log = log;
 }