HttpClient の BaseAddress: 詳細
この記事では、HttpClient
の BaseAddress
プロパティのよく誤解される動作を明確にします。 多くの開発者は、部分的に定義された BaseAddress
を使用して URI を構築するときに、予期しない結果に遭遇します。問題を詳しく分析し、GET
リクエストが常に意図したターゲットに到達するように、正しい使用方法を示します。
問題: 予期しない URI の構築
BaseAddress
を「http://something.com/api」に設定し、GetAsync
で相対 URI として「/resource/7」を使用します。 「http://something.com/api/resource/7」という結果になるように思われるかもしれません。 ただし、これは通常失敗します。 BaseAddress
(「http://something.com/api/」) に末尾のスラッシュを追加しても、成功は保証されません。
欠けている部分: ドキュメントと実用化
公式ドキュメントには、BaseAddress
が「Web リソースのベース アドレス」として記載されていますが、スラッシュの重要な役割についての明確なガイダンスが欠けています。 実験を通じて、解決策は明らかになります:
BaseAddress
には末尾のスラッシュ (/) が必要です。GetAsync
の相対 URI は、先頭のスラッシュ (/) で始めるべきではありません。正しい実装
次のコードは、成功した組み合わせを示しています:
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 リクエストの BaseAddress をマスターする
HttpClient
の BaseAddress
を効果的に使用するには、スラッシュの配置を正確に理解する必要があります。 上記のガイドライン (BaseAddress
に末尾のスラッシュを使用し、相対 URI に先頭のスラッシュを入れない) に従うことで、開発者は HTTP リクエストで一貫性のある予測可能な動作を保証できます。 この一見些細な詳細により、重大なデバッグの問題を防ぐことができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3