HTTP (HyperText Transfer Protocol)


💻HTTPはWebサービス開発者が知るべきコアプロトコルである.HTTP通信がどのように構成され、使用されるべきか、その特徴と概念をまとめてみましょう.
HTTPとは?
HTTP(HyperText Transfer Protocol)は、コンピュータ間でHTMLファイルを交換するコミュニケーション方法または約束である.
HTTPの略記を1つずつ見ていきましょう.

  • HyperText
    :通常のテキストとは異なり、文章や単語などはループ接続されたネットワークで構成されたドキュメントです.

  • Transfer
    :전송の意味を有し、送信された主題と受信された主体の特徴を有する.

  • Protocal
    :협약통신규약とは、物理的に分離されたコンピュータ間でHTMLファイルをどのように交換するかの約束です.
  • 1.HTTPの主な特性
    HTTPはコンピュータ同士の約束だそうです.約束はいつもどの条項に従っているのか、HTTPがどの条項から構成されているのかを理解しましょう.
    Request/Response
    コミュニケーションの核心はリクエストと応答です.
    HTTP通信の核心は要求と応答といえる.
    文字を例にとると,送信者(送信主体)と受信者(受信主体)は明確にしてこそ,よりよくコミュニケーションできる.もし私がbという受信者に連絡して、処理することをcという受信者に連絡したら、良いコミュニケーションがありますか?違うはずです.
    コンピュータ間のコミュニケーションには、明確な要求と応答が必要です.
    ノートパソコンを開く->YouTubeに接続->私が普段好きなYouTubeビデオのリンクをクリックします.
    この時、私のノートパソコンはグーグルのサーバーに要求しました.「子犬のビデオをください」グーグルのサーバーは、このリクエストを処理した後、リクエストを出した私のノートパソコンに再び返信を送信します.「かわいい犬の動画を見せる」
    このように、HTTPは私たちがよく知っているコミュニケーション方式をパソコンのコミュニケーション方式に応用しているので、難しく感じる必要はないようです.
    Stateless
    状態はless(なし)で、直訳すると無状態です.
    これはHTTPの特徴の中で絶対に忘れてはいけない重要な特徴です.
    独立した性質を持つHTTPは,過去の通信,すなわち過去の要求や応答の内容を全く覚えていない.
    すなわち,以前の状態を記憶していないため,通信ごとに必要なすべての情報を含めて要求を送信する.
    開発の過程で、トークンやブラウザにログインするクッキー、セッション、ローカルストレージなどの技術を聞いたことがあるかもしれませんが、これらの技術は、複数回の通信の過程で、連続的なデータ処理(ネットショッピングモールにログインした後、カート機能など)が必要であれば、必要に応じて発生します.
    2. HTTP Request Methods
    HTTPには3つの一般的な方法があります.フロントの角度からそれぞれの方法の意味と意図を整理しました.
    GET
    サーバから特定データ(GET)を受信する際に使用する方法.
    データのみを受信するための最も簡単で最も一般的なHTTPメソッド.
    ex)ショッピングバスケット内の製品の表示
    (축약된 요청 메세지)
    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,998,000"
    			"quantity": 2
    		},
    		{
    			"productId": 20
    			"name": "Mac Pro"
    			"price": "₩79,465,000"
    			"quantity": 1
    		}	
    	]
    }
    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,299,000"
    		"quantity": 1
    	}
    }
    
    (축약된 응답 메시지)
    HTTP/1.1 201 SUCCESS
    Body: {
    	"message": "SUCCESSFULLY CARTS UPDATED"
    }
    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"
    }
    3. HTTP Status Code
    実際のプロジェクトで最もよく見られる応答状態コードを整理した.Status Codeの数字にはそれぞれの意味が含まれており、この数字だけで応答が正しいかどうかがわかります.

  • 200: OK
    最も一般的なStatus Code
    これは、バックエンドサーバ上でリクエストを処理した後に発生する応答コードです.

  • 201: Created
    Status Code(何かが作成されたとき)
    POSTメソッドの要求に応じて、バックエンドサーバ上でデータを生成または変更する際に送信されるコード.

  • 400: Bad Request
    要求が無効な場合に送信されるStatus Code
    主に、要求Bodyに送信されたコンテンツエラー時に使用されるコードです.
  • 401: Unauthorized
    Status Code
  • は、ユーザが要求のためにログインまたは登録する必要があることを示す

  • 403: Forbidden
    ステータスコード(アクセス不可の情報にアクセスしている場合)
    プレイヤーに要求する権限がないという意味です.

  • 404: Not Found
    要求されたURIは存在しない

  • 500: Internal Server Error
    サーバエラー時のStatus Code
    これはAPI開発を行うバックエンド開発者が好まないコードです.
    (フロントが私の間違ったコードではないことを証明)🤷‍♂️