💡
RESTful API(REST API)とは?
初めに
こんにちは!RESTful APIについてまとめていきたいと思います。RESTful API(REST API)とは?を簡単に説明すると、「アプリやWebサービスがサーバーとデータのやりとりをするための仕組みのひとつ」 となります。
例えば、スマホアプリで「ユーザーの一覧を見る」や「投稿を保存する」といった操作をすると、裏側でこのREST APIが使われています。
まず「REST」の定義とは?
REST(レスト)= REpresentational State Transfer の略で、ネットワーク上の複数のコンピュータ間でリソースをやり取りするための設計原則の集合です。
RESTの主な原則
RESTには以下の6つの制約があります。
-
クライアント・サーバー構造
- クライアントとサーバーの役割を明確に分ける(UIとデータ管理を分離)。
-
ステートレス
- 各リクエストは独立しており、状態(セッション)はサーバー側に保持しない。
-
キャッシュ可能
- レスポンスはキャッシュ可能であるべきである。クライアントはレスポンスをキャッシュすることで、将来の同一のリクエストに対するサーバーへの負荷を減らし、パフォーマンスを向上させることができる。
-
統一インターフェース
一貫した方法でリソースにアクセスするための設計。以下の4つの原則で構成されている。-
リソースの識別
- この原則は、Web上のあらゆる情報(データ、サービス、機能など)を「リソース」として捉え、それぞれに一意の識別子であるURIを割り当てるという考え方である。クライアントは、このURIを使って特定のリソースを指定し、操作を行う。
- 例えば、ユーザーの一覧を取得したい場合: /users
- IDが「123」の特定のユーザー情報を取得したい場合: /users/123
-
リソースの操作
- クライアントは、URIで識別されたリソースの状態を直接操作するのではなく、「表現 (Representation)」を通じて操作する。
- 具体的にはHTTPメソッドで、GET、PUT、POST、DELETE。
-
自己記述的メッセージ(メッセージが必要な情報をすべて含む)
- クライアントとサーバー間でやり取りされる各メッセージ(リクエストとレスポンス)は、それ自身を解釈するために必要な情報を含んでいるべきである。
-
ハイパーメディアをアプリケーションの状態エンジンとして使用 (Hypermedia as the Engine of Application State - HATEOAS)
- この原則は、クライアントがサーバーによって提供されるハイパーリンクなどの情報を利用して、アプリケーションの状態を遷移していくという考え方である。
-
リソースの識別
-
階層構造
サーバーは階層構造になっていてもよい。中間サーバーを利用可能。
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