REST API(れすとえーぴーあい)はWebAPIの1つの形態です。WebAPIというのは、インターネットを通じてアクセス可能なAPI全般を指す用語ですが、その中でも特にREST(Representational State Transfer)というアーキテクチャスタイルに従ったAPIをREST APIと呼びます。
WebAPI ├── RestAPI ←今回解説する対象 ├── SOAP ├── GraphQL └── gRPC
結論を超ザックリいえば、REST APIは「リソース」に対して「HTTPプロトコル」を使って「操作」する方法で、各リクエストが独立して処理されるAPIと言えます。
このページではそもそもWebAPIって何?というところをおさらいしつつ、REST APIの概念を1からわかりやすくご説明します。
前提:APIとは何か?
API(エーピーアイ)は「Application Programming Interface」の略で、異なるソフトウェア同士が情報をやり取りするためのルールや仕組みを提供するものです。APIはその名の通りアプリケーションが他のアプリケーションの機能を使えるようにする「窓口」のような役割を果たします。
例えばスマートフォンの天気アプリは、気象データを提供するサービス(例えば、気象庁や気象会社)のAPIを使って最新の天気情報を取得します。(APIという「窓口」に知りたい気象情報を問い合わせ→回答を受け取ってくる。)このように、APIはアプリやサービスが他のアプリやサービスからデータを取得したり、機能を利用したりするために使われます。
また、その中でも特にインターネットを介して情報の交換が行われるものをWebAPIと呼びます。
REST APIとは
REST APIはWebAPIの1種。その中でも特に「REST」という設計原則に従ったAPIです。
WebAPI ├── RestAPI ←今回解説する対象 ├── SOAP ├── GraphQL └── gRPC
RESTは「Representational State Transfer」の略で、以下の4点が大きなポイントです。ザックリいえば、モノを「リソース」として扱い、そのリソースに対する操作を「HTTP」でリクエスト。これらのリクエストは単発で行われるということ。
ポイント | 説明 |
---|---|
リソース指向 | データや機能をリソースとして扱い、それぞれに固有のURLが割り当てられる。 |
HTTPプロトコル | インターネット通信で使われる標準的なプロトコルを使用。 |
HTTPメソッド | データの操作をGET、POST、PUT、DELETEなどの標準的なHTTPメソッドで行う。 |
ステートレス | 各リクエストは独立して処理され、サーバーはクライアントの状態を保持しない。 |
それぞれのポイントの意味を1つずつ詳しく説明していきます。
REST APIの特徴1:リソース指向
リソース指向とは、APIがデータや機能を具体的な「モノ」として扱う方法です。
リソース指向を日常生活で例えると、「図書館で本を管理する方法」と考えるとわかりやすいです。
図書館の本、これがリソースです。それぞれの本には固有の識別番号(例えばバーコード)があり、この番号を使って本を特定することができます。このときのバーコードがURLに当たります。このURLと後述する「HTTPメソッド」を組み合わせて、「村上春樹の本」を「Get(HTTPメソッド)」して!というような形でリクエストするイメージがリソース指向。
対してリソース指向ではないのは、図書館の利用者が特定の目的や手続きを実行するためにリクエストを行うようなイメージになります。この方式では本自体をリソースとして扱うのではなく、利用者の目的や手続きに基づいて操作が行われます。つまり「村上春樹の本を取得して!」というように、モノとそれに対する操作をひとくくりにしたもの(=手続き・アクション)がリソース指向ではない例。
REST APIはリソース(例えば、ユーザーや商品)を操作するためのものですが、リソース指向ではないAPIは「特定の手続きを実行するためのもの」と分けて考えると理解しやすいでしょう。
REST APIの特徴2:HTTPプロトコルを使用
REST APIは、HTTPプロトコルを使用します。
参考 HTTPとは?
HTTPプロトコルとは、簡単に説明すると「インターネットで情報をやり取りするためのルール」です。例えば私たちがWebサイトを見るとき、ブラウザはこのルールを使ってサーバーからページを取得し画面上にページ情報を表示します。REST APIも同じルールを使って、アプリやサービスがデータをやり取りするということです。
REST APIの特徴3:HTTPメソッドでリソースに対する処理を表す
HTTPメソッドは、インターネットでデータをやり取りする際に使用する特定の操作方法を指します。REST APIでは、主に4つのHTTPメソッド(GET、POST、PUT、DELETE)が使用され、これらを使って「リソース」の作成・取得・更新・削除を行います。
REST APIの特徴4:ステートレス
ステートレスとは、各リクエストが独立して処理され、サーバーがクライアントの状態を記憶しないことを指します。つまり、1つのリクエストが他のリクエストに依存しないということです。
ファストフード店で食べ物を注文するとき、店員はあなたの過去の注文を覚えていません。あなたが来るたびに、注文を初めからやり直します。例えば、今日ハンバーガーを注文しても、明日また来たときに店員はそれを覚えていません。これは、各注文(リクエスト)が独立しているためです。
一方ステートフルの場合、昨日「ハンバーガーを1つください」と注文していたとしたら、今日来たときに「昨日と同じものをください」と言うだけで、店員は同じハンバーガーを出してくれます。また、今日は「追加でフライドポテトもください」と言えば、店員は昨日の注文にフライドポテトを追加します。
ザックリいえば、リクエストを投げる側と受ける側に、どれぐらい密接な関係があるか?というのが違い。