URIはリソースを表現する名詞にする
URIにはメソッド名、セッションIDなどは含めないようにしよう。
プログラミング言語に依存した拡張子なども含めないようにするべき。
拡張子でファイルの性質を表現することもありっちゃあり
https://example.test/text.ja
https://example.test/text.en
というようにしてリソースを分けることもして良いらしい。
マトリクスURI
階層構造を表現するスラッシュの代わりに、;で区切ってリソースを表現することができる。
https://example.test/hoge/par1=1234;par2=5678
セミコロンで区切っても良いということは知らなかった・・・。
HTTP通信の流れ
1.クライアントがリクエストを作成する
2.ネット接続からDNSを利用して名前解決を行う
3.NSからNSをまたぎ、目的のホストを見つける
4.見つけたらそこに対してリクエストがたどり着く
5.ホストはリクエストの内容によってレスポンスを元の経路を辿って返す
6.例えばhtmlが返ってきたときに、スタイルシートや画像などのリソース元が書いている場合は手元のコンテンツが十分になるまでクライアントはリクエストを発行し続ける。
HTTPメソッド
DELETEの冪等性
1回目のリクエストでリソース削除が成功し、200が返ってきて
2回目のリクエストではリソースが存在していないので404が返ってくるが
両方ともリソースは削除されている(存在していない)という同じ情報を受け取っているので冪等性があると言える。
また、エイリアスリソースのような特殊なリソース(リソースの中身が状況によって変化するようなリソース)は特別な理由がない限りは削除しないようにするべきである。
PUTの冪等性
リソース内容の相対的な差分を送信すると、PUTは冪等性をなくす。なるべく完全な表現を送信するようにするべき。