[CHAPTER 0] Part 5. 요청(Request)이란 무엇인가
클라이언트(브라우저)가 서버에 데이터를 요구하는 'HTTP 요청(Request)'의 개념과 핵심 구성 요소(메서드, 헤더, 바디)를 라라벨(Laravel) 예시와 함께 알아봅니다
[CHAPTER 0] Part 5. 요청(Request)이란 무엇인가
1. 정의
요청(Request)은 클라이언트(웹 브라우저)가 서버(Railway에 올라간 내 블로그)에게 "이 웹페이지를 보여줘" 혹은 "내가 쓴 이 글을 데이터베이스에 저장해 줘"라고 요구사항을 담아 보내는 정형화된 디지털 편지입니다.
2. 필요한 이유
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
블로그를 개발하다 보면 프론트엔드(화면)에서 글을 작성해 전송했는데 서버(라라벨)가 데이터를 못 받았다고 에러를 띄울 때가 있습니다. 이때 Request의 구조를 모르면 어디서 문제가 생겼는지 찾을 수 없습니다. Request가 어떤 주소로, 어떤 방식(Method)으로, 어떤 보따리(Body)에 데이터를 싸서 보냈는지 까볼 줄 알아야 완벽한 디버깅이 가능합니다.
3. 핵심 개념
브라우저가 서버로 보내는 하나의 Request(요청 편지)는 크게 3가지 구역으로 나뉩니다.
- 스타트 라인 (Start Line): 편지의 맨 첫 줄입니다. "어떤 방식(Method)"으로 "어느 주소(URL)"에 요청하는지가 적혀 있습니다. (예:
POST /posts) - 헤더 (Header): 편지 봉투에 적힌 부가 정보들입니다. 보내는 사람의 브라우저 종류, 데이터의 언어, 로그인 인증 키(쿠키/토큰) 등 서버가 편지 내용을 읽기 전에 알아야 할 배경지식들이 담깁니다.
- 바디 (Body): 편지의 진짜 내용물입니다. 우리가 회원가입할 때 입력한 아이디/비밀번호나, 블로그에 새로 작성한 '글 본문 데이터'가 이 바디라는 상자 안에 숨겨져서 서버로 날아갑니다.
4. 주변 기초 개념
- 메서드 (Method): 요청의 목적(종류)을 나타내는 동사입니다. 단순히 화면을 달라고 할 때는 GET, 새로운 글을 저장해 달라고 데이터를 보낼 때는 POST를 씁니다. (자세한 건 Part 13~16에서 다룹니다.)
- 엔드포인트 (Endpoint): 서버가 요청을 기다리고 있는 구체적인 도착지 주소입니다. (예:
/admin/posts) - 페이로드 (Payload): Request의 바디(Body) 안에 담겨 날아가는 '실제 핵심 데이터 덩어리'를 의미하는 개발 용어입니다.
5. 실제 흐름 (Request 해부하기)
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
케이메이트 - 외국인친구 만들기
방문자가 ZenoBlog에서 '새 글 저장' 버튼을 눌렀을 때, 브라우저가 서버로 몰래 보내는 실제 HTTP Request 메시지는 이렇게 생겼습니다.
POST /admin/posts HTTP/1.1
Host: blog.zeno.it.kr
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0...
Content-Type: application/x-www-form-urlencoded
Cookie: zeno_session=abc123def456...
title=첫+블로그+글&content=반갑습니다&category_id=1
- 1째 줄 (Start Line): "HTTP/1.1 규칙을 써서,
/admin/posts주소로 데이터를 보낼게(POST)!" - 2~5째 줄 (Headers): 목적지는
blog.zeno.it.kr이고, 내 브라우저는 크롬이며, 내가 보낼 데이터 타입은 폼 데이터(form)야. 그리고 내 로그인 인증 세션(Cookie)은 이거니까 확인해 봐. - 빈 줄 (Blank Line): 헤더와 바디를 구분하는 빈 줄입니다.
- 마지막 줄 (Body): (페이로드) 글 제목은 '첫 블로그 글', 본문은 '반갑습니다', 카테고리는 1번이야.
6. 예시 (ZenoBlog 프론트와 백의 소통)
이 Request를 라라벨(Laravel) 코드는 어떻게 주고받을까요?
[클라이언트 측 HTML (보내는 쪽)]
<form method="POST" action="/admin/posts">
<input type="text" name="title" value="첫 블로그 글">
<button type="submit">저장</button>
</form>
사용자가 저장 버튼을 누르면 브라우저가 위에서 본 Request 편지를 만들어 서버로 쏩니다.
[서버 측 라라벨 Controller (받는 쪽)]
public function store(Request $request)
{
// Request 편지의 Body 안에 있는 'title' 값을 뜯어옵니다.
$title = $request->input('title');
// DB에 저장 로직...
}
라라벨은 브라우저가 보낸 복잡한 텍스트 편지를 $request라는 아주 쓰기 편한 도구 상자(객체)로 자동 변환해 줍니다. 우리는 input()이라는 함수만 쓰면 바디에 들어있는 데이터를 쉽게 꺼낼 수 있습니다.
7. 주의점
- Request는 조작이 가능합니다: 브라우저에서 날아오는 Request 메시지는 해커가 'Postman' 같은 개발자 도구를 이용해 맘대로 글자를 바꿔치기해서 보낼 수 있습니다. 따라서 서버는 Request 바디에 담긴 내용(예: 상품 가격, 관리자 권한 여부 등)을 곧바로 믿지 말고 반드시 검증해야 합니다.
- 용량 제한 (Payload Too Large): Request 바디에 너무 큰 데이터(예: 50MB짜리 원본 사진)를 담아서 보내면, 서버 앞단의 안내데스크(Nginx 웹 서버)나 PHP 설정이 "편지가 너무 무겁다(상태 코드 413)"며 수취 거절을 해버립니다. 이 경우 서버 설정 파일에서 허용 용량을 늘려주어야 합니다.
8. 요약
요청(Request)은 클라이언트가 서버에 데이터를 요구하거나 전송하는 메시지입니다. 이 메시지는 목적과 주소가 적힌 스타트 라인, 부가 설명서인 헤더(Header), 그리고 실제 데이터가 담긴 바디(Body)로 구성됩니다. 웹 개발은 결국 이 Request를 어떻게 포장해서 보내고, 서버에서 어떻게 뜯어서 처리할 것인지의 반복입니다.
핵심 용어 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
- 요청 (Request) = 웹 브라우저가 서버에 원하는 작업을 해달라고 보내는 정형화된 데이터 편지
- 메서드 (Method) = GET, POST 등 서버에 요청하는 행동의 목적을 나타내는 명령어
- 헤더 (Header) = 보내는 사람의 브라우저 정보, 인증 쿠키 등 편지의 부가 정보가 적힌 봉투
- 바디 (Body) = 회원가입 폼 데이터나 업로드할 이미지 등 실제 핵심 데이터가 담긴 상자 (페이로드)
- 엔드포인트 (Endpoint) = 클라이언트가 편지를 보내는 서버의 구체적인 목적지 URL
AD









