APIとは、異なるソフトウェアやシステム同士がデータや機能をやり取りするための仕組みです。
この記事では、APIの基本的な仕組み、リクエストとレスポンス、HTTPメソッド(GET・POST・PUT・PATCH・DELETE)、REST API、エンドポイント、API認証について図を使いながら解説します。
次回の記事では、本記事の知識を活かしてPHPを使って実際にAPIサーバーとAPIクライアントを作成します。
APIとは?
API(Application Programming Interface)とは、異なるソフトウェアやシステム同士が、決められたルールに従って機能やデータをやり取りするための仕組みです。
たとえば、ネットショップでクレジットカード決済を行ったり、スマートフォンのアプリで天気情報を表示したりするとき、裏側ではAPIを利用して別のシステムと通信していることがあります。

APIはなぜ必要なのか?
システム同士でデータをやり取りするため
現在のWebサービスやスマートフォンアプリは、一つのシステムだけですべての機能を実現しているとは限りません。
たとえば、ネットショップであれば、商品管理、決済、配送、会員管理など、さまざまなシステムやサービスが連携して動いています。
APIを利用すると、異なるシステムの間でデータをやり取りできるようになります。

既存のサービスや機能を利用できる
APIを利用すると、他のサービスが提供している機能やデータを、自分のシステムから利用できるようになります。
たとえば、自分で作ったネットショップのサイトにオンライン決済の機能を追加したい場合、決済に必要なすべての仕組みを一から開発する必要はありません。
決済サービスがAPIを提供していれば、そのAPIを利用して決済処理を行うことができます。
APIの基本的な仕組み
APIでは「リクエスト」と「レスポンス」をやり取りする
APIを利用するときは、基本的に「リクエスト」と「レスポンス」という2つのやり取りが発生します。
リクエストは、利用する側のシステムがAPIに対して「このデータが欲しい」「この情報を登録したい」といった要求を送ることで、レスポンスはAPIを提供する側のシステムがその要求を処理して結果を返します。
たとえば、天気情報を取得するAPIを利用する場合、次のようなやり取りになります。

リクエストとは?
リクエストは、APIを利用する側がAPIに送る要求のことです。
たとえば、APIに対して次のような要求を送ります。
- ユーザー情報を取得したい
- 商品を登録したい
- 登録されている情報を変更したい
- 不要なデータを削除したい
リクエストには、単に「何をしてほしいか」だけでなく、処理に必要なさまざまな情報が含まれます。詳細は後の章で説明します。
レスポンスとは?
レスポンス(Response)とは、APIを提供する側がリクエストに対して返す結果のことです。
先ほどの天気で「東京の現在の天気を教えてください」の場合のレスポンスの例です。
{
“city”: “東京”,
“weather”: “晴れ”,
“temperature”: 25,
“humidity”: 60
}
また、レスポンスにはデータだけでなく、処理が成功したのか、エラーが発生したのかを示す情報も含まれます。
API通信で使われるHTTPとは?
WebAPIでは、システム同士がネットワークを通じてデータをやり取りします。
その通信に使われる代表的なプロトコルがHTTP(Hypertext Transfer Protocol)です。
HTTPとは?
HTTP(Hypertext Transfer Protocol)とは、WebブラウザやWebサーバーなどが、ネットワークを通じてデータをやり取りするためのプロトコル(データ形式などのルール)です。
HTTPリクエストの基本
HTTPリクエストには、主に次のような構成となっています。
- HTTPメソッド:どのような処理を行いたいか ※詳細はこの後で説明
- URL:どのサーバーやAPIにアクセスするか
- ヘッダー:認証情報やデータ形式などの追加情報
- パラメータ:検索条件など
- ボディ:サーバーに送るデータ
APIのリクエストで使われるHTTPメソッド
APIにリクエストを送るときは、HTTPメソッドを指定します。
HTTPメソッドとは、簡単にいうと、「サーバーにどのような処理をしてほしいのか」を伝えるためのものです。
HTTPメソッドは以下の5つがあります。

詳しい内容について説明します。
GET:データを取得する
GETは、サーバーからデータを取得するときに使用するHTTPメソッドです。
たとえば、ユーザーIDが123のユーザー情報を取得したい場合、次のようなリクエストを送ります。
GET https://example.com/api/employees/123
POST:データを登録する
POSTは、サーバーに新しいデータを登録するときなどに使用するHTTPメソッドです。
たとえば、新しいユーザーを登録する場合は、次のようなリクエストを送ります。
POST https://example.com/api/users
リクエストのボディには、登録するユーザーの情報を含めます。
{
“name”: “佐藤花子”,
“email”: “sato@example.com”
}
PUT:データを更新する
PUTは、既存のデータを更新するときに使用するHTTPメソッドです。
たとえば、ユーザーIDが123のユーザー情報を更新する場合、次のようなリクエストを送ります。
PUT https://example.com/api/users/123
リクエストのボディには、更新するユーザーの情報を含めます。
{
“name”: “佐藤花子”,
“email”: “sato@example.com”
}
PATCH:データを部分的に更新する
PATCHも、既存のデータを更新するときに使用するHTTPメソッドです。
PUTとの大きな違いは、データの一部だけを更新する場合に使われることが多い点です。
たとえば、ユーザー情報の名前だけを変更したい場合は、次のようなリクエストを送ることができます。
PATCH https://example.com/api/users/123
リクエストのボディには、更新するユーザーの情報を含めます。
{
“name”: “田中一郎”
}
DELETE:データを削除する
DELETEは、サーバー上のデータを削除するときに使用するHTTPメソッドです。
たとえば、ユーザーIDが123のユーザーを削除する場合は、次のようなリクエストを送ります。
PATCH https://example.com/api/users/123
REST APIとは?
APIにはさまざまな設計方法があります。その中でも、Web APIで広く利用されている代表的な方式がREST APIです。
RESTとは?
REST(Representational State Transfer)とは、Web上でシステム同士がデータをやり取りするための設計思想(アーキテクチャスタイル)です。
REST APIの特徴
リソースをURLで表現する
REST APIでは、ユーザーや商品などのデータを「リソース」として扱い、URLで表現します。

ステートレスである
ステートレスとは、サーバーがクライアントの過去のリクエスト状態を基本的に保持せず、それぞれのリクエストだけで処理に必要な情報を判断できるようにする考え方です。
APIのエンドポイントとは?
エンドポイントとは、APIを通じて特定のデータや機能にアクセスするための窓口です。
エンドポイントとURLの違い
URL(Uniform Resource Locator)は、Web上にあるリソースの場所を示すものです。
たとえば、「https://example.com/news/article01.html」はWebページの場所を示すURLです。
一方、APIにおけるエンドポイントは、APIを通じて特定のデータや機能にアクセスするための接続先を指します。
たとえば、「https://example.com/api/users」は、ユーザー情報を扱うAPIのエンドポイントとして利用できます。
エンドポイントとHTTPメソッドの関係
REST APIでは、エンドポイントで「何を対象にするか」を指定し、HTTPメソッドで「何をするか」を指定するという考え方が基本です。
たとえば、「GET /api/users/123」なら「ユーザーIDが123の情報を取得する」ですが、「DELETE /api/users/123」なら「ユーザーIDが123の情報を削除する」という意味になります。
同じ/api/users/123というエンドポイントでも、HTTPメソッドによって操作内容が変わります。

APIの認証
APIを利用するとき、誰でも自由にアクセスできるようにすると、重要なデータを取得されたり、許可されていない操作をされたりする可能性があるので、許可されたユーザのみが利用できるようにしておく必要があります。
APIキーによる認証
APIキー(API Key)は、APIを利用するアプリケーションや利用者を識別するための情報です。
APIを提供するサービスから、ユーザごとにAPIキーを発行し、ユーザはそのキーをAPIリクエストに含めて送信します。
イメージとしては、APIを利用するための「利用者証明書」のようなものと考えると分かりやすいでしょう。

APIキーは、パスワードと同じように他人に知られないように管理することが重要です。
トークン認証とは?
トークン認証は、APIへのアクセスに使用する「トークン」を発行し、そのトークンを使って利用者を確認する方法です。
トークンとは、簡単にいうとAPIを利用するための認証情報です。

トークン認証では、有効期限を設定し、期限が切れたら新しいトークンを取得する仕組みがよく使われます。(ただし、更新方法や有効期限はAPIの設計によって異なります。)
OAuthとは
OAuth(オーオース)は、Googleなど他のサービスに対して、パスワードを渡さずに、必要な範囲のアクセスを許可するための仕組みです。
例えば、あるWebサービスに新しく登録するとき、「Googleアカウントでログイン」などのようなサービス間の連携などで、OAuthの仕組みが利用されます。

OAuthでは、ユーザーのパスワードそのものを別のサービスに渡すのではなく、アクセストークンなどを使って、許可された範囲のデータや機能にアクセスします。
実際にAPIプログラムを作成
実際にAPIプログラムを作って、APIの動きを解説した記事もあります。
興味のある方は「PHPでAPIを作ってみよう!」を参照ください。


コメント