///// <summary>执行Seaweedfs请求
        ///// </summary>
        //public async Task<T> ExecuteAsync<T>(Connection connection, ISeaweedfsRequest<T> request) where T : SeaweedfsResponse, new()
        //{
        //    var builder = request.CreateBuilder();
        //    IRestRequest restRequest = builder.BuildRequest();
        //    var response = await connection.ExecuteAsync(restRequest);
        //    var result = new T()
        //    {
        //        IsSuccessful = response.IsSuccessful,
        //        StatusCode = response.StatusCode,
        //        ErrorException = response.ErrorException,
        //        ErrorMessage = response.ErrorMessage
        //    };

        //    if (response.IsSuccessful)
        //    {
        //        try
        //        {
        //            var t = _jsonSerializer.Deserialize<T>(response.Content);
        //            t.IsSuccessful = result.IsSuccessful;
        //            t.StatusCode = result.StatusCode;
        //            return t;
        //        }
        //        catch (Exception ex)
        //        {
        //            _logger.LogError(ex, "执行Seaweedfs请求,对返回值反序列化失败,{0}", ex.Message);
        //            result.IsSuccessful = false;
        //            result.ErrorException = ex;
        //            result.ErrorMessage = ex.Message;
        //        }
        //    }

        //    return result;
        //}

        /// <summary>执行器执行
        /// </summary>
        public async Task <T> ExecuteAsync <T>(ISeaweedfsRequest <T> request) where T : SeaweedfsResponse, new()
        {
            try
            {
                var firstDelegate = _restPipelineBuilder.Build();

                var context = _restExecuteContextFactory.CreateContext <T>(request);
                await firstDelegate(context);

                if (context.IsError)
                {
                    var error = context.Errors.FirstOrDefault();
                    throw new Exception(error.Message);
                }

                if (context.Response != null)
                {
                    return(context.Response as T);
                }
                return(null);
            }
            catch (Exception ex)
            {
                _logger.LogError($"支付ExecuteAsync出错,{ex.Message}");
                throw ex;
            }
        }
        /// <summary>创建上下文
        /// </summary>
        public RestExecuteContext CreateContext <T>(ISeaweedfsRequest <T> request) where T : SeaweedfsResponse, new()
        {
            var context = new RestExecuteContext()
            {
                Request      = request,
                ServerType   = request.ServerType,
                AssignServer = request.AssignServer,
                Response     = new T()
            };

            return(context);
        }