Язык программирования 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
Создайте в каталоге
ApiWrapper
AutoLot.Services
ApiServiceWrapper.cs
using
using 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;
Сделайте класс открытым и добавьте конструктор, который принимает экземпляр
HttpClient
IOptionsMonitor<ApiServiceSettings>
ServiceSettings
CurrentValue
IOptionsMonitor<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
Следующие методы являются оболочками для связанных методов
HttpClient
internal 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
Последний вспомогательный метод используется для выполнения НТТР-метода
DELETE
DELETE
HttpClient
HttpRequestMessage
Первым делом необходимо создать сообщение запроса с применением инициализации объектов для установки
Content
Method
RequestUri
internal 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
Есть четыре вызова НТТР-метода
GET
Car
Car
Make
Car
Make
GetAsync()
HttpResponseMessage
EnsureSuccessStatusCode()