Чтение онлайн

на главную - закладки

Жанры

Язык программирования 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

Поделиться:
Популярные книги

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Месть бывшему. Замуж за босса

Россиус Анна
3. Власть. Страсть. Любовь
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть бывшему. Замуж за босса

Безымянный раб

Зыков Виталий Валерьевич
1. Дорога домой
Фантастика:
фэнтези
9.31
рейтинг книги
Безымянный раб

Действуй, дядя Доктор!

Юнина Наталья
Любовные романы:
короткие любовные романы
6.83
рейтинг книги
Действуй, дядя Доктор!

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Невеста вне отбора

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
7.33
рейтинг книги
Невеста вне отбора

Темный Патриарх Светлого Рода 3

Лисицин Евгений
3. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 3

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Воин

Бубела Олег Николаевич
2. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.25
рейтинг книги
Воин

Барон не играет по правилам

Ренгач Евгений
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон не играет по правилам

Провинциал. Книга 4

Лопарев Игорь Викторович
4. Провинциал
Фантастика:
космическая фантастика
рпг
аниме
5.00
рейтинг книги
Провинциал. Книга 4

Возвращение Безумного Бога 4

Тесленок Кирилл Геннадьевич
4. Возвращение Безумного Бога
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Возвращение Безумного Бога 4

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон