🌼 HTTP
1️⃣ HTTP(Hyper Text Transfer Protocol)란,
브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(웹 문서를 만들기 위한 언어) 문서를 주고받는데 쓰이는 통신 프로토콜입니다.
2️⃣ HTTP 통신의 요청과 응답 (Request, Response)
클라이언트란(요청 : Request) 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저
서버란(응답 : Response) 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를
🐶 Request 구조
🫥 Request Line
- HTTP 메서드 (GET, POST 등)를 사용해 서버가 수행해야 할 동작을 나타냅니다.
- 요청 타겟 (URL, 또는 포르토콜, 포트, 도메인)을 나타내며, 이들은 요청 컨텍스트에 의해 특정 지어집니다.
- HTTP 버전이 들어갑니다. 응답 메시지에 사용할 HTTP 버전을 알려주는 역할을 합니다.
- 요청에 들어가는 HTTP 헤더는 HTTP 헤더 기본 구조를 따릅니다.
- 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라집니다.
🫥 Body
- request의 마지막 부분에 들어갑니다. 모든 요청에 들어가지는 않고 Get, HEAD, DELETE, OPTIONS처럼 리소스를 가지고 오는 요청은 대부분 본문을 필요로 하지 않습니다.
- 바디는 단일-리소스 본문(single-resource bodies), 다중-리소스 본문(multiple-resource bodies)으로 나눠집니다.
🐶 Response 구조
🫥 Status Line
- 프로토콜 버전, 보통 HTTP/1.1 입니다.
- 상태 코드, 요청의 성공 여부를 나타냅니다. (200, 404, 302 등의 코드)
- 상태 텍스트, 짧고 간결하게 상태 코드에 대한 설명을 글로 나타냅니다. (Not Found)
- 응답에 들어가는 HTTP 헤더는 요청과 마찬가지로 HTTP 헤더의 기본 구조를 따릅니다.
- 대소문자 구분 없는 문자열 다음 콜론 (' : ')이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라집니다.
- 헤더를 세분화하면 General Header, Request Header, Entity Header으로 나눌 수 있습니다.
🫥 Body
- response의 마지막 부분에 들어갑니다. 모든 응답에 들어가지는 않고 201, 204 같은 상태 코드를 가진 응답에는 보통 본문이 없습니다.
- response body는 이미 길이가 알려진 단일 파일로 구성된 헤더 두 개(Content-Type, Content-Length)를 가진 단일-리소스 본문, 길이를 모르는 단일 파일로 구성된 단일-리소스 본문, 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중-리소스 본문 이렇게 크게 3가지로 나눌 수 있습니다.
🐶 HTTP Method
GET
: 존재하는 자원에 대한 요청
POST
: 새로운 자원을 생성
PUT
: 존재하는 자원에 대한 변경 (자원 전체를 갱신)
PATCH
: 존재하는 자원에 대한 변경 (자원 일부를 교체)
DELETE
: 존재하는 자원에 대한 삭제
OPTIONS
: 웹 서버에 지원되는 메서드의 종류를 확인할 경우 사용
General header
: 요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더.
Request header
: 페치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더. == 내가 보내는 메세지의 헤더
Response header
: 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더. == 내가 받은 메세지의 헤더
Entity header
: 컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더.
🐶 HTTP StatusCode
1xx
: Informational - 요청 정보를 처리 중
2xx
: Success - 요청을 정상적으로 처리함
3xx
: Redirection - 요청을 완료하기 위해 추가 동작이 필요함
4xx
: Client Error - 클라이언트의 요청 오류
5xx
: Server Error - 서버 측 오류