Используйте разные именованные клиенты или типизированные клиенты для определения отдельных логических HttpClient
конфигураций.
ИЛИ
При настройке политик с использованием IHttpClientFactory
вы можете использовать .AddPolicyHandler(...)
перегрузки или .AddPolicyHandlerFromRegistry(...)
перегрузки , которые позволяют выбирать политику на основе информации в HttpRequestMessage
. Это может позволить изменять политики, применяемые для разных запросов.
Чтобы взять пример из документации Polly и HttpClientFactory , одним из вариантов использования может быть применение политики Retry только к запросам GET, но не другие http глаголы:
var retryPolicy = HttpPolicyExtensions
.HandleTransientHttpError()
.WaitAndRetryAsync(new[]
{
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(10)
});
var noOpPolicy = Policy.NoOpAsync().AsAsyncPolicy<HttpResponseMessage>();
services.AddHttpClient(/* etc */)
// Select a policy based on the request: retry for Get requests, noOp for other http verbs.
.AddPolicyHandler(request => request.Method == HttpMethod.Get ? retryPolicy : noOpPolicy);