学んだこと
REST とは?
- Reprisentational State Transfer の略
- WEB サービスの設計モデルの 1 つ
REST の制約
- クライアント・サーバ
- クライアントとサーバを分離し、関心の分離を行う。
- クライアントは UI の責任、サーバはデータの保存と操作にそれぞれ責任を持たせる。
- 関心の分離を行うことで、サーバとクライアント別々で拡張性・保守性を高めることができる。
- 例えばサーバ側の API を変更せずに、スマートフォンや PC 上でアプリケーションを動作することができる。
- ステートレス
- サーバはクライアントの状態を持ってはいけない。
- 例として、クライアント側が異なるリクエストをサーバに送った場合
- サーバはクライアントの状態を見ずに、そのままデータだけ返すこと。
- 逆にクライアントは、すべての情報をリクエストとしてサーバに送る必要がある。
- 単一のリクエストを送るため、ログ監視が簡単になる。
- スケーラビリティの向上
- サーバ台数を増やし、サーバ自体にクライアントの状態を持ってしまうとどうなるか
- クラアントとサーバが通信する際、クライアントの状態を保持されてないサーバにアクセスする可能性がある。
- サーバの処理結果がサーバ毎に異なる可能性が出る。
- 統一インターフェース
- ルールを統一して、異なるアーキテクチャ間での通信を簡単にする。
- 各種メソッドの意味(GET であればリソースを取得、POST であればリソースを送信するなど)に合う処理を行うようにする。
- キャッシュ
- 階層化システム
- 各コンポーネントは、隣接する階層以外のコンポーネントを見ることができない。
- コードオンデマンド
- クライアントで実行可能なコードが、クライアントの機能拡張を可能にする。
リソース指向の考え方
- RESTAPI ではメソッドとエンドポイントで成り立っている。
- メソッド
- エンドポイント(URI)
- 例:GitHub のブランチ一覧を取得時、以下のエンドポイントを指定。
/repos/{owner}/{repo}/branches
URL と URI の違い
URL
- UniformResourceLocator の略
- URI の一種で、リソースの場所を特定する文字列を指す。
URI
- UniformResourceIdentifer の略
- リソースを識別するための文字列を指す。
URL の例
https://www.example.com/index.html
という URL の場合
https://www.example.com
という WEB サイトのindex.html
を特定するための URL。
You May Also Enjoy
less than 1 minute read
学んだこと