REST(Representational State Transfer)
REST(Representational State Transfer)
Webシステムアーキテクチャの原則を定義したもの
原則
- Client-server
- Stateless
- Cacheable
- Uniform
- interface
- Layered system
- Code-on-demand(optional)
こういう考え方にしたがって作ろうよっていうもの Webシステムのデザインといってよい
以下のものが求められている
- 可用性
- いつでもちゃんと返事が来る,応答待ちにならない
- スケーラビリティー
- 大量のリクエストを捌ける
- 耐故障性
- サーバ側でマシンが落ちていても構わない
WEB系企業が推奨しているけど、原則6個を全て使えとは言っていない。
原則6個が言っていること
- Client-server:ユーザインタフェースとデータストレージの関心事を分離
- ユーザインタフェースのポータビリティ、サーバのスケーラビリティ
- Stateless:リクエスト内にそれを理解するための情報を全て含み、サーバ側に状態を持たせない
- スケーラビリティ、監視の容易性、故障からの復帰の容易性
- ステートフルだとやりとりしていたサーバが落ちたら情報が消える。
- Cacheable:キャッシュ可能なものを明確に区別
- 効率、スケーラビリティ
- Uniform interface:単一インターフェースに統一
- 単純さ、インターフェースと機能の分離
- オブジェクト指向プログラミングのメソッドが沢山でてくる。
- インターフェースはGET、PUT、POST、DELETEの4種類にする。
- デザインをするのはGET、PUT、POST、DELETEのでしよう。
- Layered system: 階層構造による不要な詳細の隠蔽
- 複雑さの軽減、依存性の低減
- 自分の直下のレイヤーだけを知っていればいい
- Code-on-demand(optional):必要な機能の、クライアント側へのオンデマンドでの読み込み(オプション)
- 実行時の拡張性