본문 바로가기
프로디지털아카데미

HTTP Request & Response

by SoU330 2025. 8. 17.

 

 

이 글은 알파코에서 진행 중인 [신한투자증권] 프로디지털아카데미 6기 과정 중 백엔드 과목의 김송아 강사님의 강의를 기반으로 작성되었습니다

 

 

 

 

HTTP 웹의 통신 규약 파헤치기

웹 개발의 가장 기본이 되는 HTTP(HyperText TransferProtocol)에 대해 배웠다.

클라이언트와 서버가 서로 데이터를 주고받기 위해 사용하는 약속으로, 요청(Request)과 응답(Response) 두 부분으로 나뉜다.

 

 

 

 

📥 HTTP Request

클라이언트가 서버에게 무언가를 요청할 때 보내는 메시지이다. 크게 세 부분으로 구성된다.

 

Start Line

요청의 가장 첫 줄로, 요청의 핵심 내용을 담고 있다.

  • HTTP Method: 서버에게 요청하는 동작의 종류 (GET, POST, PUT, DELETE)
  • Request Target : 요청 대상 또는 프로토콜, 포트, 도메인의 절대 경로 (/index.html)
  • HTTP Version : 통신에 사용되는 HTTP의 버전 (HTTP/1.1)
HTTP Method의 종류
- GET: 특정 리소스를 조회하고 싶을 때 사용 (게시글 보기)
- POST: 서버에 데이터를 생성하거나 처리를 요청할 때 사용 (글쓰기)
- PUT: 리소스를 전체 수정할 때 사용 (게시글 전체 내용 바꾸기)
- DELETE: 리소스를 삭제할 때 사용 (게시글 삭제)

 

 

 

Header

요청에 대한 부가적인 정보를 담고 있다.

Key: Value 형태로 이루어져 있으며 여러 종류의 헤더가 있다.

  • Request headers : 요청을 더 구체화하는 정보 
  • General headers: 요청과 응답 메시지 모두에 포함될 수 있는 일반적인 정보 (Date: 메시지가 생성된 시간)
  • Entity headers: 메시지 본문에 대한 정보 (Content-Length: 본문의 크기)
Request Headers의 예
- Host: 요청을 보내는 서버의 도메인 이름
- User-Agent: 요청을 보낸 클라이언트의 정보
- Accept: 클라이언트가 이해할 수 있는 데이터 타입 명시
- Content-Type: 요청 본문에 담긴 데이터가 어떤 타입인지 명시

 

 

 

 

Body

서버에 전달하고 싶은 실제 데이터를 담는 부분이다.

GET 요청처럼 단순히 데이터를 조회할 때는 비어있는 경우가 많지만, POST나 PUT처럼 서버에 데이터를 생성하거나 수정해달라고 요청할 때는 이 부분에 데이터를 담아 보낸다.

 

 

 

[HTTP Request 예시]

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (...)
Accept: text/html,*/*;q=0.8

 

 

 

 

 

📤 HTTP Response

응답 메시지는 서버가 클라이언트로 보내는 메세지이다.

Response는 3부분으로 구성되며 각 부분은 Status Line, Header, Body이다.

 

Status Line

Response의 상태를 간략하게 나타내는 부분이다.

HTTP/1.1 404 Not Found
  • HTTP Version : 응답에 사용된 HTTP의 버전이다.
  • Status Code
     처리 결과를 나타내는 세 자리 숫자이다. 이 코드만 봐도 요청이 성공했는지, 실패했는지, 실패했다면 이유는 무엇인지 대략 알 수 있다.
    • 200번대 (성공) : 요청이 성공적으로 처리되었음 (200 OK)
    • 300번대 (리다이렉션) : 요청을 완료하기 위해 추가적인 동작이 필요함
    • 400번대 (요청 오류) : 클라이언트의 요청에 오류가 있음 (404 Not Found)
    • 500번대 (서버 오류) : 서버 측에서 오류가 발생했음 (500 Internal Server Error)
  • Status Text : 상태 코드를 사람이 이해하기 쉽게 짧은 글로 설명한 것

아래는 전에 정리했던 상태코드에 대해 좀 더 자세하게 나타낸 글이다.

https://sou330.tistory.com/71

 

[HTTP] 주요 상태코드 정리

HTTP 상태 코드클라이언트와 서버 간의 요청과 응답 상태를 나타낸다.    크게 100번대에서 500번대의 상태 코드가 있다.1xx : 요청을 수신했으며 처리가 계속되고 있음2xx : 클라이언트의 요청이

sou330.tistory.com

 

 

Header

응답에 대한 부가정보를 답고 있다.

  • Content-Type: 응답 본문에 담긴 데이터가 어떤 타입인지 알려준다. (application/json)
  • Content-Length: 응답 본문의 크기를 바이트 단위로 알려준다.
  • Date: 응답 메시지를 생성한 날짜와 시간

 

Body

클라이언트에게 전달할 실제 데이터가 담겨있다. 

요청한 HTML 문서, 이미지 파일, JSON 데이터 등이 이 부분에 담겨 전달된다.

 

[HTTP Response 예시]

HTTP/1.1 200 OK
Date: Mon, 11 Aug 2025 10:00:00 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
  <h1>Hello, world!</h1>
</body>
</html>

 

 

 

🪞 KPT 회고

Keep (유지할 점)

이전에 HTTP를 공부했던 적이 있어서 강의 내용을 어렵지 않게 따라가고 개념을 다시 한 번 다질 수 있었다.

HTTP의 큰 그림과 핵심 구조를 다시 한번 명확하게 정리하는 계기가 되었다.

Problem (아쉬운 점)

개념적으로는 HTTP 요청과 응답의 구조를 이해하고 있지만 막상 실제 개발에 들어갔을 때는 기능 구현에만 몰두하는 경향이 있어 이 코드가 어떤 HTTP 요청을 만들어낼지, 서버로부터 받은 응답의 헤더에 어떤 정보가 담겨있을지 같은 내용을 고민 해보지 못했다.

Try (개선할 점)

앞으로는 브라우저의 개발자 도구 네트워크 탭을 의식적으로 활용하는 습관을 들여. 내가 작성한 코드가 실제로 어떤 HTTP 요청과 응답을 만들어내는지 확인하며 이론과 실제를 연결하는 훈련을 해야겠다!