HTTP (HyperText Transfer Protocol)


HTTP(HyperText Transfer Protocol)は、Webサービス開発者が知るべきコアプロトコルである.
HTTP通信の構成と使用方法について説明します.
< KEY Point > 1.HTTPはコンピュータ間のコミュニケーションのための通信規約である。 2.HTTP通信は要求と応答からなる。 3.HTTP通信の各要求や応答は以前の状態を知らない.(Stateless)

1. HTTP


HTTPとは? これは、コンピュータ同士でHTMLファイル(HTMLで作成されたページ)を交換できるコミュニケーション方法や約束です。

  • HyperText
    HTTPでは、HyperTextはHTMLのHyperTextと同じ意味です.
    言い換えれば、HTMLをもっと詳しく分析すれば、文書と文書をリンクしたタグで構成された言語です.言い換えれば、HTMLは、ウェブページを作成するためにウェブブラウザ上で操作される言語である.

  • Transfer
    辞書の意味で「伝える」という意味があります.伝送に重大な意義がある.転送は簡単な言葉で「物や手紙などを送る」と言います.これは意味します.
    私たちが作成したウェブサイトを他のコンピュータに転送して、他の人と共有する必要があります.また,伝送は送信主体と受信主体の2つの大きな特徴を有する.

  • Protocol
    プロトコルは、プロトコル、通信規約の意味を有する.これは物理デバイス上でHTMLファイルをどのように交換するかについての約束です.
    コンピューターにもコンピューター間のコミュニケーション方法が必要です.このようなコミュニケーションや約束が必要なのがHTTPです.
    私たちが使っているインターネット上のコミュニケーションの多くはHTTPプロトコルに従っています.
  • 2.HTTPの二大特徴


    (1)リクエスト/レスポンス(リクエスト/レスポンス)


    コミュニケーションの核心はリクエストと応答です

    HTTP通信の核心は要求と応答である.
    以前にHTTPの3番目のキーワードTransferについて説明したとき,送信主体と受信主体が伝送されていることを示した.送信主体は受信主体に要求を送信し,受信主体は送信要求の主体に応答を送信する.
    コンピュータ間のコミュニケーションもそうです.結局、人が必要に応じて創造したコミュニケーション方式なので、私たちのコミュニケーション方式とはあまり違いません.

    (2) Stateless


    State(ステータス)+less(なし)

    HTTPの説明では、HTTPの特徴が無状態であることを絶対に忘れてはいけない.文字通りState(ステータス)+less(なし)です.
    各HTTP通信(リクエスト/レスポンス)は独立しているため、過去の通信(リクエスト/レスポンス)については何も知らない.以前の状態が何を意味しているのか全く分からない.
    各通信には、要求を送信するために必要なすべての情報が含まれます.たとえば、すでに自己紹介をしている人が同じ内容で自己紹介を続けているようなものです.
    したがって、複数回の通信(リクエスト/レスポンス)中に連続的なデータ処理(ex.オンラインショッピングモール登録後のカート機能)が必要であれば、トークンやブラウザのクッキー、セッション、ローカルストレージなどの技術を登録する必要がある.

    3. Request / Response


    (1)要求メッセージ構造


    HTTPリクエストは、実際には、ワーク(データ処理)を開始するためにフロントエンド(クライアント)からバックエンド(サーバ)へ送信されるメッセージである。 この情報の構造は大体3つの部分から構成されている。
  • Start Line:リクエストの最初のローに相当します.この行も3つの部分から構成されています.
  •    1) HTTP Method: 해당 요청이 의도한 액션을 정의하는 부분. 주로 GET, POST, DELETE가 많이 쓰임
       2) Request target: 해당 request가 전송되는 목표 url 
       3) HTTP Version: 말 그대로 사용되는 HTTP 버전을 뜻한다. 주로 1.1 버전이 널리 쓰임
        
       GET /login HTTP/1.1
       해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
  • Headers:要求に関する追加情報(メタデータ)の部分を含む.
  •    Key: Value 값으로 되어있다 (JavaScript의 객체, Python의 딕셔너리 형태라고 보면 된다)
    자주 사용되는 Headers 의 정보에는 다음이 있다 
    
       Headers: {
    	Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
    	(ex. www.apple.co.kr)
    	User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer)
    	Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
    	Content-Length: body 내용의 길이
    	Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
       }
  • Body:要求された実際の内容.主にBodyを使う方法はPOSTです.
  •    ex) 로그인 시에 서버에 보낼 요청의 내용
       Body: {
    	"user_email": "[email protected]"
    	"user_password": "wecode"
       }

    (2)応答メッセージ構造

  • Status Line:応答の状態を減らします.応答はコンテンツを開始し、クライアント要求の処理ステータスを通知します.
    回答のStatus Lineも3つの部分で構成されています.
  •    1. HTTP Version: 요청의 HTTP버전과 동일
       2. Status Code: 응답 메세지의 상태 코드
       3. Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
    
       HTTP/1.1 404 Not Found
       해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서
    		 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.
    
       HTTP/1.1 200 SUCCESS
       해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에
    		 200 상태 메세지를 보낸다.
    

  • ≪ヘッダー|Header|ldap≫:要求されたヘッダーと同じです.回答の付加情報(メタデータ)を含む部分.
    ただし、応答でのみ使用される情報もあります.(ex.ブラウザ情報を要求するユーザ-Agentではなく、サーバヘッダを使用します.)

  • Body:要求したBodyと同じです.要求された方法が常に存在しないように、応答も応答の形式でデータを送信する必要がなければ、Bodyが存在しない可能性がある.
    最も一般的なBodyデータ型はJSONです.
  •    ex) 로그인 요청에 대해 성공했을 때 응답의 내용
       Body: {
    	"message": "SUCCESS"
    	"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
       }

    4. HTTP Request Methods


    3つの一般的なHTTP通信方法(GET,POST,DELETE)を紹介する。 これらの方法はフロントエンド(クライアント)の立場に立って、要求の意図を含んでいます!

    メソッド:実行するアクションの定義

    (1) GET

  • は、その名の通り、サーバからデータ(GET)を受信する際に主に使用される方法である.
  • データのみを受信するために使用されます.(取得データ、body部分不要)
  • は最も簡単で最もよく使われるHTTP方法である.(実際、ウェブページを開くと、必要なすべての情報がGET方法で要求を送信し、受信応答を画面に表示する)
  • .

    (2) POST

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

  • メソッドの名前から推測できます.これは、サーバ上で削除要求を送信する際に使用されるメソッドです.
  • 5. Response Status Codes


    Status Codeの数字にはそれぞれ意味があります。このStatus Codeを見るだけで応答が正しいかどうかがわかります。

    200: OK

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

    201: Created

  • 正常に作成されたStatus Code
  • バックエンドサーバ上でPOSTメソッドの要求に従ってデータを生成または修正する際に送信コード
  • .

    400: Bad Request

  • 要求が無効であるときに送信されるStatus Code
  • 要求Bodyに送信された無効なコード
  • (主に
  • ).

    401: Unauthorized

  • は、ユーザが先に登録または会員(誰がアクセスするか分からない)に加入する必要があることを意味する
  • .

    403: Forbidden

  • は、ユーザがその要求にアクセスする権限がないことを示す(ex.誰がその要求にアクセスしたかは知っているが、権限がない)
  • .
  • アクセス不可情報の場合は
  • である.

    404: Not Found

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

    500: Internal Server Error

  • サーバエラー時のStatus Code
  • <ソース>wecode(コード起動キャンプ)セッション