We.TIL 19 : HTTP

김기욱·2020년 8월 5일
0

We.TIL

목록 보기
30/69

HTTP 구조 및 핵심요소

HTTP란?
HyperText Transfer Protocol의 약자.
HTML 문서를 교환하기 위해 만들어진 Protocol(통신규약)
즉 웹상에서 네트워크로 서버끼리 통신을 할 때, 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 '통신형식' 또는 '통신구조'라고 보면 된다.
프론트엔드 서버와 클라이언트 간 혹은 백엔드와 프론트엔드 서버간 통신에 사용된다.
HTTP는 TCP/IP 기반으로 되어있다.

HTTP의 핵심요소
HTTP 통신 방식
HTTP는 기본적으로 요청/응답(request/response)구조로 되어있다.
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보낸다
클라이언트와 서버의 모든 통신이 요청과 응답으로 이뤄진다.

HTTP Request구조
HTTP request 메시지는 크게 3부분으로 구성된다.

  • start line
  • headers
  • body

Start line
말 그대로 HTTP request의 첫 라인
HTTP request의 start line또한 3부분으로 구성되어 있다.

  • HTTP Method :
    1) 해당 request가 의도한 action을 정의하는 부분
    2) HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등등이 있다.
    3) 주로 GETPOST가 많이 쓰인다.
  • Request target
    1) 해당 request가 전송되는 목표 uri
    2) 예를 들어 /login
  • HTTP Version
    1) 말 그대로 사용되는 HTTP 버전

예시 : GET /search HTTP/1.1

Headers
해당 request에 대한 추가정보(additional information)을 담고있는 부분
예를 들어, request 메시지 body의 총 길이 등.
Key : Value 값으로 되어있다. (:이 사용된다)

예시 : HOST: google.com Key = HOST, Value = google.com

Headers도 크게 세 부분으로 나눠지지만 (general headers, request headers, entity headers) 너무 자세하므로 세 부분으로 구성되어 있다는것만 알아도 된다.

Body
해당 request의 실제 메시지/내용
Body가 존재하지않는 request도 많다
(예를 들어, GET request들은 대부분 body가 없는 경우도 많다)

HTTP Request의 예시

HTTP Response의 구조
Response도 request와 마찬가지로 크게 3부분으로 구성되어있다.

  • Status line
  • Headers
  • Body

Status Line
Response의 상태를 간략하게 나타내주는 부분
3부분으로 구성되어 있다.

  • HTTP 버전
  • Status Code : 응답상태를 나타내는 코드(숫자로 구성, ex: 200)
  • Status text : 응답상태를 간략하게 설명해주는 부분("Not Found")

Headers

  • Request의 headers의 동일하다
  • 다만 response에서만 사용되는 headers 값들이 존재한다
    (예를 들어 User-Agent 대신에 Server 헤더가 사용된다)

Body

  • Response의 body와 일반적으로 동일하다
  • Request와 마찬가지로 모든 Response가 body가 있지는 않다. 데이터 전송할 때 필요가 없을 경우 body가 비어있게 된다.

자주 쓰이는 HTTP Methods
GET
이름 그대로 어떠한 데이터를 서버로 받아(get)올때 주로 사용하는 Method
데이터 생성/수정/삭제 없이 받아오기만 할 떄 사용된다
가장 간단하고 많이 사용되는 HTTP Method
언급한대로 주로 데이터를 받아올 때 사용되기 때문에 request에 body를 안보내는 경우가 많다

POST
데이터를 생성/수정/삭제 할 때 주로 사용되는 Method
데이터를 생성 및 수정 할 때 많이 사용하기 때문에 대부분의 경우 request body가 포함되서 보내진다

알고있으면 좋은 HTTP Methods
OPTIONS
주로 요청 URI에서 사용할 수 있는 Method를 받아 올 때 사용된다.
예를 들어, /update uri에서 어떤 method를 요청 가능한가(GET? POST?)를 알고 싶으면 먼저 OPTIONS 요청을 사용해서 확인하게 된다.

PUT
POST와 비슷하다. 데이터를 생성할 때 사용되는 Method
POST와 비슷하기 때문에 PUT을 사용하는 곳도 있고, POST만 쓰는 곳도 있는데 최근 몇년 사이에는 POST에 밀려 잘 사용 안되는 추세

DELETE
특정 데이터를 서버에서 삭제 요청을 보낼 떄 쓰이는 Method
PUT과 마찬가지로 POST에 밀려서 잘 사용안되는 추세

자주 쓰이는 HTTP Status Code
200 : OK

  • 가장 자주 보게되는 Status code
  • 문제없이 다 잘 실행 되었을 때 보내는 코드

301 : Moved Permanently

  • 해당 URI가 다른 주소로 바뀌었을 때 보내는 코드

400 : Bad Request

  • 해당 요청이 잘 못된 요청일 때 보내는 코드
  • 주로 요청에 포함된 input 값들이 잘 못된 값들이 보내졌을 때 사용되는 코드
  • 예를 들어, 전화번호를 보내야 되는데 text가 보내졌을 떄 등등

401 : Unauthorized

  • 유저가 해당 요청을 진행 할려면 먼저 로그인을 하거나 회원가입을 하거나 등등이 필요하다는 것을 나타내려 할 때 쓰이는 코드

403 : Forbidden

  • 유저가 해당 요청에 대한 권한이 없다는 뜻
  • 예를 들어, 오직 과금을 한 유저만 볼 수 있게 데이터를 요청 했을 때 등

404 : Not Found

  • 요청된 uri가 존재 하지 않는다는 뜼

500 : Internal Server Error

  • 서버에서 에러가 났을 때 사용되는 코드
  • API 개발을 하는 백엔드 개발자들이 싫어하는 코드
profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글