public async Task <JsonMessageResult> CreateBookCategory(BookCategory model)
        {
            var response = await ApiRequestHandler.RequestHandler(HttpRequestMethods.Post,
                                                                  $"{Route}CreateBookCategory",
                                                                  CommonClass.ClassToDictionary(model));

            return(string.IsNullOrEmpty(response)
                ? MsgProvider.Success("新增成功!")
                : JsonConvert.DeserializeObject <JsonMessageResult>(response));
        }
        public async Task <JsonMessageResult> UpdateReservation(Reservation model)
        {
            var response = await ApiRequestHandler.RequestHandler(HttpRequestMethods.Put,
                                                                  $"{Route}UpdateReservation/{model.Id}?fields=Age,Sex,ReservationName,DepartmentId,BirthDay,ReservationNo,Class,Contact,Email",
                                                                  CommonClass.ClassToDictionary(model));

            return(string.IsNullOrEmpty(response)
                ? MsgProvider.Success("修改成功!")
                : JsonConvert.DeserializeObject <JsonMessageResult>(response));
        }
        public async Task <JsonMessageResult> UpdateBookInfo(BookInfo model)
        {
            var response = await ApiRequestHandler.RequestHandler(HttpRequestMethods.Put,
                                                                  $"{Route}UpdateBookInfo/{model.Id}?fields=BookCategoryId,PublishingId,Price,ReleaseDate,BookName,BookPhoto,Author,ISBN",
                                                                  CommonClass.ClassToDictionary(model));

            return(string.IsNullOrEmpty(response)
                ? MsgProvider.Success("修改成功!")
                : JsonConvert.DeserializeObject <JsonMessageResult>(response));
        }
        public static async Task <string> RequestHandler(HttpRequestMethods method, string url,
                                                         Dictionary <string, object> dic, string jsonData = "")
        {
            try
            {
                //传入Authorization Token
                Client.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(GlobalCache.Token);

                HttpResponseMessage response;
                switch (method)
                {
                //GET请求
                case HttpRequestMethods.Get:

                    url = dic.Keys.Aggregate(url, (current, item) => current + $"{item}={dic[item]}&");
                    return(await Client.GetStringAsync($"{ApiUrl + url}"));

                //POST
                case HttpRequestMethods.Post:
                    var bodyData = JsonConvert.SerializeObject(dic);
                    if (!string.IsNullOrEmpty(jsonData))
                    {
                        bodyData = jsonData;
                    }

                    response = await Client.PostAsync($"{ApiUrl + url}",
                                                      new StringContent(bodyData, Encoding.UTF8, MediaType));

                    if (response.StatusCode != HttpStatusCode.Created)
                    {
                        return(await response.Content.ReadAsStringAsync());
                    }
                    var strData = await response.Content.ReadAsStringAsync();

                    MsgResult.ResultMessage = "创建成功!";
                    MsgResult.ResultData    = strData;
                    return(JsonConvert.SerializeObject(MsgResult));

                //PUT
                case HttpRequestMethods.Put:

                    response = await Client.PutAsync($"{ApiUrl + url}",
                                                     new StringContent(JsonConvert.SerializeObject(dic), Encoding.UTF8, MediaType));

                    if (response.StatusCode != HttpStatusCode.NoContent)
                    {
                        return(await response.Content.ReadAsStringAsync());
                    }

                    return(JsonConvert.SerializeObject(new JsonMessageResult("修改成功", 1, 0)));

                //DELETE
                case HttpRequestMethods.Delete:

                    response = await Client.DeleteAsync($"{ApiUrl + url}");

                    var result = await response.Content.ReadAsStringAsync();

                    return(string.IsNullOrEmpty(result)
                            ? JsonConvert.SerializeObject(new JsonMessageResult("删除成功", 1, 0))
                            : result);

                case HttpRequestMethods.Patch:
                    break;

                default:
                    return("未找到此请求方式!");
                }
            }
            catch (WebException e)
            {
                if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    return(JsonConvert.SerializeObject(new JsonMessageResult("未找到接口资源或未授权!", 0, null)));
                }
                if (e.Status != WebExceptionStatus.ProtocolError)
                {
                    return(JsonConvert.SerializeObject(new JsonMessageResult("请求异常!", 0, null)));
                }

                var reader = new StreamReader(
                    e.Response.GetResponseStream() ?? throw new InvalidOperationException(),
                    Encoding.UTF8);
                using (reader) return(await reader.ReadToEndAsync());
            }
            catch (HttpRequestException e)
            {
                LogHelper.Error(e.ToString());
                return(MsgProvider.FailMsg($"接口请求异常!{e.Message}"));
            }
            catch (Exception e)
            {
                LogHelper.Error(e.ToString());
                return(MsgProvider.FailMsg($"发生异常:{e.Message}"));
            }

            return("请求异常!");
        }