LoginSignup
16
14

More than 5 years have passed since last update.

RESTfulなアーキテクチャの基本的な考え方とは

Last updated at Posted at 2015-03-19

RailsではRESTfulなアーキテクトを採用しているということですが
このよく聞くRESTfulという言葉をよくわかっていなかったので
railsチュートリアルの図を引用してメモをします。

railsチュートリアルから図を引用

HTTPリクエスト URL アクション 用途
GET /users index すべてのユーザーを表示するページ
GET /users/1 show id=1のユーザーを表示するページ
GET /users/new new ユーザーを新規作成するページ
POST /users create ユーザーを作成するアクション
GET /users/1/edit edit id=1のユーザーを編集するページ
PATCH /users/1 update id=1のユーザーを更新するアクション
DELETE /users/1 destroy id=1のユーザーを削除するアクション

上記の例であれば、/users/1という同じURLが3つあります。

それぞれの役割に、showupdatedestroyと、異なるアクションを紐づけていますが
同一のURLとなっています。

現在使われているHTTPリクエストメソッドは、GETPOSTのため
普通は、showアクションは/users_show/1、updateアクションは/users_update/1
destroyアクションは/users_destroy/1とかのURLを考えますよね。

昔Django(pythonのwebフレームワーク)でアプリを作った時は実際にそうしてました。

でもそうするとurlを管理するファイルの中がアクションの数によっては大変なことになったのを
記憶しています。

それに、url文字列をmatchさせてアクション(Djangoであればviewですね)に紐づけるので
似たようなURLをたくさんつくると、場合によっては意図していなかったアクションにマッチ
してしまい、別な処理が走ったことなどがあり、結構焦ったことがあります。

RESTfulなアーキテクチャの場合、URLは同一のものを使うかわりに、HTTPリクエストメソッドに
それぞれ、GETPATCHDELETEを使って異なるアクションに結びつけるようです。

こうすることでURLを名詞とし、HTTPリクエストメソッドを動詞とすることができ
シンプルにURLをいろいろなアクションに結びつけることができるようになります。

実際にrailsでメソッドとアクションを紐づけるファイルconfig/routes.rbを見ると
ファイルの中が非常にシンプルで、Djangoで苦労した時のことを思い出したと同時にホッと
しました。

ところで、現在のブラウザにはPATCHやDELETEといったメソッドはないようです。

Railsは存在しないHTTPメソッドを存在するかのように見せかけ
RESTfulなアーキテクチャの実装を実現しているようです。

16
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14