ITypedHttpClientFactory<TClient> Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Abstrakce továrny pro komponentu, která může vytvořit zadané instance klienta s vlastní konfigurací pro daný logický název.
generic <typename TClient>
public interface class ITypedHttpClientFactory
public interface ITypedHttpClientFactory<TClient>
type ITypedHttpClientFactory<'Client> = interface
Public Interface ITypedHttpClientFactory(Of TClient)
Parametry typu
- TClient
Typ klienta, který se má vytvořit.
Příklady
Tato ukázka ukazuje základní vzor pro definování typované klientské třídy.
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();
}
}
Tato ukázka ukazuje, jak využívat typovaného klienta z ASP.NET Core middlewaru.
// 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);
});
}
Tato ukázka ukazuje, jak využívat klienta typu z kontroleru ASP.NET Core MVC.
// 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");
};
}
Poznámky
Jedná se o ITypedHttpClientFactory<TClient> infrastrukturu AddHttpClient<TClient>(IServiceCollection, String) , která podporuje funkce a AddTypedClient<TClient>(IHttpClientBuilder) . Tento typ by se měl zřídka používat přímo v kódu aplikace, místo toho se používá GetService(Type) k načtení klientů typu.
Výchozí hodnotu ITypedHttpClientFactory<TClient> lze zaregistrovat v objektu IServiceCollection voláním AddHttpClient(IServiceCollection). Výchozí hodnota ITypedHttpClientFactory<TClient> bude zaregistrovaná v kolekci služeb jako jednoúčelová otevřená obecná služba.
Výchozí nastavení ITypedHttpClientFactory<TClient> používá aktivaci typu k vytvoření zadaných instancí klientů. Zadané typy klientů se nenačtou přímo z objektu IServiceProvider. Podrobnosti viz CreateInstance(IServiceProvider, Type, Object[]).
Metody
CreateClient(HttpClient) |
Vytvoří typ klienta s přiřazeným objektem HttpClient. |