RESTとは
REST(REpresentational State Transfer)とは、Webサービスにおけるアーキテクチャスタイルの一つです。
###アーキテクチャスタイルとは
アーキテクチャを決めるための設計指針です。
闇雲に設計せずに指針に沿って設計すればいい感じにできるよ〜、ってやつです。
そもそもアーキテクチャとは構造のことで、実際に具現化されたものを指します。
webで例えるとURLやHTML、ブラウザなどがアーキテクチャに当たります。
そう!今皆さんが開いてるブラウザもRESTに基づいて作られているんです!
家の建築を例に出すと、家の設計指針がアーキテクチャスタイル、トイレや玄関、リビングなどがアーキテクチャに当たります。
更に言えば
「友人を呼んで、ホームパーティに適した家を作りたい」という**アーキテクチャスタイル(設計指針)があったとしたら、それに基づきリビングは広くして、テラスもつけて、間取りは南向きにする・・・などのアーキテクチャ(構造)**を決める
が建築による設計の流れになります。
このweb版がRESTなんですね〜。
##何でRESTを使うと良いの?
- アプリケーション中のリソースがURIによって参照できる。
- ステートレスにすることで、スケーラビリティが向上(一番のメリット)
- シンプルで一貫性のある設計。リソースへの操作はCRUDの4種類という制約
- 標準的なデータフォーマット(XML/JSON)を扱うことでほかサービスとの連携が容易になる。
- REST理論に基づいたWEBアプリでは、インターフェースが固定されてるので、互換性の問題が発生しない。
引用元:REST理論をわかりやすく。
https://qiita.com/geshi/items/5275cc9d089105625c5f
ほとんどのWebサービスがRESTを採用しており、互換性に問題が生じません。
多くのWebサービスの目的は**「大勢にサービスを使ってもらう」**ことです。特に理由がなければ、普及され、洗練された設計指針である「REST」を採用するのが安定なんですかね。
リソース
RESTを語る上で必須になるのがリソースです。
リソースを一言で表現すると**「Web上に存在する、名前を持ったありとあらゆる情報」**。
具体的にはURIのことです。
以下の特徴を持っています。
- リソースとは、Web 上の情報である
- 世界中の無数のリソースは、それぞれ URI で一意の名前を持つ
- URI を用いることで、プログラムはリソースが表現する情報にアクセスできる
以上がRESTの説明でした!
###RESTには6つのアーキテクチャスタイルが含まれている
更に深掘ると、実は6つのアーキテクチャスタイルで構成されています。
以下の章で解説していきます。
構成する6つのアーキテクチャスタイル
##クライアント/サーバー
クライアントとサーバー間でリソースのやりとりをすることです。
##ステートレスサーバー
サーバーがクライアントの情報を保持しないことです。
情報を保持しないことでサーバーの実装が簡素化します。
##キャッシュ
一度得たリソースをクライアント側で保存し、使い回す仕組みです。
例えば、一度開いたことのあるWebページを再度訪問する時、キャッシュにあるCSSが読み込まれて高速でページが表示される感じです。
##統一インターフェース
リソースをリクエストする際、HTTPメソッドを指定してリソースを限定すること。
つまり、リクエストの際に、URLだけでなくHTTPメソッド(GETやPOSTなど)を指定することができます。
HTTPメソッドは8個しかないシンプルな構造。
##階層化システム
クライアントとサーバー間にプロキシなどの中継サーバーを設置することです。
例えば、ロードバランサーを間に挟むことで、サーバーへの負荷が軽減しリスクを減らすことができます。
##コードオンデマンド
プログラムをクライアントがサーバーから受け取り、クライアント上で実行することです。
JavaScriptやFlashなどがこれに当たります。
都度都度、サーバーに通信することが無く、クライアント側で処理するため、処理の速度が向上します。
最後まで読んで頂きありがとうございました!