ITypedHttpClientFactory<TClient> Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Eine Abstraktion der Zuordnungsinstanz für eine Komponente, die typisierte Clientinstanzen mit benutzerdefinierter Konfiguration für einen angegebenen logischen Namen erstellen kann.
generic <typename TClient>
public interface class ITypedHttpClientFactory
public interface ITypedHttpClientFactory<TClient>
type ITypedHttpClientFactory<'Client> = interface
Public Interface ITypedHttpClientFactory(Of TClient)
Typparameter
- TClient
Der Typ des typisierten Clients, der erstellt werden soll.
Beispiele
Dieses Beispiel zeigt das grundlegende Muster zum Definieren einer typisierten Clientklasse.
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();
}
}
In diesem Beispiel wird gezeigt, wie Sie einen typisierten Client aus einer ASP.NET Core Middleware nutzen.
// 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);
});
}
In diesem Beispiel wird gezeigt, wie Sie einen typisierten Client von einem ASP.NET Core MVC-Controller nutzen.
// 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");
};
}
Hinweise
Die ITypedHttpClientFactory<TClient> ist Eine Infrastruktur, die die AddHttpClient<TClient>(IServiceCollection, String) Funktionalität und AddTypedClient<TClient>(IHttpClientBuilder) unterstützt. Dieser Typ sollte selten direkt im Anwendungscode verwendet werden. Verwenden Sie GetService(Type) stattdessen zum Abrufen von typisierten Clients.
Ein Standardwert ITypedHttpClientFactory<TClient> kann in einem IServiceCollection registriert werden, indem aufgerufen AddHttpClient(IServiceCollection)wird. Der Standardwert ITypedHttpClientFactory<TClient> wird in der Dienstsammlung als singleton open-generic-Dienst registriert.
Die Standardeinstellung ITypedHttpClientFactory<TClient> verwendet die Typaktivierung, um typisierte Clientinstanzen zu erstellen. Typisierte Clienttypen werden nicht direkt aus der IServiceProviderabgerufen. Einzelheiten dazu finden Sie unter CreateInstance(IServiceProvider, Type, Object[]).
Methoden
CreateClient(HttpClient) |
Erstellt einen typisierten Client, wenn eine zugeordnete HttpClient-Klasse vorliegt. |