[CS] HTTP

2631 ワード

✅ HTTP


HTTPは、HyperText転送プロトコルの略である.
言い換えれば、
1)HyperText:HTMLで作成したページ
2)転送:転送
3)協議:約束(通信規約)を意味する.

HTTPの2つの特性


リクエスト/レスポンス


送信には送信主体と受信主体が必要である.例えば、Instagramで友人のInstagramストーリーをクリックすると、その瞬間、パソコンがサーバーに「その友人のストーリーを見てください」とお願いします.この要求を処理した後、私のパソコンに返事をして、やっと友达の話を見ることができます.

⏩ Stateless


文字通りState(ステータス)+less(なし)です.これは、各HTTP通信(リクエスト/レスポンス)が独立しているため、過去の通信(リクエスト/レスポンス)の内容が全く知られていないことを意味する.
したがって、各通信には、必要なすべての情報が含まれ、要求が送信される必要があります.

リクエスト、レスポンス構造


リクエストメッセージ構造


1.Start Line:要求の最初の行に相当し、この部分も3つの部分から構成されています.
1)HTTPメソッド:この要求は所望の動作の部分を定義する.主にGET、POST、DELETEを使用
2)要求先:送信要求先URL
3)HTTPバージョン:その名の通りのHTTPバージョン.主に1.1版を使用
2.Headers:要求に関する追加情報(メタデータ)を含む部分.
3.Body:要求された実際の内容

レスポンスメッセージ構造


1.Status Line:応答の状態を減らす.応答はコンテンツを開始し、クライアント要求の処理ステータスを通知します.回答のStatus Lineも3つの部分で構成されています.
1)HTTPバージョン:要求されたHTTPバージョンと同じ
2)Status Code:応答メッセージのステータスコード
3)Status Text:応答メッセージの状態を簡単に説明するテキスト
2.タイトル:要求されたタイトルと同じです.回答の付加情報(メタデータ)を含む部分.ただし、応答でのみ使用される情報もあります.(ex.ブラウザ情報を要求するユーザ-Agentではなく、サーバヘッダを使用します.)
3.身体:お願いした身体と同じ.最も一般的なBodyデータ型はJSONです.
例(postメソッドの例)
(축약된 요청 메세지)
POST /shop/bag HTTP/1.1
Headers: {
	"HOST": "https://www.apple.com/kr"
	"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
	product: {
		"productId": 30
		"name": "12.9형 iPad Pro Wi-Fi + Cellular 128GB"
		"color": "스페이스 그레이"
		"price": "₩1,499,000"
		"quantity": 1
	}
}
(축약된 응답 메시지)
HTTP/1.1 201 SUCCESS
Body: {
	"message": "SUCCESSFULLY CARTS UPDATED"
}

✅ HTTP Request Methods


⏩ GET

  • は、その名の通り、サーバからデータ(GET)を受信するための一般的な方法
  • である.
  • データのみを受信するために使用されます.
  • ⏩ POST

  • データを作成/変更するための一般的な方法
  • のデータを生成および変更する際に使用されることが多いため、多くの場合、要求にはbodyが含まれて送信される.
  • ⏩ DELETE

  • サーバから削除要求を送信する際に用いる方法
  • .

    ✅ Response Status Codes


    ⏩ 200: OK

  • 応答コード
  • は、バックエンドサーバ上で障害なく要求を処理することができる

    ⏩ 201: Created

  • 正常に作成されたStatus Code
  • ⏩ 400: Bad Request

  • 要求が無効であるときに送信されるStatus Code
  • は、主に要求されたBodyに送信されたコンテンツが無効である場合に用いられる.
  • ⏩ 401: Unauthorized

  • ユーザは、この要求
  • を行うためにログインまたは登録する必要がある.

    ⏩ 403: Forbidden

  • は、ユーザが要求する権限を持たないことを示す
  • である.
  • アクセスできない情報
    ex)有料会員のみがアクセスできるデータを要求する場合、
  • ⏩ 404: Not Found

  • は、要求するURIが存在しないことを示す
  • である.

    ⏩ 500: Internal Server Error

  • サーバエラー時のStatus Code