ITypedHttpClientFactory<TClient> Interfejs
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Abstrakcja fabryki dla składnika, który może tworzyć wystąpienia klienta typu z konfiguracją niestandardową dla danej nazwy logicznej.
generic <typename TClient>
public interface class ITypedHttpClientFactory
public interface ITypedHttpClientFactory<TClient>
type ITypedHttpClientFactory<'Client> = interface
Public Interface ITypedHttpClientFactory(Of TClient)
Parametry typu
- TClient
Typ wpisanego klienta do utworzenia.
Przykłady
W tym przykładzie przedstawiono podstawowy wzorzec definiowania klasy klienta typu.
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();
}
}
W tym przykładzie pokazano, jak używać wpisanego klienta z oprogramowania pośredniczącego 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);
});
}
W tym przykładzie pokazano, jak używać typizowanego klienta z kontrolera 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");
};
}
Uwagi
Jest ITypedHttpClientFactory<TClient> to infrastruktura, która obsługuje AddHttpClient<TClient>(IServiceCollection, String) funkcje i AddTypedClient<TClient>(IHttpClientBuilder) . Ten typ należy rzadko używać bezpośrednio w kodzie aplikacji, zamiast tego pobierać GetService(Type) typowych klientów.
Wartość domyślną ITypedHttpClientFactory<TClient> można zarejestrować w obiekcie IServiceCollection przez wywołanie metody AddHttpClient(IServiceCollection). Wartość domyślna ITypedHttpClientFactory<TClient> zostanie zarejestrowana w kolekcji usług jako pojedyncza usługa typu open-generic.
Wartość domyślna ITypedHttpClientFactory<TClient> używa aktywacji typu do tworzenia typowych wystąpień klienta. Typizowane typy klientów nie są pobierane bezpośrednio z obiektu IServiceProvider. Aby uzyskać szczegółowe informacje, zobacz opis funkcji CreateInstance(IServiceProvider, Type, Object[]).
Metody
CreateClient(HttpClient) |
Tworzy typizowanego klienta przy użyciu skojarzonego elementu HttpClient. |