レッスン 1
URL コンポーネント
URL をスキーム、ホスト、ポート、パス、クエリ、フラグメントに分解します。
URL は単なる文字列ではなく、構造化されたアドレスです。解釈する前にコンポーネントを分けると、デバッグが容易になります。
https://api.example.com:8443/v1/items?q=blue&page=2#results
この URL には次が含まれます。
- スキーム:
https - ホスト:
api.example.com - ポート:
8443 - パス:
/v1/items - クエリ:
q=blue&page=2 - フラグメント:
results
スキーム
スキームはクライアントに URL の残りの解釈方法を伝えます。https、http、mailto、file はそれぞれ異なる規則を意味します。
ホストとポート
ホストはサーバーを識別します。ポートはネットワークポートを選択します。HTTPS の 443 などのデフォルトポートは表示で省略されることが多いですが、ローカル開発やサービスデバッグでは明示的なポートが重要です。
パス
パスはホスト内のリソースを識別します。階層的なので、/users/42 と /users/42/ はサーバーによって異なる場合があります。
クエリ
クエリは ? の後に始まり、フィルター、ページネーション、ソート順、トラッキングフィールド、OAuth state をよく運びます。繰り返しキーや空値の解釈が異なるため、クエリ解析は常に万能ではありません。
フラグメント
フラグメントは # の後に始まります。ブラウザはクライアント側で使い、通常 HTTP リクエストでサーバーに送りません。サーバーがリンクの一部を見えない理由をデバッグするときに重要です。
各コンポーネントを境界として扱いましょう。ほとんどの URL バグは、誤った境界でのエンコーディングまたは再構築から生じます。