Использование Flurl в веб-сервисе для обработки вызовов на сторонний сервис - PullRequest
1 голос
/ 14 февраля 2020

Я хотел представить вам ситуацию, чтобы подумать об использовании Flurl; если я разработал API-интерфейс restful, который предназначен для поддержки аутентификации и сеансов от нескольких пользователей, и вы участвуете в работе службы restful, то это то, что ей необходимо совершать аутентифицированные вызовы другой внешней службе. Если бы я использовал стандартную реализацию flurl для асинхронного вызова из строкового URL-адреса и если мне нужно было установить разные заголовки в зависимости от пользователя, который прошел аутентификацию в моем сервисе, это вызвало бы непредсказуемое поведение из-за использования одного httpclient (поскольку все они вызывают тот же хост).

1 Ответ

1 голос
/ 14 февраля 2020

Делать так, как вы описываете, совершенно безопасно. Свободно устанавливая заголовки вне строки URL или объекта Url, они будут применяться к запросу , а не к клиенту. Пример:

await url.WithHeader(name, value).PostAsync(body);

Этот вызов может выполняться миллион раз из разных потоков с разными значениями заголовка и одного общего экземпляра HttpClient без конфликтов. Это работает, потому что под капотом он устанавливает заголовок на HttpRequestMessage, а не заголовки по умолчанию на HttpClient.

...