REST APIとは

こんにちは!

今回はREST APIについてまとめます。

REST APIはRESTの原則に則ったWeb APIのことです。 では、それぞれの用語についてみていきましょう。

APIとは

Web APIとは

  • Webサービスを外部から利用するためのインターフェース

RESTとは

  • REpresentational State Transferの略
    • 2000年にRoy Fieldingが論文で発表
    • Webサービスを設計する際の原則
  • 原則として次の6つが挙げられる
    • クライアント/サーバー
    • ステートレス
    • キャッシュ制御
    • 統一インターフェース
    • 階層化システム
    • コードオンデマンド

クライアント/サーバー

  • クライアントとサーバーで役割を分担する
    • クライアントが画面(UI)を表示
    • サーバーがデータを処理

メリット

  • それぞれの役割を分離することで、片方だけの変更を可能にする
    • クライアントだけの変更や、サーバーだけの変更を可能にする

ステートレス

  • メッセージのやり取りにおいて、前回メッセージの内容を保持しない
    • 一つのリクエストに全ての情報が含まれる
    • 状態はクライアントが保持する

メリット

  • サーバーはリクエストだけで必要な情報を取得できる
  • 呼び出し順序を気にする必要がない

キャッシュ制御

  • ステートレスなAPIではリクエスト量が多くなるため、サーバーからのレスポンスをクライアントが保存して再利用する

メリット

  • ユーザーの体験が向上する
  • 同じデータを何度も返す必要がなくなる

統一インターフェース

  • サーバーとクライアントが共通の言語で通信することが出来るようにする
    • URICRUDなどが挙げられる

メリット

  • 統一インターフェースを守る限りにおいて、サーバーとクライアントを独自に開発することができる

階層システム

  • 特定の機能と役割を持つサーバー(コンポーネント)が階層を構成するような設計

メリット

コードオンデマンド

  • クライアントがコードをダウンロードして実行する

メリット

  • リリース後にコードの更新が可能
  • クライアントが処理をするため、サーバーの負荷が下がる

REST APIとは

  • RESTの原則を適用した(RESTfulな)Web APIのこと
    • REST APIはあくまでも原則であり実装ではない

メリット

  • URICRUDを用いた場合のようなシンプルな設計になる
  • ステートレスな設計により、サーバー側の処理を簡単に分散させることができる

おわりに

今回はREST APIについてまとめました。

あくまでも論文の中で提案された設計の考え方なので、6つの原則でなく、4つの原則として紹介する人もいますね。どちらにしても、現在ではほとんどのWebAPIの基礎となっている考え方のようです。Railsで開発する際にもRESTの考え方がベースになっているので、しっかりとイメージを掴んでおきたいですね。