ITypedHttpClientFactory<TClient> Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Абстракция фабрики для компонента, который может создавать типизированные экземпляры клиента с пользовательской конфигурацией для заданного логического имени.
generic <typename TClient>
public interface class ITypedHttpClientFactory
public interface ITypedHttpClientFactory<TClient>
type ITypedHttpClientFactory<'Client> = interface
Public Interface ITypedHttpClientFactory(Of TClient)
Параметры типа
- TClient
Тип создаваемого типизированного клиента.
Примеры
В этом примере показан базовый шаблон для определения типизированного класса клиента.
class ExampleClient
{
private readonly HttpClient _httpClient;
private readonly ILogger _logger;
// typed clients can use constructor injection to access additional services
public ExampleClient(HttpClient httpClient, ILogger<ExampleClient> logger)
{
_httpClient = httpClient;
_logger = logger;
}
// typed clients can expose the HttpClient for application code to call directly
public HttpClient HttpClient => _httpClient;
// typed clients can also define methods that abstract usage of the HttpClient
public async Task SendHelloRequest()
{
var response = await _httpClient.GetAsync("/helloworld");
response.EnsureSuccessStatusCode();
}
}
В этом примере показано, как использовать типизированный клиент из ПО промежуточного слоя ASP.NET Core.
// in Startup.cs
public void Configure(IApplicationBuilder app, ExampleClient exampleClient)
{
app.Run(async (context) =>
{
var response = await _exampleClient.GetAsync("/helloworld");
await context.Response.WriteAsync("Remote server said: ");
await response.Content.CopyToAsync(context.Response.Body);
});
}
В этом примере показано, как использовать типизированный клиент из контроллера MVC ASP.NET Core.
// in Controllers/HomeController.cs
public class HomeController : ControllerBase(IApplicationBuilder app, ExampleClient exampleClient)
{
private readonly ExampleClient _exampleClient;
public HomeController(ExampleClient exampleClient)
{
_exampleClient = exampleClient;
}
public async Task<IActionResult> Index()
{
var response = await _exampleClient.GetAsync("/helloworld");
var text = await response.Content.ReadAsStringAsync();
return Content("Remote server said: " + text, "text/plain");
};
}
Комментарии
— ITypedHttpClientFactory<TClient> это инфраструктура, которая поддерживает AddHttpClient<TClient>(IServiceCollection, String) функции и AddTypedClient<TClient>(IHttpClientBuilder) . Этот тип редко следует использовать непосредственно в коде приложения. Вместо этого используйте GetService(Type) для получения типизированных клиентов.
По умолчанию ITypedHttpClientFactory<TClient> можно зарегистрировать в методе IServiceCollection .AddHttpClient(IServiceCollection) Значение по умолчанию ITypedHttpClientFactory<TClient> регистрируется в коллекции служб как одноэлементная универсальная служба с открытым типом.
По умолчанию ITypedHttpClientFactory<TClient> для создания типизированных экземпляров клиента используется активация типа. Типизированные типы клиентов не извлекаются непосредственно из IServiceProvider. Дополнительные сведения см. в разделе CreateInstance(IServiceProvider, Type, Object[]).
Методы
CreateClient(HttpClient) |
Создает типизированный клиент для связанного объекта HttpClient. |