HTTPとは何か
HTTP(Hypertext Transfer Protocol)は、Web上でクライアントとサーバーが要求と応答を交換するための規則です。ブラウザでページを開くときも、アプリがWeb APIを呼ぶときも、多くの場合HTTPが使われます。
HTTPはデータそのものではなく、データをどのようなメッセージでやり取りするかを決めます。
一文でいうと
HTTPとは、Web上の資源について、クライアントが要求しサーバーが応答する方法を定めたプロトコルです。
MDNはHTTPを、HTMLなどの資源を取得するための、Webのデータ交換の基盤となるクライアント・サーバー型のプロトコルと説明しています。IETFのRFC 9110は、HTTPを状態を持たないアプリケーション層のプロトコルと定義しています。
個人開発のどこで登場するか
ページ、画像、CSS、JavaScriptの取得、フォーム送信、APIとは何かでのデータ交換に登場します。普段はブラウザやライブラリがメッセージを組み立てますが、通信失敗を調べるには部品を知る必要があります。
ブラウザの開発者ツールでは、次を確認できます。
要求先のURL
GETやPOSTなどのメソッド
追加情報を持つヘッダー
送受信するボディ
結果を表すステータスコード
通信にかかった時間
「APIが動かない」ときも、要求が送られていない、サーバーが拒否した、応答を画面側で読めない、という段階に分けられます。
ページを取得する要求と応答
ブラウザがページを開く例では、概念上、次のような交換を行います。
ブラウザが
GETメソッドで対象のパスを要求するサーバーが要求のヘッダーなどを読み、処理する
サーバーが
200、404、500などのステータスを返す必要に応じてHTMLなどを応答ボディへ入れる
ブラウザが応答を解釈して表示する
200番台は成功、400番台は要求側の問題、500番台はサーバー側の失敗を表す分類です。ただし、200が返っただけでは、期待したデータや画面であることまでは保証されません。
APIやHTTPSと区別する
Web APIはHTTPを使うことが多いものの、APIという概念はHTTPだけに限りません。また、HTTPとHTTPSは要求・応答の意味を共有しますが、通信経路の保護が異なります。
HTTPは前の要求を自動では覚えない
HTTPは基本的に、各要求を独立したものとして扱います。ログイン状態や買い物かごを続けるアプリでは、Cookieやセッションなどを組み合わせ、複数の要求を同じ利用者の流れとして結び付けます。
HTTPのまま秘密情報や個人情報を送ると、通信経路で読まれたり書き換えられたりする危険があります。公開サイトではHTTPSとは何かを使い、URL、ヘッダー、ログにも秘密値を不要に残さないようにします。
次に読む記事
通信を保護する仕組みはHTTPSとは何か、資源の場所はURLとは何かで整理します。要求を送る側と受ける側はブラウザとは何かとサーバーとは何かへ進みます。