Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
namespace AutoLot.Services.ApiWrapper{ public interface IApiServiceWrapper { Task<IList<Car>> GetCarsAsync(); Task<IList<Car>> GetCarsByMakeAsync(int id); Task<Car> GetCarAsync(int id); Task<Car> AddCarAsync(Car entity); Task<Car> UpdateCarAsync(int id, Car entity); Task DeleteCarAsync(int id, Car entity); Task<IList<Make>> GetMakesAsync(); }}Класс ApiServiceWrapper
Создайте в каталоге
ApiWrapperAutoLot.ServicesApiServiceWrapper.csusingusing System;using System.Collections.Generic;using System.Net.Http;using System.Net.Http.Json;using System.Text;using System.Text.Json;using System.Threading.Tasks;using AutoLot.Models.Entities;using Microsoft.Extensions.Options;Сделайте класс открытым и добавьте конструктор, который принимает экземпляр
HttpClientIOptionsMonitor<ApiServiceSettings>ServiceSettingsCurrentValueIOptionsMonitor<Service Settings>public class ApiServiceWrapper : IApiServiceWrapper{ private readonly HttpClient _client; private readonly ApiServiceSettings _settings; public ApiServiceWrapper(<b>HttpClient client</b>, IOptionsMonitor<ApiServiceSettings> settings) { _settings = settings.CurrentValue; _client = client; _client/BaseAddress = new Uri(_settins.Uri); }}На заметку! В последующих разделах содержится много кода без какой-либо обработки ошибок. Поступать так настоятельно не рекомендуется! Обработка ошибок здесь опущена из-за экономии пространства.
Внутренние поддерживающие методы
Класс содержит четыре поддерживающих метода, которые применяются открытыми методами.
Вспомогательные методы для POST и PUT
Следующие методы являются оболочками для связанных методов
HttpClientinternal async Task<HttpResponseMessage> PostAsJson(string uri, string json){ return await _client.PostAsync(uri, new StringContent(json, Encoding.UTF8, "application/json"));}internal async Task<HttpResponseMessage> PutAsJson(string uri, string json){ return await _client.PutAsync(uri, new StringContent(json, Encoding.UTF8, "application/json"));}Вспомогательный метод для DELETE
Последний вспомогательный метод используется для выполнения НТТР-метода
DELETEDELETEHttpClientHttpRequestMessageПервым делом необходимо создать сообщение запроса с применением инициализации объектов для установки
ContentMethodRequestUriinternal async Task<HttpResponseMessage> DeleteAsJson(string uri, string json){ HttpRequestMessage request = new HttpRequestMessage { Content = new StringContent(json, Encoding.UTF8, "application/json"), Method = HttpMethod.Delete, RequestUri = new Uri(uri) }; return await _client.SendAsync(request);}Вызовы HTTP-метода GET
Есть четыре вызова НТТР-метода
GETCarCarMakeCarMakeGetAsync()HttpResponseMessageEnsureSuccessStatusCode()