LoginSignup
115

More than 5 years have passed since last update.

REST理論をわかりやすく。

Last updated at Posted at 2015-08-16

前提

抽象的な概念。具体化しづらいことが難しいと感じるが全然難しくない。結局何者なのか?と聞かれたら、Webアプリケーションの設計規約。

原則

  • ステートレスなクライアント/サーバープロトコル
  • 全ての情報(リソース)に適用できるHTTPメソッドのセット
  • リソースを一意に識別。
  • ハイパーメディア(リンクのこと)を使用

◯ ステートレスなクライアント/サーバープロトコル

ステートレスとは

RESTな考え方では、サーバーへのリクエストも、クライアントへのレスポンスもステートレスであることが必要。

◯ 全ての情報(リソース)に適用できるHTTPメソッドのセット

RESTな考え方では、リソースはそれぞれ固有のURIを持っており、それぞれのURIに対して、基本的に4つのHTTPメソッドでリクエストすることで、全てのリソースに対する操作を行う。4つのHTTPメソッドとは、

メソッド 役割
GET リソースの取得
POST リソースの新規作成
PUT 既存リソースの更新
DELETE リソースの削除

◯ リソースを一意に識別

RESTな考え方では、すべてのリソースはURIで表されるユニークなアドレスを持つ。

◯ ハイパーメディア(リンクのこと)を仕様

今では結構当たり前。パソコンのOSに保存された設定情報に依存せずにリソースにリクエストすること。つまり、どのパソコンでも同じレスポンスが返ってくるリンクをHTMLとかXMLに含める。

※ クッキーとセッションを用いたアプリケーションはRESTではない。

クッキーとセッションの仕組み

RESTはあくまで、固有のHTTPメッセージ(リクエスト/レスポンス)に対して、固有の表現を表示する。つまり、クライアント側はサーバーからのレスポンスをただ一意に読みこめば良い。逆にサーバー側もただ、クライアント側のリクエストを一意に返せば良い。しかし、クッキーとセッションの仕組みは、クライアント側(ブラウザ)にアクセスするためのクッキーを一時的に保存させてある。(だからログイン状態が保持される。)

つまり、HTTPレスポンスは同じでも、クライアント側がクッキーを保持していなければ、違う結果が表れてしまうという、RESTではない仕組みになっている。が、クッキーとセッションの仕組みはウェブアプリケーションにとって不可欠な仕組みである。

まとめ

  1. 全ての情報はリソースと表現
  2. リソースに対するURIは一意
  3. リソースを4つのHTTPメソッドで操作
  4. メッセージ(リクエスト/レスポンス)はステートレス
  5. OSの設定情報に依存しない

RESTfulとは?

RESTらしい〜Webサービス・システムのこと。

REST理論のメリット

  1. アプリケーション中のリソースがURIによって参照できる。
  2. ステートレスにすることで、スケーラビリティが向上(一番のメリット)
  3. シンプルで一貫性のある設計。リソースへの操作はCRUDの4種類という制約
  4. 標準的なデータフォーマット(XML/JSON)を扱うことでほかサービスとの連携が容易になる。
  5. REST理論に基づいたWEBアプリでは、インターフェースが固定されてるので、互換性の問題が発生しない。

RailsにおけるRESTfulとは? 

  1. 一つのモデルを、一つのリソースの集合(コンポーネント)と捉えている。
  2. RDBMS(Relational DataBase Management System)の作成/読み取り/更新/削除(CRUD)操作と、4つの基本的なHTTP requestメソッド(GET/POST/PUT/DELETE)の両方に対応している。

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
115