BaseAddress HttpClient: более пристальный взгляд
В этой статье разъясняется часто неправильно понимаемое поведение свойства HttpClient
BaseAddress
объекта объекта. Многие разработчики сталкиваются с неожиданными результатами при создании URI с использованием частично определенного
BaseAddress. Мы разберем проблему и представим правильное использование, чтобы ваши запросы
GET
Проблема: неожиданная конструкция URI
Установка для параметра
BaseAddress значения «http://something.com/api», а затем использование «/resource/7» в качестве относительного URI в
GetAsync может показаться, что в результате должно получиться "http://something.com/api/resource/7". Однако обычно это не удается. Добавление косой черты в конце к
BaseAddress («http://something.com/api/
Недостающая часть: документация и практическое применение
Хотя в официальной документации
BaseAddress
BaseAddress требует завершающей косой черты (/).Относительный URI в
GetAsync не должен не начинаться с косой черты (/).Правильная реализация
Следующий код демонстрирует успешную комбинацию:
using (var handler = new HttpClientHandler())
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri("http://something.com/api/");
var response = await client.GetAsync("resource/7");
}
Это правильно нацелено на "http://something.com/api/resource/7
".Вывод: освоение базового адреса для надежных HTTP-запросов
Эффективное использование
HttpClient
BaseAddress объекта
зависит от точного понимания расположения косой черты. Следуя рекомендациям, изложенным выше (конечная косая черта в
и отсутствие косой черты в относительном URI), разработчики могут обеспечить согласованное и предсказуемое поведение своих HTTP-запросов. Эта, казалось бы, незначительная деталь может предотвратить серьезные проблемы с отладкой.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3