Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Fluent Http - библиотека-обёртка над стандартными классами .NET с Fluent-интерфейсом для построения HTTP-запросов и обработки HTTP-ответов в .NET

HttpWebRequestBuilder - построитель запросов. Позволяет настроить параметры запроса, такие как HTTP-метод, JWT-Token, заголовки и Json-тело запроса. Реализует паттерн Builder.

HttpWebResponseHandler - обработчик ответов от сервера, для обработки используется цепочка методов-обработчиков, которые различают успешные ответы (2xx), ответы с клиентскими ошибками (4xx), ответы с ошибками сервера (5xx), конкретные HTTP-коды и т. д. Реализует паттерн Chain of responsibility.

Пример формирования HTTP-запросов и его обработка обычным образом

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();}}}

Пример формирования HTTP-запроса и его обработка при помощи Fluent Http

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);}

About

No description or website provided.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages