2020年3月4日 TEXT:ニック
REST API を利用したアプリを開発する上で、APIとの通信状況を把握することは大事です。その手がかりとなるのがHTTPレスポンス、そしてステータスコードです。
今回は、HTTPレスポンスとステータスコードについて解説します。
HTTPレスポンスとは
REST APIとやりとりする時には、ブラウザ・Webアプリから「HTTPリクエスト」を送ります。APIは、リクエストに応じる形でデータを返します。返ってきたデータを「HTTPレスポンス」と呼びます。
HTTPレスポンスには、大きく分けて3つの要素が含まれます。
- 1.ステータス行
- 2.ヘッダー
- 3.本文
ステータス行
ステータス行には、プロトコルバージョン、ステータスコード、ステータス文字列が含まれます。このステータス行を見ることで、サーバーとの通信状況がわかります。
ヘッダー
ヘッダーには、レスポンスデータに関する情報や、コンテンツの長さや MIME タイプなど、エンティティの本文に関する詳細情報などが含まれます。
本文
本文は、リクエストに応じたデータが含まれます。Webサイトの場合は、Webページを表示するためのHTML。JSONデータを返却するREST APIの場合は、JSONデータそのものが含まれます。
REST API の開発に便利なツール「Postman」
アプリを開発する際は、APIとの通信テストを行う回数が増えます。そんな時は、API通信のためのテスト用ソフトやツールを使うと、効率的に作業を進めることができます。
今回は、REST API を利用した開発によく使われるツール「Postman」をご紹介します。
Postman は、サンフランシスコに本社を置く「Postman」社が開発するAPI開発のためのツールソフトです。テストの自動化やチーム開発など、チーム単位から巨大な組織向けまで、いくつかのライセンスを販売しています。
Postmanには個人開発者向けの「free」版があります。個人開発者は無料でダウンロードでき、Postmanを利用してシンプルなリクエスト送信やレスポンスデータの確認などを行うことができます。
この画像は「Postman」を利用して、Google Books APIへリクエストを送った際のキャプチャ画像です。「Headers」というタブを開いています。Headersタブには、レスポンスデータのヘッダに含まれる様々な情報が表示されています。
この画像は「Postman」で取得した、レスポンスデータの本文を表示しています。本文には、書籍情報の詳細がJSONデータとして含まれているのがわかります。
ステータスコードで通信状況を診断する
ステータスコードは、レスポンスデータに含まれるコードを指します。
HTTPレスポンスに含まれるステータスコードを確認することで、サーバーとの通信状況がどうなっているかを診断することができます。REST APIを利用したアプリの開発時には、ステータスコードを見ながらデバッグすることが多くなります。
ステータスコードは、Web APIを利用する上で必須と言える情報です。これまで意識していなかった方は、是非この機会に詳しく学習することをお薦めします。
ここでは、主なステータスコードを紹介します。
200番代 - 成功レスポンス
200番代のステータスコードは、通信が成功していることを表します。200番代には以下のようなコードが存在します。
- ・200 OK
APIとの通信が成功したことを表します。
- ・204 No Content
通信は成功したが、返却するべきデータが存在しなかった場合に返されるコードです。
400番代 - エラー
400番代はエラーメッセージです。
- ・400 Bad Request
リクエストの構文が間違っているため、応答ができない場合に返されます。
- ・401 Unauthorized
APIへのリクエスト権限がない状態でリクエストを送った場合に返されるエラーコードです。APIキーの指定が間違っている場合などに返されます。
- ・403 Forbidden
何らかの理由でサーバーが適切なレスポンスの返信を拒否している場合に返されます。例えば、OAuthによる認可フローを処理する時に、redirect_urlが必須パラメータになっているにも関わらず、指定していなかった場合などに403エラーが返されます。
- ・429 Too Many Requests
APIに利用回数の上限が設定されていて、その上限を超えてAPIに対するコールを行なった場合にこのエラーが返されます。
500番代 - サーバーエラー
500番代は、サーバーサイドのエラーコードとなります。
- ・503 Service Unavailable
サーバー側に何らかの障害が発生していて、通信に対する応答ができない場合に返されるエラーコードです。
参考情報
今回のまとめ
- ・HTTPレスポンスは、Web APIと通信したときにサーバーから送られてくるデータである
- ・HTTPレスポンスには、「ステータス行」「ヘッダー 」「本文」の3種類のデータ含まれている
- ・HTTPステータスは、APIとの通信状態を確認するために不可欠な情報である
freee も REST API を公開しています。
freeeと開発者が共同で運営しているユーザーコミュニティ「freee Open Guild」では会員を募集しています。不定期に開催しており、freee、API、そのほかの技術領域について勉強会を開催しています。
https://freee-platform.connpass.com/
登録は無料ですので、ぜひご登録ください。
- ニック(Takeshi Nick Osanai)
- 早稲田大学卒業後、株式会社アスキーでゲーム事業に従事。シックス・アパート株式会社でプロダクトマネージャー、ディベロッパーリレーションを担当後、2019年freeeへ入社。 AWS認定ソリューションアーキテクト(SAA)
2020.03.04 Wed