URI設計(XHR)

firstアクセスでテンプレートを返却する場合と、XHRでJSONデータを取得する場合があると思う。(見た目上同じページでも) その際、特にXHR時にどうURI設計すればよいのだろうか。

url = pathname + '/load' のような専用URIにリクエストを飛ばす

  • controller側では、レスポンスのデータ構造が異なるだけになる。

query string に ajax=1 のようなパラメタを付与する

  • react-routerで、ゴミがくっついたような気がしなくもない。

api/foo/bar のような完全に独立したAPIを叩く(RESTful設計)

  • ロジックの本質は変わらない。叩くURIが変わるだけ。
  • HTTPメソッドは、リソースをどのように操作したいかを表す
  • URLはリソースの名前を表す
  • APIの処理の結果は、ステータス・コードで表す

RESTとは、アーキテクチャ・スタイルの一種で、「制約の集まり」と考えてよいだろう。何を制約するか? それは狭義では「どのようにHTTP通信を利用するか」を制約する。HTTPメッセージにはどのような情報を格納するか、どのようにHTTPメソッドやHTTPヘッダを指定するか、などといった制約の集まりがRESTである