[WeCode] 2Week - #4 HTTP

UlongChaS2·2021년 6월 2일
0

WeCode

목록 보기
10/17
post-thumbnail

HTTP (HyperText Transfer Protocol)

HyperText

문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어

Transfer

HTML로 만든 웹페이지 문서(파일)를 보낸다

Protocol

물리적으로 떨어진 컴퓨터끼리 어떻게 HTML 파일을 주고 받을 지에 대한 소통 방식 또는 약속

Request / Response (요청 / 응답)

서버로 서로 Request를 주고 Response을 메세지의 형식으로 받는 과정

Request

  1. Start Line
    • HTTP Method: 의도한 액션을 정의하는 부분 (GET, POST, DELETE)
    • Request target: 해당 request가 전송되는 목표 "url"
    • HTTP Version: HTTP 버전
  2. Headers: 해당 요청에 대한 추가 정보(메타 데이터)를 담고있는 부분, Key: Value 형식이다.
    • Host: 요청을 보내는 목표(타겟)의 주소
    • User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex: chrome, firefox, safari)
    • Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex: application/json)
    • Content-Length: body 내용의 길이
    • Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
  3. Body: HTTP Method가 POST일 때 쓰는 요청의 실제 내용 또한 Key: Value 형식으로 들어간다.

Response

  1. Status Line
    • HTTP Version: 요청의 HTTP버전과 동일
    • Status Code: 응답 메세지의 상태 코드
    • Status Text: 응답 메세지의 상태를 간략하게 설명해주는 텍스트
  2. Headers: 요청 Headers내용과 동일, 응답에서만 사용되는 헤더의 정보들이 있다. (ex: 요청하는 브라우저의 정보가 담긴 User-Agent 대신, Server 헤더가 사용된다.)
  3. Body: 경우에 따라 존재하고 데이터 타입은 JSON

Stateless(상태 없음)

  • HTTP개별 통신은 모두 독립적이라 과거의 결과(상태)를 보존하지 않는다.
  • 매 통신마다 필요한 정보를 담아서 요청해야만 한다.

저장이 하지 않는 이유?

몇백만 가지의 정보를 가지고 있으면 충돌할 가능성도 크기 때문에 저장하지 않는 것이 오히려 더 낫다고 생각한다.

HTTP Request Methods

GET

웹페이지에 접속해 필요한 데이터를 받아오기만 할 때
(ex: 장바구니에 담을 것을 데이터로 받아올 때)

프론트의 요청에 벡엔드가 데이터를 바디에 담아서 줌

POST

데이터 생성 / 수정 할 때 (Body에 담는 내용이 핵심) ex) 장바구니를 담을 때 사용

백엔드가 해야할 엑션을 프론트가 요청하면서 데이터를 바디에 담아서 줌

DELETE

서버에 저장된 특정 데이터 삭제 할 때
(ex: 장바구니에 담은 내용을 삭제할 때)

바디에 데이터를 받을 필요 없음 (있으면 크롬에서 데이터를 그냥 없애버림)

status code

Success

  • 200: OK (성공했을 때)
  • 201: Created (처음 생성됐을 때)

Error

  • 400: Bad Request
  • 401: Unauthorized (login 안했을 때)
  • 403: Forbidden (login은 했는데 특별한 회원만 갈 수 있는데 특별한 회원이 아닐 때)
  • 404: Not Found (페이지가 존재하지 않을 때)

Server Error

  • 500: Internal Server (서버가 죽음)

😃느낀점
HTTP통신에 대한 기본 정보가 있어야 백엔드와 얘기가 잘 통할 것 같아서 기초를 탄탄하게 공부해야겠다!

0개의 댓글