URLと仲良くなりましょ
URLの文字列にどういう意味があって、どういった仕様になっているのかなんとなくでわかってる人が多かったので、ここで改めてURLを知っておきたい(ほしい)という気持ちをポエムに書き残しておきます。
僕の愛読書のNode.jsのドキュメントにわかりやすいURLの構成要素の図が書いてあります。まずはこちらを見てみましょう。
プロトコルは //
の前の :
で終わる文字列。Schemeと言われてたりもします。よく見るのは http:
だったり https:
ですがもちろんソレ以外にも file:
とかもソレに当たります。
//
の先にはベーシック認証のuserとpasswordが書くことができます。ブラウザでベーシック認証のプロンプトで認可しなくてもここに書けば認証は解けます。
ホストはご存知の通り hostname と port に分解できます。
ここまでがURLの オリジン 情報です。ここテストに出ます。
以降はパスとハッシュに続きます。URLクエリもパスに入るんですね。
クエリパラメータを省いた部分は pathname となってます。pathとpathnameは違うんです。
クエリは ?
を省いた部分です。?
の構文まで入れるとsearchと呼ばれています。
最後に#ハッシュ。ハッシュは #
も含む文字列になります。なので使うときはたいてい最初の一文字を hash.slice(1)
こんな感じで省いたりします。
それで、 ハッシュはサーバーには送られてこないんですよ。これ大事なことなので復唱してください。
ハッシュはあくまでもクライアントだけで扱っている情報なのでサーバーにはやってきません。
これを知らない人が意外にも多くて僕はおったまげーでした。
クライアントとサーバーをやる人じゃないと普通に生きてても意識しないレイヤーなのでいいのですが大事です。
ユニバーサルなエスピーエーのルーティングライブラリを書くときなんかもちゃんと意識したいですね。
以上、ポエムになります。
P.S. 並び順も大事だよ