BaseAddress do HttpClient: uma análise mais detalhada
Este artigo esclarece o comportamento frequentemente mal compreendido da propriedade BaseAddress
de HttpClient
. Muitos desenvolvedores encontram resultados inesperados ao construir URIs usando um BaseAddress
parcialmente definido. Dissecaremos o problema e apresentaremos o uso correto para garantir que suas solicitações GET
sempre atinjam o objetivo pretendido.
O problema: construção inesperada de URI
Definindo BaseAddress
como "http://something.com/api" e depois usando "/resource/7" como o URI relativo em GetAsync
pode parecer que deveria resultar em "http://something.com/api/resource/7". No entanto, isso geralmente falha. Adicionar uma barra final ao BaseAddress
("http://something.com/api/") também não garante o sucesso.
A peça que falta: documentação e aplicação prática
Embora a documentação oficial mencione BaseAddress
como o "endereço base do recurso da web", falta orientação explícita sobre o papel crucial das barras. Através da experimentação, a solução fica clara:
BaseAddress
requer uma barra final (/).GetAsync
não deve começar com uma barra inicial (/).A implementação correta
O código a seguir demonstra a combinação bem-sucedida:
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");
}
Isso segmenta corretamente "http://something.com/api/resource/7".
Conclusão: dominando o BaseAddress para solicitações HTTP confiáveis
O uso eficaz do BaseAddress
do HttpClient
depende de uma compreensão precisa do posicionamento da barra. Seguindo as diretrizes descritas acima – uma barra final em BaseAddress
e nenhuma barra inicial no URI relativo – os desenvolvedores podem garantir um comportamento consistente e previsível em suas solicitações HTTP. Este detalhe aparentemente menor pode evitar dores de cabeça significativas na depuração.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3