Fluent Http - библиотека-обёртка над стандартными классами .NET с Fluent-интерфейсом для построения HTTP-запросов и обработки HTTP-ответов в .NET
HttpWebRequestBuilder - построитель запросов. Позволяет настроить параметры запроса, такие как HTTP-метод, JWT-Token, заголовки и Json-тело запроса. Реализует паттерн Builder.
HttpWebResponseHandler - обработчик ответов от сервера, для обработки используется цепочка методов-обработчиков, которые различают успешные ответы (2xx), ответы с клиентскими ошибками (4xx), ответы с ошибками сервера (5xx), конкретные HTTP-коды и т. д. Реализует паттерн Chain of responsibility.
stringurl=@"https://host:XXXX/api/GetSomething";// Построение запросаHttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(url);request.AutomaticDecompression=DecompressionMethods.GZip;// Выполнение запросаusing(HttpWebResponseresponse=(HttpWebResponse)request.GetResponse()){using(Streamstream=response.GetResponseStream()){using(StreamReaderreader=newStreamReader(stream)){// Обработка ответа от сервераvarbody=reader.ReadToEnd();}}}usingFluentHTTPToolkit.Core.Builders.Implementation;usingFluentHTTPToolkit.Core.Handlers.Implementation;usingFluentHTTPToolkit.Extensions;stringurl=@"https://host:XXXX/api/PostSomething";stringbearerToken="...";RequestObjectDTOrequestBody=newRequestObjectDTO();// Построение запросаvarrequest=awaitnewHttpWebRequestBuilder(url).WithHttpMethod(HttpMethod.Post).WithJWT(bearerToken).WithJsonBody(requestBody).Build();// Выполнение запросаusing(varresponse=awaitrequest.GetWebResponseAsync()asHttpWebResponse){// Обработка ответа от сервераvarresult=awaitnewHttpWebResponseHandler<ResponseModelType>().HandleSuccess(handler:async(response)=>{returnawaitresponse.TryDeserializeAsync<ResponseModelType>();}).HandleOthers(handler:(response)=>{thrownewException();}).HandleResponse(response);}