Foreverly

メモ帳

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):必要な機能の、クライアント側へのオンデマンドでの読み込み(オプション)
    • 実行時の拡張性