RESTとはなにか
1.アーキテクチャスタイル
2.リソース
3.RESTの構成
3-1.クライアント/サーバ
概要
- クライアントとサーバーを分離
利点
- マルチプラットフォーム対応
→携帯電話、スマホ、タブレット、PCからアクセスできる - 可用性向上
→サーバー冗長化が可能 - 開発の効率化
→フロントエンド、バックエンドに機能を分離し、開発者の役割を明確化
3-2.ステートレスサーバ
概要
- アプリケーションの状態を管理しない
利点
- サーバーの実装が簡略化
- リクエストを返却後はすぐにリソース開放可能で、パフォーマンスが向上
懸念点
- セッション管理、認証するために「Cookie」を使用する場合が多い。
→REST的には間違っているが、すべてを満たしていなければならないわけではない。
3-3.キャッシュ
概要
- 一度使用したリソースをクライアント側で保持して、使いまわす
利点
- サーバーとクライアント間の通信料を減らせることでネットワーク帯域の利用、処理時間を短縮し、パフォーマンス向上
懸念点
- 古いキャッシュデータによる情報の信頼性の低下
3-4. 統一インターフェース
概要
- URIでリソースに対する操作(GET、POSTなど)を限定する(RESTの代表格)
利点
- サーバーとクライアントの独立性が向上することで、マルチプラットフォームに対応しやすくなる
3-5.階層化システム
概要
- システムを階層的に分離(プロキシサーバを介するなど)
利点
3-6.コードオンデマンド
概要
- サーバーからプログラムをダウンロードし、クライアント側で実行する。(JavaScript、Flashなど)
利点
- クライアントにあらかじめなくても、クライアント機能を後から拡張できる
懸念点
- HTTPのプロトコルの可視性が下がる
→通信の意味がJavaScriptのプログラムに依存する
4.ハイパーメディアとしてのREST
5.分散システムとしてのREST
負荷軽減
リンクによるアプリケーション状態が遷移するため、負荷が軽減される。
RPCなどはネットワーク越しの関数呼び出しが多く、1回のオーバーヘッドが大きい。バージョン管理
HTTP通信のため、分散オブジェクトのバージョンアップによるインターフェースの互換性に影響がない。HTTPのバージョンアップは下位互換性を保証
【WEBを支える技術】URI設計編~良いURI設計とは~ - WEB道楽
【WEBを支える技術】HTTP基礎編~シンプルさが標準化~ - WEB道楽