TG Telegram Group & Channel
.NET Разработчик | United States America (US)
Create: Update:

День 2213. #ЗаметкиНаПолях
Создаём Надёжных Клиентов API с Refit. Начало

Работа с внешними API - важная часть современной разработки ПО, но это может быть больно. Мы все боролись с настройками HttpClient, писали повторяющийся код и надеялись, что не пропустили где-то параметр или заголовок. Refit значительно упрощает нам жизнь. Он обрабатывает всю тяжёлую логику работы с HTTP, позволяя сосредоточиться на том, что важно: логике приложения.

Что это?
Refit — это типобезопасная библиотека REST для .NET. Она позволяет определить API как интерфейс, который Refit затем реализует для вас. Такой подход сокращает шаблонный код и делает вызовы API более читаемыми и поддерживаемыми. Вы описываете конечные точки API с помощью сигнатур методов и атрибутов, а Refit заботится обо всём остальном:
1. Автоматическая сериализация и десериализация.
Вам не придётся преобразовывать объекты в JSON и обратно. Refit делает это за вас.
2. Строго типизированные определения API.
Refit помогает выявлять ошибки на ранних этапах. Если вы неправильно введёте параметр или используете неправильный тип данных, вы узнаете об этом во время компиляции, а не когда ваше приложение даст сбой при работе.
3. Поддержка различных методов HTTP: GET, POST, PUT, PATCH, DELETE.
4. Манипуляции с запросами/ответами.
Вы можете легко добавлять пользовательские заголовки или обрабатывать определённые типы контента.
Кроме того, вызовы API становятся самодокументируемыми. Любой, кто читает код, сможет быстро понять, что делает каждый метод, не углубляясь в детали реализации.

Настройка и использование
Мы реализуем полный интерфейс CRUD и продемонстрируем его использование в приложении Minimal API. Сначала установим необходимые NuGet-пакеты:

Install-Package Refit
Install-Package Refit.HttpClientFactory


Теперь создадим интерфейс Refit:
using Refit;

public interface IBlogApi
{
[Get("/posts/{id}")]
Task<Post> GetPostAsync(int id);

[Get("/posts")]
Task<List<Post>> GetPostsAsync();

[Post("/posts")]
Task<Post> CreatePostAsync([Body] Post post);

[Put("/posts/{id}")]
Task<Post> UpdatePostAsync(int id, [Body] Post post);

[Delete("/posts/{id}")]
Task DeletePostAsync(int id);
}

public record Post(int Id, string Title, string Body, int UserId);

Мы определяем интерфейс IBlogApi с методами для CRUD-операций. Запись Post представляет сообщения в блоге.

Затем зарегистрируем Refit в DI-контейнере:
using Refit;

builder.Services
.AddRefitClient<IBlogApi>()
.ConfigureHttpClient(c => c.BaseAddress =
new Uri("https://jsonplaceholder.typicode.com"));


Наконец мы можем использовать IBlogApi в конечных точках Minimal API:
app.MapGet("/posts/{id}",
async (int id, IBlogApi api) =>
await api.GetPostAsync(id));

app.MapGet("/posts",
async (IBlogApi api) =>
await api.GetPostsAsync());

app.MapPost("/posts",
async ([FromBody] Post post, IBlogApi api) =>
await api.CreatePostAsync(post));

app.MapPut("/posts/{id}",
async (int id, [FromBody] Post post, IBlogApi api) =>
await api.UpdatePostAsync(id, post));

app.MapDelete("/posts/{id}",
async (int id, IBlogApi api) =>
await api.DeletePostAsync(id));


Мы создали полностью функциональный API, который взаимодействует с внешним сервисом, всего в нескольких строках кода. Никаких ручных HTTP-запросов, никакой обработки сырого JSON — Refit позаботится обо всём этом за нас.

Продолжение следует…

Источник:
https://www.milanjovanovic.tech/blog/refit-in-dotnet-building-robust-api-clients-in-csharp

