TIL 44 , HTTP
HyperText Transfer Protocol
コンピュータ間でHTMLファイル(ドキュメントとドキュメントをタグでリンクする言語)のコミュニケーション方法や約束を交換できます.
WebブラウザとWebサーバとの間の通信規約とも呼ばれる.
htmlで作成したページをどのように交換するかについてのお話です.
クライアントとサーバは、個別のメッセージ交換によって通信します.通常、ブラウザクライアントによって送信されるメッセージを要求(要求)と呼び、サーバから応答に送信されるメッセージを応答(応答)と呼ぶ.
HTTPはコンピュータ間で通信を行うプロトコルです.
HTTP通信は要求と応答からなる.
HTTP通信における各要求や応答は以前の状態を知らない.(Stateless)
stateless
ステータス+less(なし)を表します.
各HTTP通信(リクエスト/レスポンス)は独立しているため、過去の通信(リクエスト/レスポンス)については何も知らない.
各通信には、要求を送信するために必要なすべての情報が含まれます.
複数回の通信(リクエスト/レスポンス)中に連続的なデータ処理(ex.オンラインショッピングモール登録後のカート機能)が必要な場合は、トークンやブラウザのクッキー、セッション、ローカルストレージなどの技術を登録する必要がある.
リクエストメッセージ構造
リクエストは実はただの情報です.
バックエンドがデータの処理を開始するために送信されるメッセージ.大体3つの部分からなる.
start line
リクエストの最初のローに相当します.この行も3つの部分から構成されています.
ステータス+less(なし)を表します.
各HTTP通信(リクエスト/レスポンス)は独立しているため、過去の通信(リクエスト/レスポンス)については何も知らない.
各通信には、要求を送信するために必要なすべての情報が含まれます.
複数回の通信(リクエスト/レスポンス)中に連続的なデータ処理(ex.オンラインショッピングモール登録後のカート機能)が必要な場合は、トークンやブラウザのクッキー、セッション、ローカルストレージなどの技術を登録する必要がある.
リクエストメッセージ構造
リクエストは実はただの情報です.
バックエンドがデータの処理を開始するために送信されるメッセージ.大体3つの部分からなる.
start line
リクエストの最初のローに相当します.この行も3つの部分から構成されています.
GET/login HTTP/1.1
説明:HTTP 1.1バージョンのGETメソッド登録リクエストターゲットにリクエストを送信します.
headers
要求に関する追加情報(メタデータ)の部分が含まれます.
メタデータは情報に関する情報です.
Key:値(JavaScriptのオブジェクト、Pythonのディック形式)
一般的なリーダー情報は次のとおりです.
Headers: {
Host:リクエストを送信するターゲット(ターゲット)のアドレス.つまり、リクエストを送信するサイトのデフォルトアドレスです.
(ex. www.apple.co.kr)
User-Agent:要求を送信するクライアントに関する情報(ex.chrome,firefox,safari,explorer)
コンテンツタイプ:送信を要求するメッセージボディのタイプ(ex.application/json)
コンテンツ-長さ:bodyコンテンツの長さ
≪権限|Grant|ldap≫:メンバーの認証/認証を処理するためにログイン・トークンを認証に追加します.
}
body
要求された実際の内容.主にBodyを使う方法はPOSTです.
レスポンスメッセージ構造
回答も同じメッセージです.
Status Line
回答の状態を減らす.応答はコンテンツを開始し、クライアント要求の処理ステータスを通知します.手紙の返事に「うん、よくやったね」と言ったように.回答のStatus Lineも3つの部分で構成されています.
説明:HTTP 1.1バージョンに応答中、フロントエンドからの要求(ex.ログイン試行)
プレイヤーの情報が見つからないため、404ステータス情報が送信される.
HTTP/1.1 200 SUCCESS
説明:フロントエンドからのリクエストに成功したため、HTTP 1.1のバージョンに応答しています.
200件のステータス情報を送信します.
Headers
リクエストのタイトルと同じです.回答の付加情報(メタデータ)を含む部分.ただし、応答でのみ使用される情報もあります.(ex.ブラウザ情報を要求するユーザ-Agentではなく、サーバヘッダを使用します.)
Body
要求された本文と一般的に同じです.リクエストの方法によっては、Bodyが常に存在しないように.応答が応答の形式でデータを転送する必要がない場合、Bodyがない可能性があります.最も一般的なBodyデータ型はJSONです.
ex)ログイン要求が成功したときに応答する内容
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm」(ユーザー情報の暗号化)
}
HTTP Request Methods
よく使われるHTTPの方法はGET,POST,DELETEである.これらの方法は,クライアントの立場に立って,要求の意図を含んでいる.
1) GET
名前の通り、サーバからデータ(GET)を受信する際に主に使用する方法です.データのみを受信するために使用します.最も簡単で最もよく使われる方法です.
事例)買い物かごの中の製品を調べる.(축약된 요청 메세지)
GET /shop/bag HTTP/1.1
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
(축약된 응답 메시지)
HTTP/1.1 200 SUCCESS
Body: {
"message": "SUCCESS"
"carts": [
{
"productId": 10
"name": "Pro Display XDR - Nano-texture 글래스"
"price": "₩7,899,000"
"quantity": 1
},
{
"productId": 20
"name": "Mac Pro"
"price": "₩73,376,000"
"quantity": 2
}
]
}
2) POST
データの生成、変更に使用される主な方法.そのため、多くの場合、Bodyは含まれています.
謝礼(축약된 요청 메세지)
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"
}
3) DELETE
サーバから削除リクエストを送信するときに使用する方法
謝礼(축약된 요청 메세지)
DELETE /shop/bag HTTP/1.1
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
productId: 30
}
(축약된 응답 메시지)
HTTP/1.1 201 SUCCESS
Body: {
"message": "productId 30 DELETED"
}
Response Status Codes
これらは、実際のプロジェクトで最も多く見られる応答ステータスコードです.Status Codeの数字にはそれぞれ意味があります.このStatus Codeを見るだけで応答が正しいかどうかがわかります.
200: OK
最も一般的なStatus Code
バックエンドサーバ上で要求を無停止処理する応答コード.
私たちは200 OKがほしいです.
201: Created
正常に作成されたステータスコード
ピアPOSTメソッドの要求に従ってバックエンドサーバ上でデータを生成または変更する際に送信されるコード.
400: Bad Request
要求が無効な場合に送信されるStatus Code
要求Bodyに送信された無効なコード.
デジタル文字列ではなく、電話番号を送信する必要がある場合は、Bodyに含まれます.
401: Unauthorized
このリクエストを行うには、ユーザーが先にログインまたは会員に加入する必要があることを意味します.
ex)wishlist,賛機能は会員でなければリクエストを送信できません
403: Forbidden
ユーザーに要求する権限がないことを示します.
アクセスできない情報にアクセスした場合.
ex)有料会員のみがアクセスできるデータを請求する場合
404: Not Found
要求されたURIは存在しない
500: Internal Server Error
サーバエラー時のStatus Code
APIを開発するバックエンド開発者が嫌うコード
Reference
この問題について(TIL 44 , HTTP), 我々は、より多くの情報をここで見つけました
https://velog.io/@heyho9292/TIL-44-HTTP
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
(축약된 요청 메세지)
GET /shop/bag HTTP/1.1
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
(축약된 응답 메시지)
HTTP/1.1 200 SUCCESS
Body: {
"message": "SUCCESS"
"carts": [
{
"productId": 10
"name": "Pro Display XDR - Nano-texture 글래스"
"price": "₩7,899,000"
"quantity": 1
},
{
"productId": 20
"name": "Mac Pro"
"price": "₩73,376,000"
"quantity": 2
}
]
}
(축약된 요청 메세지)
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"
}
(축약된 요청 메세지)
DELETE /shop/bag HTTP/1.1
Headers: {
"HOST": "https://www.apple.com/kr"
"Authroization": "kldiduajsadm@9df0asmzm" (유저가 본인임을 증명할 수 있는 인증/인가 토큰)
}
Body: {
productId: 30
}
(축약된 응답 메시지)
HTTP/1.1 201 SUCCESS
Body: {
"message": "productId 30 DELETED"
}
これらは、実際のプロジェクトで最も多く見られる応答ステータスコードです.Status Codeの数字にはそれぞれ意味があります.このStatus Codeを見るだけで応答が正しいかどうかがわかります.
200: OK
最も一般的なStatus Code
バックエンドサーバ上で要求を無停止処理する応答コード.
私たちは200 OKがほしいです.
201: Created
正常に作成されたステータスコード
ピアPOSTメソッドの要求に従ってバックエンドサーバ上でデータを生成または変更する際に送信されるコード.
400: Bad Request
要求が無効な場合に送信されるStatus Code
要求Bodyに送信された無効なコード.
デジタル文字列ではなく、電話番号を送信する必要がある場合は、Bodyに含まれます.
401: Unauthorized
このリクエストを行うには、ユーザーが先にログインまたは会員に加入する必要があることを意味します.
ex)wishlist,賛機能は会員でなければリクエストを送信できません
403: Forbidden
ユーザーに要求する権限がないことを示します.
アクセスできない情報にアクセスした場合.
ex)有料会員のみがアクセスできるデータを請求する場合
404: Not Found
要求されたURIは存在しない
500: Internal Server Error
サーバエラー時のStatus Code
APIを開発するバックエンド開発者が嫌うコード
Reference
この問題について(TIL 44 , HTTP), 我々は、より多くの情報をここで見つけました https://velog.io/@heyho9292/TIL-44-HTTPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol