Язык программирования C#9 и платформа .NET5
Шрифт:
var response = await
_client.GetAsync($"{_settings.Uri}{_settings.CarBaseUri}/{id}");
response.EnsureSuccessStatusCode;
var result = await response.Content.ReadFromJsonAsync<Car>;
return result;
}
public async Task<IList<Make>> GetMakesAsync
{
var response = await
_client.GetAsync($"{_settings.Uri}{_settings.MakeBaseUri}");
response.EnsureSuccessStatusCode;
var result = await response.Content.ReadFromJsonAsync<IList<Make>>;
return result;
}
Вызов HTTP-метода POST
Метод
Car
использует HTTP-метод POST
. Он применяет вспомогательный метод для отправки сущности в формате JSON и возвращает запись Car
из тела ответа. Вот его код:
public async Task<Car> AddCarAsync(Car entity)
{
var response = await PostAsJson($"{_settings.Uri}{_settings.CarBaseUri}",
JsonSerializer.Serialize(entity));
if (response == null)
{
throw new Exception("Unable to communicate with the service");
}
return await response.Content.ReadFromJsonAsync<Car>;
}
Вызов HTTP-метода PUT
Метод для обновления записи
Car
использует HTTP-метод PUT
. Он применяет вспомогательный метод для отправки записи Car
в формате JSON и возвращает обновленную запись Car
из тела ответа:
public async Task<Car> UpdateCarAsync(int id, Car entity)
{
var response = await PutAsJson($"{_settings.Uri}{_settings.CarBaseUri}/{id}",
JsonSerializer.Serialize(entity));
response.EnsureSuccessStatusCode;
return await response.Content.ReadFromJsonAsync<Car>;
}
Вызов HTTP-метода DELETE
Последний добавляемый метод предназначен для выполнения НТТР-метода
DELETE
. Шаблон соответствует остальным методам: использование вспомогательного метода и проверка ответа на предмет успешности. Он ничего не возвращает вызывающему коду, поскольку сущность была удалена. Ниже показан код метода:
public async Task DeleteCarAsync(int id, Car entity)
{
var response = await DeleteAsJson($"{_settings.Uri}{_settings.CarBaseUri}/{id}",
JsonSerializer.Serialize(entity));
response.EnsureSuccessStatusCode;
}
Конфигурирование
служб
Создайте в каталоге
ApiWrapper
проекта AutoLot.Service
новый файл класса по имени ServiceConfiguration.cs
. Приведите операторы using
к следующему виду:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
Сделайте класс открытым и статическим, после чего добавьте открытый статический расширяющий метод для
IServiceCollection
:
namespace AutoLot.Services.ApiWrapper
{
public static class ServiceConfiguration
{
public static IServiceCollection ConfigureApiServiceWrapper(
this IServiceCollection
services, IConfiguration config)
{
return services;
}
}
}
В первой строке расширяющего метода в контейнер DI добавляется
ApiServiceSettings
. Во второй строке в контейнер DI добавляется IApiServiceWrapper
и регистрируется класс с помощью фабрики HTTPClient
. Это позволяет внедрять IApiServiceWrapper
в другие классы, а фабрика HTTPClient
будет управлять внедрением и временем существования HTTPClient
:
public static IServiceCollection ConfigureApiServiceWrapper(this IServiceCollection
services, IConfiguration config)
{
services.Configure<ApiServiceSettings>(
config.GetSection(nameof(ApiServiceSettings)));
services.AddHttpClient<IApiServiceWrapper,ApiServiceWrapper>;
return services;
}
Откройте файл
Startup.cs
и добавьте следующий оператор using
:
using AutoLot.Services.ApiWrapper;
Перейдите к методу
ConfigureServices
и добавьте в него показанную ниже строку:
services.ConfigureApiServiceWrapper(Configuration);
Построение класса CarsController
Поделиться:
Популярные книги
Мастер...
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Жених из гроба
1. Гробокопательница
Фантастика:
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Ищу жену с прицепом
2. Спасатели
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Гримуар тёмного лорда I
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Заклятие предков
3. Ведун
Фантастика:
фэнтези
альтернативная история
8.49
рейтинг книги
Крепость над бездной
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Рота Его Величества
Новые герои
Фантастика:
боевая фантастика
8.55
рейтинг книги
Экспансия: Сотрудничество. Том 5
5. Планетарный десант
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Отверженный III: Вызов
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Князь Серединного мира
4. Страж
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 8
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Локки 7. Потомок бога
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 4
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00