/// <summary> /// 获取服务配置(如未初始化则先初始化) /// </summary> /// <param name="services"></param> /// <returns></returns> public static IHttpServiceConfiguration ServiceConfigure(this IServiceCollection services) { var configuration = (IHttpServiceConfiguration)services .FirstOrDefault(x => x.ServiceType == typeof(IHttpServiceConfiguration))?.ImplementationInstance; if (configuration == null) { configuration = new HttpServiceConfiguration(); services.AddSingleton(configuration); } return(configuration); }
private static void ConfigureBaseJsonHttpClient(System.Net.Http.HttpClient client, HttpServiceConfiguration config) { client.BaseAddress = config.Url; client.Timeout = config.RequestTimeout; client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip")); client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate")); }
/// <summary> /// Configure Json HttpClient. /// </summary> /// <param name="services"></param> /// <param name="serviceConfiguration"></param> /// <param name="policyConfiguration"></param> /// <typeparam name="TClient"></typeparam> /// <typeparam name="TImplementation"></typeparam> /// <returns>Configured IHttpClientBuilder</returns> public static IHttpClientBuilder ConfigureJsonHttpClient <TClient, TImplementation>(this IServiceCollection services, HttpServiceConfiguration serviceConfiguration, PolicyConfiguration policyConfiguration = default) where TClient : class where TImplementation : class, TClient { if (serviceConfiguration is null) { throw new ArgumentNullException(nameof(serviceConfiguration)); } if (policyConfiguration is null) { throw new ArgumentNullException(nameof(policyConfiguration)); } return(services.AddHttpClient <TClient, TImplementation>(client => ConfigureBaseJsonHttpClient(client, serviceConfiguration)) .SetupHandlersAndPolicies(policyConfiguration)); }