less than 1 minute read

学んだこと

REST とは?

  • Reprisentational State Transfer の略
  • WEB サービスの設計モデルの 1 つ

REST の制約

  • クライアント・サーバ
    • クライアントとサーバを分離し、関心の分離を行う。
      • クライアントは UI の責任、サーバはデータの保存と操作にそれぞれ責任を持たせる。
      • 関心の分離を行うことで、サーバとクライアント別々で拡張性・保守性を高めることができる。
      • 例えばサーバ側の API を変更せずに、スマートフォンや PC 上でアプリケーションを動作することができる。
  • ステートレス
    • サーバはクライアントの状態を持ってはいけない。
      • 例として、クライアント側が異なるリクエストをサーバに送った場合
        • サーバはクライアントの状態を見ずに、そのままデータだけ返すこと。
        • 逆にクライアントは、すべての情報をリクエストとしてサーバに送る必要がある。
    • 単一のリクエストを送るため、ログ監視が簡単になる。
    • スケーラビリティの向上
      • サーバ台数を増やし、サーバ自体にクライアントの状態を持ってしまうとどうなるか
        • クラアントとサーバが通信する際、クライアントの状態を保持されてないサーバにアクセスする可能性がある。
        • サーバの処理結果がサーバ毎に異なる可能性が出る。
  • 統一インターフェース
    • ルールを統一して、異なるアーキテクチャ間での通信を簡単にする。
    • 各種メソッドの意味(GET であればリソースを取得、POST であればリソースを送信するなど)に合う処理を行うようにする。
  • キャッシュ
    • レスポンスは、キャッシュ可能かどうかを示す
  • 階層化システム
    • 各コンポーネントは、隣接する階層以外のコンポーネントを見ることができない。
  • コードオンデマンド
    • クライアントで実行可能なコードが、クライアントの機能拡張を可能にする。

リソース指向の考え方

  • RESTAPI ではメソッドとエンドポイントで成り立っている。
    • メソッド
      • GET や POST 等の HTTP メソッド
    • エンドポイント(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。