💡

RESTful API(REST API)とは?

に公開

初めに

こんにちは!RESTful APIについてまとめていきたいと思います。RESTful API(REST API)とは?を簡単に説明すると、「アプリやWebサービスがサーバーとデータのやりとりをするための仕組みのひとつ」 となります。
例えば、スマホアプリで「ユーザーの一覧を見る」や「投稿を保存する」といった操作をすると、裏側でこのREST APIが使われています。

まず「REST」の定義とは?

REST(レスト)= REpresentational State Transfer の略で、ネットワーク上の複数のコンピュータ間でリソースをやり取りするための設計原則の集合です。

RESTの主な原則

RESTには以下の6つの制約があります。

  1. クライアント・サーバー構造
    • クライアントとサーバーの役割を明確に分ける(UIとデータ管理を分離)。
  2. ステートレス
    • 各リクエストは独立しており、状態(セッション)はサーバー側に保持しない。
  3. キャッシュ可能
    • レスポンスはキャッシュ可能であるべきである。クライアントはレスポンスをキャッシュすることで、将来の同一のリクエストに対するサーバーへの負荷を減らし、パフォーマンスを向上させることができる。
  4. 統一インターフェース
    一貫した方法でリソースにアクセスするための設計。以下の4つの原則で構成されている。
    • リソースの識別
      • この原則は、Web上のあらゆる情報(データ、サービス、機能など)を「リソース」として捉え、それぞれに一意の識別子であるURIを割り当てるという考え方である。クライアントは、このURIを使って特定のリソースを指定し、操作を行う。
      • 例えば、ユーザーの一覧を取得したい場合: /users
      • IDが「123」の特定のユーザー情報を取得したい場合: /users/123
    • リソースの操作
      • クライアントは、URIで識別されたリソースの状態を直接操作するのではなく、「表現 (Representation)」を通じて操作する。
      • 具体的にはHTTPメソッドで、GET、PUT、POST、DELETE。
    • 自己記述的メッセージ(メッセージが必要な情報をすべて含む)
      • クライアントとサーバー間でやり取りされる各メッセージ(リクエストとレスポンス)は、それ自身を解釈するために必要な情報を含んでいるべきである。
    • ハイパーメディアをアプリケーションの状態エンジンとして使用 (Hypermedia as the Engine of Application State - HATEOAS)
      • この原則は、クライアントがサーバーによって提供されるハイパーリンクなどの情報を利用して、アプリケーションの状態を遷移していくという考え方である。
  5. 階層構造
    サーバーは階層構造になっていてもよい。中間サーバーを利用可能。

RESTful / RESTful APIとは?

RESTfulとは、「RESTの原則に従った設計をしている」という意味の形容詞です。

つまり、RESTful APIとは:RESTの設計原則に従って構築されたWeb APIのこと

RESTfulでない設計の例

GET /getUser?id=1
POST /createUser

上記のようなものはRESTfulでない設計といえます。

まとめ

  • RESTはWebアーキテクチャのスタイル(設計原則)で「リソース中心」にクライアントとサーバーがHTTPを通じてやりとりする考え方です。
  • RESTful API はRESTの原則に沿ったWeb APIです。
  • 正しく設計されたRESTful APIは、保守性・拡張性に優れています。

Discussion