День 2213. #ЗаметкиНаПолях
Создаём Надёжных Клиентов API с Refit. Начало

Работа с внешними API - важная часть современной разработки ПО, но это может быть больно. Мы все боролись с настройками HttpClient, писали повторяющийся код и надеялись, что не пропустили где-то параметр или заголовок. Refit значительно упрощает нам жизнь. Он обрабатывает всю тяжёлую логику работы с HTTP, позволяя сосредоточиться на том, что важно: логике приложения.

Что это?
Refit — это типобезопасная библиотека REST для .NET. Она позволяет определить API как интерфейс, который Refit затем реализует для вас. Такой подход сокращает шаблонный код и делает вызовы API более читаемыми и поддерживаемыми. Вы описываете конечные точки API с помощью сигнатур методов и атрибутов, а Refit заботится обо всём остальном:
1. Автоматическая сериализация и десериализация.
Вам не придётся преобразовывать объекты в JSON и обратно. Refit делает это за вас.
2. Строго типизированные определения API.
Refit помогает выявлять ошибки на ранних этапах. Если вы неправильно введёте параметр или используете неправильный тип данных, вы узнаете об этом во время компиляции, а не когда ваше приложение даст сбой при работе.
3. Поддержка различных методов HTTP: GET, POST, PUT, PATCH, DELETE.
4. Манипуляции с запросами/ответами.
Вы можете легко добавлять пользовательские заголовки или обрабатывать определённые типы контента.
Кроме того, вызовы API становятся самодокументируемыми. Любой, кто читает код, сможет быстро понять, что делает каждый метод, не углубляясь в детали реализации.

Настройка и использование
Мы реализуем полный интерфейс CRUD и продемонстрируем его использование в приложении Minimal API. Сначала установим необходимые NuGet-пакеты:
Install-Package Refit
Install-Package Refit.HttpClientFactory


Теперь создадим интерфейс Refit:
using Refit;

public interface IBlogApi
{
[Get("/posts/{id}")]
Task<Post> GetPostAsync(int id);

[Get("/posts")]
Task<List<Post>> GetPostsAsync();

[Post("/posts")]
Task<Post> CreatePostAsync([Body] Post post);

[Put("/posts/{id}")]
Task<Post> UpdatePostAsync(int id, [Body] Post post);

[Delete("/posts/{id}")]
Task DeletePostAsync(int id);
}

public record Post(int Id, string Title, string Body, int UserId);

Мы определяем интерфейс IBlogApi с методами для CRUD-операций. Запись Post представляет сообщения в блоге.

Затем зарегистрируем Refit в DI-контейнере:
using Refit;

builder.Services
.AddRefitClient<IBlogApi>()
.ConfigureHttpClient(c => c.BaseAddress =
new Uri("https://jsonplaceholder.typicode.com"));


Наконец мы можем использовать IBlogApi в конечных точках Minimal API:
app.MapGet("/posts/{id}",
async (int id, IBlogApi api) =>
await api.GetPostAsync(id));

app.MapGet("/posts",
async (IBlogApi api) =>
await api.GetPostsAsync());

app.MapPost("/posts",
async ([FromBody] Post post, IBlogApi api) =>
await api.CreatePostAsync(post));

app.MapPut("/posts/{id}",
async (int id, [FromBody] Post post, IBlogApi api) =>
await api.UpdatePostAsync(id, post));

app.MapDelete("/posts/{id}",
async (int id, IBlogApi api) =>
await api.DeletePostAsync(id));


Мы создали полностью функциональный API, который взаимодействует с внешним сервисом, всего в нескольких строках кода. Никаких ручных HTTP-запросов, никакой обработки сырого JSON — Refit позаботится обо всём этом за нас.

Продолжение следует…

Источник:
https://www.milanjovanovic.tech/blog/refit-in-dotnet-building-robust-api-clients-in-csharp
1👍21


>>Click here to continue<<

.NET Разработчик




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)