HttpClient Configuration
4/22/26Less than 1 minute
HttpClient Configuration
This section covers HttpClient Factory integration. WebApiClientCore fully supports all HttpClient configuration options.
Basic Configuration
services.AddHttpApi<IUserApi>().ConfigureHttpClient(httpClient =>
{
httpClient.Timeout = TimeSpan.FromMinutes(1d);
httpClient.DefaultRequestVersion = HttpVersion.Version20;
httpClient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
});Common Configuration Options
| Configuration | Description |
|---|---|
Timeout | Request timeout duration |
DefaultRequestVersion | Default HTTP version |
DefaultVersionPolicy | HTTP version negotiation policy |
BaseAddress | Base address (can replace HttpHost attribute) |
DefaultRequestHeaders | Default request headers |
Configuring Request Headers
services.AddHttpApi<IUserApi>().ConfigureHttpClient(httpClient =>
{
httpClient.DefaultRequestHeaders.Add("X-Custom-Header", "value");
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0");
});Shared HttpClient Configuration
If multiple interfaces need to share the same HttpClient configuration (such as BaseAddress, default headers, etc.), you can configure them uniformly during registration:
// Unified configuration for multiple interfaces
services.AddHttpApi<IUserApi>().ConfigureHttpClient(httpClient =>
{
httpClient.BaseAddress = new Uri("http://api.example.com/");
httpClient.Timeout = TimeSpan.FromSeconds(30);
});
services.AddHttpApi<IOrderApi>().ConfigureHttpClient(httpClient =>
{
httpClient.BaseAddress = new Uri("http://api.example.com/");
httpClient.Timeout = TimeSpan.FromSeconds(30);
});Tip: For complex shared configuration scenarios, consider encapsulating as extension methods or using a configuration center for unified management.
Typed HttpClient
services.AddHttpApi<IOrderApi>().ConfigureHttpClient((sp, client) =>
{
var config = sp.GetRequiredService<IConfiguration>();
client.BaseAddress = new Uri(config["ApiSettings:OrderApi:BaseUrl"]);
});