8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HTTPメッセージについて簡単なまとめ

Last updated at Posted at 2022-06-06

HTTPとは?

HTTP(Hypertext Transfer Protocol)とは、サーバとブラウザの間で、情報をやりとりするためのプロトコル(通信ルール)

HTTPSとは?

HTTPS(Hypertext Transfer Protocol Secure)は、HTTPで通信を安全に行うための仕組み。
HTTPSSL/TLSを組み合わせた通信の総称で、通信路を暗号化してクライアントとサーバ間でやりとりするデータを保護し、盗聴を防ぐ目的で利用されている。
HTTPHTTPSの違いは通信が暗号化されていないか暗号化されているかの違いで、現在は基本的にHTTPSが使用されている。

HTTPメッセージとは?

HTTPメッセージは、サーバーとクライアントがデータを交換する手段。
クライアントが送信してサーバーにアクションを起こさせるリクエストと、サーバーの回答であるレスポンスの、2種類のメッセージがある。

HTTPメッセージの構造

HTTPメッセージは、スタートライン、ヘッダ、ボディで構成されています。

httpメッセージ.png

■スタートライン

スタートラインは、リクエストラインステータスラインの2種類があります。

リクエストライン

リクエストメッセージの1行目をリクエストラインと呼び、メソッド、リクエストURI、プロトコルバージョンで構成されています。

スクリーンショット 2022-05-28 15.12.59.png

ステータスライン

レスポンスメッセージの1行目をステータスラインと呼び、プロトコルバージョン、ステータスコード、テキストフレーズから構成されています。
※http2.0以降はプロトコルバージョン、ステータスコードの2つで構成されている

スクリーンショット 2022-05-28 15.13.39.png

■ヘッダ

ヘッダにはメッセージのメタデータが記述されています。
1つのメッセージは複数のヘッダを持つことができ、「名前:値」というkey-valueのような構成をしています。

スクリーンショット 2022-05-28 15.25.57.png

■ボディ

ボディには、そのメッセージを表す本質的な情報が入ります。
つまり、サーバー側に渡したいデータや、サーバー側から返却されるデータなどが入っています。

スクリーンショット 2022-05-29 10.14.16.png

HTTPのステートレス性

HTTPはステートレスなプロトコルとして設計されている。

ステートレスとは?

システム(サーバー)が現在の状態を表すデータを保持しないこと。
同じ入力(リクエスト)に対する出力(レスポンス)は常に同じ。

利点
クライアントからのリクエストに単純に答えるだけなので、クライアントが増えた場合はサーバーを増やすだけで良い。

欠点
クライアント側から送信するデータが多くなる。
認証など、サーバーに負荷がかかる処理を繰り返す場合がある。

ステートフルとは?

システム(サーバー)が現在の状態を表すデータを保持していること。
同じ入力(リクエスト)でも、保持しているデータによって出力(レスポンス)が変わる。

利点
以前の操作を保持・反映できるため、すべての操作をスムーズに完結させられることができる。

欠点
データを保持する必要があるため、多数の人が共用するようなシステムでは負荷が重くなる。
どのサーバーでも同じ状態を保持させないといけないため、クライアントが増えた場合にスケールアウトさせにくい。

9つのHTTPメソッド

HTTPには、クライアントが行いたい処理をサーバに伝えるために9つのメソッドが定義されています。
この中でもよく使われるメソッドは、GETPOSTPUTDELETEの4つで、CRUDという性質を満たすためのものです。

GET

指定したURIの情報を取得するメソッド。
最も利用頻度の高いメソッドで、Webページの取得や、画像、映像の取得などで使用される。

POST

3つの役割があるメソッド。

  1. 子リソースの作成
  2. リソースへのデータの追加
  3. 他のメソッドでは対応できない処理(何らかの理由で他のメソッドで対応できない処理をPOSTで行うことがある)

PUT

  1. リソースの更新(対象リソースの現在の表現全体を変更)
  2. リソースの作成

DELETE

リソースの削除に使用する。

HEAD

リソースのヘッダだけを取得するメソッド。
GETと似ているが、HEADのレスポンスにはボディが含まれない。

OPTIONS

対象リソースがサポートしているメソッドの一覧を返す。

TRACE

対象リソースへのパスに沿ってメッセージのループバックテストを実行する。

CONNECT

対象リソースで識別されるサーバーとの間にトンネルを確立させる。

PATCH

リソースを部分的に変更するために使用する。

ステータスコードについて

ステータスコードは、レスポンスの1行目に記述されている3桁の数値。リクエストに対する結果を示している。

分類と意味

1xx : 処理中

処理が継続していることを示す。

2xx : 成功

リクエストが成功したことを示す。

3xx : リダイレクト

他のリソースへのリダイレクトを示す。

4xx : クライアントエラー

クライアントのエラーを示す。原因はクライアントのリクエストにある。

5xx : サーバエラー

サーバエラーを示す。原因はサーバ側にある。

参考にさせていただいた書籍

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?