HTTP 간단 정리

honeybeeveloper·2022년 8월 17일
0

프론트엔드 시스템과 백엔드 API 시스템은 일반적으로 HTTP 프로토콜을 기반으로 통신한다.

HTTP

HyperText Transfer Protocol
HTML을 서로 주고받을 수 있도록 만들어진 프로토콜

HTTP의 특징

요청과 응답

HTTP는 기본적으로 요청(Request)과 응답(Response) 구조이다.
클라이언트가 먼저 HTTP 요청을 서버에 보내면 서버는 요청을 처리한 후 결과에 따른 HTTP 응답을 클라이언트에게 보낸다.

stateless

각각의 HTTP 통신은 독립적이며 그 전에 처리된 HTTP 통신에 대해서 알지 못한다.
따라서 요청하는 쪽은 요청을 처리하기 위해 필요한 모든 데이터를 매번 포함시켜서 요청을 보내야 한다.

stateless를 보완하기 위해 쿠키(cookie)나 세션(session)을 사용할 수 있다.
cookie는 웹 브라우저가 웹 사이트에서 보내온 정보를 저장할 수 있도록 하는 조그마한 파일. 클라이언트에서 데이터를 저장하기 위해 사용한다.
session은 HTTP 통신상에서 필요한 데이터를 저장할 수 있게 하는 매커니즘. 웹 서버에서 데이터를 저장하기 위해 사용한다.

HTTP 요청 구조

POST /developer HTTP/1.1                  ---------- 1

Accept: application/json                  ---------- 2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: honeybeeveloper.com
User-Agent: Mozilla/4.0

{
	"user": "honeybeeveloper"             ---------- 3
}

HTTP 요청 메시지는 크게 세 부분으로 구성된다.
1. Start Line
2. Header
3. Body

1. Start Line

HTTP Request 시작줄
위 예는 "developer" 엔드포인트에 POST HTTP 요청을 보낸 것이다.

Start Line은 세 부분으로 구성되어 있다.

  • HTTP method : 해당 HTTP 요청이 의도하는 액션을 정의하는 부분
  • Request target : 해당 HTTP 요청이 전송되는 목표 주소
  • HTTP version

2. Header

헤더 정보는 key, value로 되어 있으며 HTTP 요청 그 자체에 대한 정보를 담고 있다.

  • HOST : 요청이 전송되는 target의 호스트의 URL 주소
  • User-Agent : 요청을 보내는 클라이언트에 대한 정보
  • Content-Type : 요청이 보내는 body 데이터 타입
  • Accept : 해당이 요청이 받을 수 있는 응답 body 데이터 타입
    Content-Type, Accept는 MIME type을 사용한다.
    MIME(Multipurpose Internet Mail Extensions) type. 주로 사용하는 타입은 application/json, application/octet-stream, text/html 등이 있다.
  • Connection : 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 연결을 유지할 것인지 아니면 끊을 것인지에 대해 알려주는 정보
  • Content-Length : HTTP 요청이 보내는 메시지 body의 총크기

3. Body

HTTP 요청이 전송하는 데이터를 담고 있는 부분. 전송하는 데이터가 없다면 body 부분은 비어있다.

HTTP 응답 구조

HTTP/1.1 404 Not Found                   ---------- 1

Connection: close
Content-Type: application/json
Content-Length: 1573
Date: Wed, 17 Aug 2022 08:43:02 GMT      ---------- 2

<!DOCTYPE html>
... (생략)                                ---------- 3

HTTP 응답 메시지는 크게 세 부분으로 구성된다.
1. Status Line
2. Header
3. Body

1. Status Line

HTTP 응답 메시지의 상태 표시

Status Line은 세 부분으로 구성되어 있다.

  • HTTP version
  • Status Code : HTTP 응답 상태를 미리 지정되어 있는 숫자로 된 코드로 나타낸 것
  • Status Text : HTTP 응답 상태를 간략하게 글로 설명하는 부분

2. Header

HTTP 요청의 헤더와 유사하다.

3. Body

HTTP 요청의 헤더와 동일하다.





참고 : 책 <깔끔한 파이썬 탄탄한 백엔드>

profile
꿀벌같은 개발자가 되고 싶습니다.

0개의 댓글