HTTP란?

yeonjeong·2025년 1월 30일
post-thumbnail

이전 글에서 HTTP는 클라이언트와 서버 간의 데이터 통신을 정의하는 프로토콜로, 주로 http,https를 사용한다고 말씀드렸습니다.

웹에서 클라이언트와 서버 간의 요청 및 응답을 주고받는 프로토콜이라고 말씀드렸는데, 이번 글에서는 이 http가 어떤 것인지 좀 더 알아보는 글을 작성하려고 합니다.

HTTP는 클라이언트와 서버 간에 요청과 응답을 주고받는 방식으로 동작하는 애플리케이션 계층 프로토콜입니다.

HTTP 메시지

클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신합니다.
보통 브라우저인 클라이언트에 의해 전송되는 메시지를 "요청(requests)"이라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지 "응답(responses)"이라고 부릅니다.

요청(Requests)

시작 줄

(1) HTTP Method

: 서버가 수행해야 할 동작을 나타냄

  • GET: 리소스를 클라이언트로 가져다달라는 것을 의미
  • POST: 데이터가 서버로 들어가야 하는 것을 의미
  • PUT: 리소스를 대체(전체), 해당 리소스가 없으면 생성
  • PATCH: 리소스 부분 변경
  • DELETE: 리소스 삭제
  • PUT은 리소스를 완전히 교체하는 반면, PATCH는 리소스의 일부만 수정

GET /index.html HTTP/1.1
POST /submit-form HTTP/1.1
PUT /update-item/123 HTTP/1.1
PATCH /edit-profile HTTP/1.1
DELETE /delete-item/123 HTTP/1.1

(2) 요청 타겟

: 요청 타켓은 URL, 프로토콜, 포트, 도메인, 쿼리문자열 등을 포함 할 수 있다.

  • 가장 일반적인 형식이자, "origin 형식"으로 알려진 절대 경로입니다. 이 형식은 끝에 "?"와 쿼리 문자열이 따라옵니다.

GET / POST / HEAD / OPTIONS 메서드와 같이 사용됩니다.

POST / HTTP/1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0

(3) 상태코드

: 요청에 대한 성공여부를 나타내는 코드

  • 1XX(조건부 응답): 요청을 받았으며 작업을 계속 진행
  • 2XX(성공): 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 의미
  • 3XX(리다이렉션 완료): 클라이언트는 요청을 마치기 위해 추가 동작을 취해야함을 의미
  • 4XX(요청 오류): 클라이언트에 오류가 있음을 의미
  • 5XX(서버 오류): 서버가 유효한 요청을 명백하게 수행하지 못함을 의미

2XX: 200OK
4XX: 404 Not Found
5XX: 500 Internal Server Error

Headers

: 대소문자 구분하지 않으며,"Key:value"형식으로 전송

  • User-Agent(브라우저 정보), Accept(서버에서 원하는 형식 응답) 와 같은 request 헤더는 요청의 내용을 좀 더 구체화 시키고, 컨텍트를 제공하기도 하며, 조건에 따른 제약 사항을 주기도 하면서 요청 내용을 수정
  • 메시지 데이터의 원래 형식과 적용된 인코딩을 설명하는 Content-Type 있음
> Content-Type: application/json // 클라이언트나 서버가 보내는 데이터 형식

Body(본문)

: 모든 요청에 본문이 들어가지는 않음(GET, HEAD, DELETE, OPTIONS 처럼 리소스를 가져오는 요청은 보통 본문이 필요 없음)

일부 요청은 업데이트를 하기 위해 서버에 데이터를 전송하고, 보통(HTML 폼 데이터를 포함하는) POST 요청일 경우.

PUT 요청은 리소스를 교체하기 위해 본문을 포함

응답(response)

  • 서버의 메타 정보로, 요청을 처리한 서버가 어떻게 응답할지에 대한 내용을 담고 있음
profile
Backend 개발자로 거듭나는 그 날까지 !

0개의 댓글