6.23JSON 序列化与更多配置

框架通过 IHttpClientBuilder.ConfigureOptions() 扩展方法,支持为 HttpClient 自定义选项(如 JSON 序列化行为),并提供可注入服务解析的重载。示例如下:

HttpClientOptions 扩展配置(JSON 序列化)#

框架通过 IHttpClientBuilder.ConfigureOptions() 扩展方法,支持为 HttpClient 自定义选项(如 JSON 序列化行为),并提供可注入服务解析的重载。示例如下:

cs
// 配置默认客户端services.AddHttpClient(string.Empty)    .ConfigureOptions(options =>    // 或使用重载:.ConfigureOptions((options, serviceProvider) =>    {        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;    });// 配置特定客户端services.AddHttpClient("github")    .ConfigureOptions(options =>    // 或使用重载:.ConfigureOptions((options, serviceProvider) =>    {        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;    });

通过此配置,可为不同的 HTTP 客户端实例定制 JSON 序列化行为,满足特定远程请求的需求。

HttpClientOptions 包含以下属性:

  • 属性
    • JsonSerializerOptionsJSON 序列化配置(JsonSerializerOptions 类型)。
    • JsonResponseWrapper:指定 JSON 响应反序列化包装器(JsonResponseWrapper? 类型)。
    • UseJsonResponseWrapper:是否全局启用 JSON 响应反序列化包装器(bool 类型)。
    • HttpAccessTokenProviderAccess Token 提供器配置(IHttpAccessTokenProvider? 类型)。
    • HttpRequestEventHandlerHTTP 事件处理程序提供器配置(IHttpRequestEventHandler? 类型)。
    • QuotaLimits:接口调用配额限制配置(Dictionary<string, HttpQuotaLimit>? 类型)。

服务解析配置#

在全局配置 HttpClient 时,有时需要先解析依赖服务,再进行客户端配置。例如,以下示例通过解析配置服务来设置请求基地址:

cs
services.AddHttpClient(string.Empty, (serviceProvider, client) =>{    // 解析配置服务    var configuration = serviceProvider.GetRequiredService<IConfiguration>();    client.BaseAddress = new Uri(configuration["your-base-address"]);});

了解更多配置#

欲了解更多关于 HttpMessageHandlerSocketsHttpHandler 的配置,请查阅微软官方文档:

此外,框架底层通过 IHttpClientFactory 创建 HttpClient 实例,有关 IHttpClientFactory 的详细信息,请参阅微软官方文档: