Webを支える技術の1つであるHTTPについての簡単なまとめです。
(以下の記事の続きです。)
HTTPの基本とその仕組み
1. HTTPとは
-
TCP/IPをベースとしたプロトコル
- IP: データを送信するためのプロトコル。相手がデータを受け取ったかどうかは保証しない
- TCP: データの転送を保証する
- HTTPではクライアントがリクエストを出し、サーバーが処理してレスポンスを返す
2. HTTPメッセージの構成要素
-
スタートライン
- リクエストの場合: リクエストライン
- レスポンスの場合: ステータスライン
-
ヘッダ
- 空行で終了し、送信する追加情報を含む
-
ボディ
- テキストやバイナリデータを含めることができる(省略可能)
3. ステートレスなプロトコル
- サーバーはクライアントの状態を保存しない
- 状態管理が必要な場合は、クッキーやセッションを使用
HTTPメソッド
HTTPメソッドは主に以下の8つです。
メソッド | 説明 |
---|---|
GET | リソースの取得 |
POST | リソースの作成 |
PUT | リソースの更新 |
DELETE | リソースの削除 |
HEAD | ヘッダーのみの取得 |
OPTIONS | 利用可能なメソッドの取得 |
PATCH | 部分的なリソースの更新 |
TRACE | リクエストのループバックテスト |
- GET, POST, PUT, DELETEはCRUD(Create, Read, Update, Delete)に対応しており、特に頻繁に使用される
HTTPステータスコード
- ステータスコードはリクエストの結果に応じたレスポンスメッセージの意味を示す
ステータスコード | 説明 |
---|---|
1xx | 処理中 |
2xx | 成功 |
200 OK | リクエスト成功 |
201 Created | リソース作成成功 |
3xx | リダイレクト |
301 Moved Permanently | 恒久的なリダイレクト |
303 See Other | 別URIの参照 |
4xx | クライアントエラー |
400 Bad Request | リクエストの不正 |
401 Unauthorized | 認証が必要 |
404 Not Found | リソースが見つからない |
5xx | サーバーエラー |
500 Internal Server Error | サーバー内部エラー |
HTTPヘッダの基本
HTTP通信におけるリクエストとレスポンスに関連する追加情報をヘッダでやり取りする
例1: リクエストヘッダ
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
- GET: リソースの取得を要求
- Host: リクエスト先のドメイン名
- User-Agent: クライアントの情報
- Accept: 受け入れ可能なデータ形式
例2: レスポンスヘッダ
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 3057
Set-Cookie: sessionId=abc123; Expires=Wed, 09 Oct 2024 10:00:00 GMT; Path=/
- 200 OK: リクエストの成功
- Content-Type: レスポンスのデータ形式(HTML)
- Content-Length: データのサイズ
- Set-Cookie: サーバーがクライアントにCookieを設定
まとめ
HTTPは、クライアントとサーバー間でのリクエスト・レスポンスによるデータのやり取りを行うプロトコル。ステートレスな設計であるため、必要に応じてクライアントの状態管理を行う工夫が必要。特に、メソッドやステータスコード、ヘッダの理解は、Web開発の基礎となる重要な要素。
参考文献: