6.23JSON 序列化与更多配置
框架通过 IHttpClientBuilder.ConfigureOptions() 扩展方法,支持为 HttpClient 自定义选项(如 JSON 序列化行为),并提供可注入服务解析的重载。示例如下:
HttpClientOptions 扩展配置(JSON 序列化)#
框架通过 IHttpClientBuilder.ConfigureOptions() 扩展方法,支持为 HttpClient 自定义选项(如 JSON 序列化行为),并提供可注入服务解析的重载。示例如下:
// 配置默认客户端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 包含以下属性:
- 属性:
JsonSerializerOptions:JSON序列化配置(JsonSerializerOptions类型)。JsonResponseWrapper:指定JSON响应反序列化包装器(JsonResponseWrapper?类型)。UseJsonResponseWrapper:是否全局启用JSON响应反序列化包装器(bool类型)。HttpAccessTokenProvider:Access Token提供器配置(IHttpAccessTokenProvider?类型)。HttpRequestEventHandler:HTTP事件处理程序提供器配置(IHttpRequestEventHandler?类型)。QuotaLimits:接口调用配额限制配置(Dictionary<string, HttpQuotaLimit>?类型)。
服务解析配置#
在全局配置 HttpClient 时,有时需要先解析依赖服务,再进行客户端配置。例如,以下示例通过解析配置服务来设置请求基地址:
services.AddHttpClient(string.Empty, (serviceProvider, client) =>{ // 解析配置服务 var configuration = serviceProvider.GetRequiredService<IConfiguration>(); client.BaseAddress = new Uri(configuration["your-base-address"]);});了解更多配置#
欲了解更多关于 HttpMessageHandler 和 SocketsHttpHandler 的配置,请查阅微软官方文档:
此外,框架底层通过 IHttpClientFactory 创建 HttpClient 实例,有关 IHttpClientFactory 的详细信息,请参阅微软官方文档: