コンピュータシステム システムアーキテクト

REST APIとは?仕組みとHTTPメソッドを図で分かり易く解説!

スマートフォンのアプリで商品情報を見たり、地図アプリで現在地の天気を確認したりできるのは、裏側で別のシステムからデータを受け取っているからです。

このようなシステム同士のやり取りで、よく使われる考え方がREST API(レスト・エーピーアイ)です。

REST APIは難しそうに見えますが、レストランにたとえると理解しやすくなります。お客さんが決められた方法で注文し、厨房が料理を返すように、利用する側が決められた方法で要求を送り、サーバーが結果を返します。

この記事では、REST APIの仕組み、よく使うHTTPメソッド、Webhookとの違いを図で分かり易く解説していきます!

REST APIとは?

まずは「API」と「REST」を分けて考えてみましょう。

用語の意味

  • API:ソフトウェア同士が機能やデータを利用するための窓口
  • Web API:Webの通信技術を使って利用するAPI
  • REST:Webの特性を活かしてシステムを設計するためのアーキテクチャスタイル
  • REST API:RESTの考え方に沿って設計されたWeb API

レストランなら、注文を受け付ける店員がAPIという「窓口」、メニュー番号や注文方法がシステム同士の「約束」に当たります。

RESTは通信規格そのものではありません。RESTを提唱したRoy Fielding氏は、クライアントとサーバーを分けること、各リクエストを独立させること、統一されたインターフェースを使うことなどをRESTの制約として説明しています。

RESTは設計の考え方でHTTPは通信のルールというREST APIにおける位置付け
REST APIにおけるREST・HTTP・URL・JSONの位置付け

RESTは「どのように設計するか」という考え方、HTTPは「どのように通信するか」というルールです。REST APIでは、HTTPを使ってリクエストとレスポンスをやり取りし、URLで対象を示します。データ形式にはJSONがよく使われます。

実際のREST APIでは、URLで対象となるリソースを示し、HTTPメソッドで操作の目的を伝える設計がよく使われます。リソースとは、ユーザー、商品、記事など、APIで扱う情報のことです。

REST APIが動く仕組み

REST APIの基本は、リクエストとレスポンスの組み合わせです。

ノートパソコンからサーバーへリクエストを送りレスポンスを受け取るREST APIの基本フロー
REST APIの基本的なやり取り

REST APIが動く4つのステップ

  1. 利用側がURLを指定する
    どの商品やユーザーを操作したいのか、対象となるリソースをURLで示します。
  2. HTTPリクエストを送る
    GETやPOSTなどのHTTPメソッドを使い、サーバーへ要求を送ります。
  3. サーバーが処理する
    要求を確認し、データの取得、登録、更新、削除などを行います。
  4. HTTPレスポンスを返す
    処理結果を示すステータスコードと、必要に応じてデータを返します。

たとえば、IDが123の商品情報を取得する場合は、次のようなリクエストを送ります。

GET https://api.example.com/products/123

products/123が対象となる商品を示し、GETが「情報を取得したい」という目的を示します。URLの基本を確認したい方は「FQDN・URL・ドメイン名の違い」も参考にしてください。

REST APIでよく使うHTTPメソッド

HTTPメソッドは、サーバーに何をしてほしいのかを伝える言葉です。REST APIでは、次の4つがよく使われます。

GET POST PUT DELETEの4つのHTTPメソッドと役割
よく使われる4つのHTTPメソッド
メソッド主な役割商品APIの例
GET情報を取得する商品を見る
POSTデータを送り、処理や新規登録を依頼する商品を登録する
PUT指定した対象を置き換える商品情報全体を更新する
DELETE指定した対象を削除する商品を削除する

「GET=読む、POST=作る、PUT=更新、DELETE=削除」と覚えると全体像をつかみやすいでしょう。ただし、HTTPの正式な意味と各APIの具体的な動作は完全に同じではありません。利用するAPIの仕様書を確認することが大切です。

一部分だけを更新する用途では、PATCHというメソッドが使われることもあります。

リクエストとレスポンスの中身

HTTPリクエストには、URLやメソッドのほかに、追加情報を伝えるヘッダーと、送信するデータを入れるボディがあります。

リクエストに含まれる主な情報

  • URL:操作するリソースの場所
  • HTTPメソッド:取得、登録、更新、削除などの目的
  • ヘッダー:認証情報やデータ形式などの付加情報
  • ボディ:登録・更新したいデータ。GETでは通常使いません

サーバーからのレスポンスには、処理結果を表すHTTPステータスコードが含まれます。

コード意味
200 OKリクエストが成功した
201 Created新しいリソースの作成に成功した
400 Bad Requestリクエストの内容に問題がある
401 Unauthorized有効な認証情報が必要
404 Not Found指定したリソースが見つからない
500 Internal Server Errorサーバー内部で問題が発生した

レスポンスのデータには、JSONという形式がよく使われます。JSONはRESTの必須条件ではありませんが、構造が分かりやすく、多くのプログラミング言語で扱いやすい形式です。

{
  "id": 123,
  "name": "ノートパソコン",
  "price": 98000
}

REST APIとWebhookの違い

REST APIと一緒に使われる仕組みに、Webhookがあります。どちらもシステム間連携に使われますが、やり取りを始める側が異なります。

REST APIは利用側から問い合わせWebhookはサーバー側から通知する違い
REST APIとWebhookは連絡を始める側が異なる
比較項目REST APIWebhook
連絡を始める側情報を利用したい側イベントが発生した側
タイミング必要な時にリクエストするイベント発生時に通知する
例商品一覧を取得する決済完了をショップへ知らせる

REST APIは「今の情報を教えてください」と問い合わせる仕組みに向いています。Webhookは「変化が起きたら知らせてください」という使い方に向いています。

実際には、Webhookで変化を知り、その後REST APIで詳しい情報を取得するという組み合わせもよく使われます。

REST APIのメリット

REST APIの主なメリット

  • システムを分けて開発しやすい
    画面側とサーバー側を分離し、それぞれを変更しやすくなります。
  • さまざまな利用側から使える
    Webサイト、スマートフォンアプリ、別システムなどが同じAPIを利用できます。
  • HTTPの仕組みを活用できる
    標準化されたメソッド、ステータスコード、キャッシュなどを利用できます。
  • 役割を理解しやすい
    URLとHTTPメソッドを組み合わせることで、何を操作するのかを表現しやすくなります。

REST APIを利用する時の注意点

認証情報を安全に扱う

APIキーやアクセストークンは、サービスを利用するための鍵です。ソースコードへ直接書いて公開したり、第三者へ渡したりしないようにします。通信内容を保護するため、原則としてHTTPSを利用します。

利用回数の上限を確認する

APIによっては、一定時間内に呼び出せる回数が決められています。この制限をレートリミットと呼びます。短時間に大量のリクエストを送らないように設計します。

エラーが起きる前提で作る

ネットワークの一時的な障害、認証切れ、入力ミスなどでAPIは失敗することがあります。ステータスコードを確認し、再試行や利用者への案内を適切に行うことが大切です。

まとめ

REST APIのまとめ

  • REST APIは、RESTの考え方に沿って設計されたWeb API
  • URLでリソースを示し、HTTPメソッドで操作の目的を伝える設計がよく使われる
  • GET、POST、PUT、DELETEにはそれぞれ異なる役割がある
  • レスポンスではステータスコードとJSONなどのデータが返される
  • REST APIは利用側から問い合わせ、Webhookはイベント発生側から通知する
  • 認証情報、HTTPS、レートリミット、エラー処理への配慮が必要

REST APIの基本を理解すると、Webサービスやスマートフォンアプリが、裏側でどのように情報をやり取りしているのか見えやすくなります。

まずは「誰が、どのURLへ、どのHTTPメソッドで要求し、どのステータスコードが返ったか」という順番で見ることから始めてみましょう。

以上です!

参考資料

-コンピュータシステム, システムアーキテクト
-