はじめに
RESTとREST APIについて学んだことを簡単にまとめていきたいと思います。
RESTについて
RESTはREpresentational State Transferの略で、分散型システムにおける設計原則群(設計ルール)のことをいいます。
RESTにはREST原則と呼ばれる、下記6種類の原則があります。
- クライアント/サーバー制約
- ステートレス
- キャッシュ制御
- 統一インターフェース
- 階層化システム
- コードオンデマンド
これら6種類の原則について簡単に説明したいと思います。
クライアント/サーバー制約
クライアントとサーバーが依存することなく、
互いに独立して影響し合わない構造にするという考え方です。
画面とデータで関心事が分離されるため、
どちらか一方が変更されても影響を受けにくくなります。
基本的には、クライアント側がトリガーとなり、サーバー側が受け身となります。
ステートレス
クライアントのアプリケーション状態をサーバー側で持たないことを指します。
以前のリクエストやトランザクションとの関連性や依存関係を持たないため、
各リクエスト内に処理を完結させるのに必要な情報を全て保持させます。
キャッシュ制御
クライアント側でのキャッシュ機能を利用し、
クライアントとサーバー間の通信のオーバーヘッドを減らすよう設計を行います。
キャッシュを有効活用することで、リソースを効率化することが出来ますが、
古いデータを使用する可能性があり、信頼性が低下する恐れもあります。
統一インターフェイス
リソース(Web上にあるデータ)へのアクセスには、一意なURIによってアクセスし、
リソースの操作に関してはHTTPプロトコルのメソッド(DELETE,PUT,POST,GET等)を用いて操作を行います。
システムアーキテクチャ全体が簡素化され、分かりやすくなるといったメリットがあります。
階層化システム
クライアントとサーバ間にロードバランサを設置して負荷分散をしたり、
プロキシを設置してアクセスを制限をする等して、階層構築するアーキテクチャスタイルです。
各システムごとに役割を決めて独立させることで、
変更や再利用しやするなるメリットがあります。
コードオンデマンド
プログラムコードをサーバーからダウンロードして、
クライアント側で実行するアーキテクチャを指します。
ダウンロードしたブログラムをクライアント側で実行することで、新たな機能追加ができ、
サーバーの負荷も下げることもできます。
REST APIについて
APIとは、Application Programming Interfaceの略で、
機能やデータを外部から呼び出して利用できるよう定めた規約を指します。
REST APIは前述したREST原則に沿った形で設計されたAPIのことを表します。
シンプルかつ互換性に優れており、Web上のデータ取得の際によく用いられています。