Класс клиента API в C#
Класс-обёртка принимает HttpClient извне
(удобно для тестов и переиспользования
соединений) и скрывает шаблоны URI. Метод
GetUserAsync подставляет id в путь и
возвращает готовый DTO.
Вызов для пользователя 1 печатает его
идентификатор и имя - те же данные, что при
прямом GetFromJsonAsync, но точка
входа программы короче:
using System.Net.Http.Json;
using System.Text.Json.Serialization;
using HttpClient http = new();
var api = new UserApiClient(http);
UserDto? user = await api.GetUserAsync(1);
Console.WriteLine(user?.Id);
Console.WriteLine(user?.Name);
record UserDto(
[property: JsonPropertyName("id")] int Id,
[property: JsonPropertyName("name")] string Name);
class UserApiClient
{
private readonly HttpClient http;
public UserApiClient(HttpClient httpClient) => http = httpClient;
public Task<UserDto?> GetUserAsync(int id) =>
http.GetFromJsonAsync<UserDto>($"https://jsonplaceholder.typicode.com/users/{id}");
}
Адрес в методе собран целиком, с идентификатором
в пути. Готовый HttpClient приходит
в конструктор, и запрос идёт через него.
Добавьте в клиент метод списка пользователей. Выведите в консоль, сколько записей пришло.