Day 26 · 5/5
🌿 중급 백엔드

요청 헤더와 바디의 차이

쉽게 이해하기

HTTP 요청은 택배 상자와 같아요. 택배 상자 겉면에 붙은 송장(보내는 사람, 받는 사람, 택배사 정보)이 헤더이고, 상자 안에 든 실제 물건이 바디입니다. 헤더에는 '이 요청이 어떤 종류인지, 누가 보내는지, 어떤 형식인지' 같은 메타 정보가 있고, 바디에는 실제로 전송할 데이터가 들어있습니다.

핵심 정리

헤더는 요청의 메타 정보, 바디는 실제 보낼 데이터를 담는 곳입니다.

자세히 알아보기

HTTP 요청과 응답은 크게 헤더(Header)와 바디(Body) 두 부분으로 나뉩니다. 헤더는 요청이나 응답에 대한 메타데이터(부가 정보)를 담고, 바디는 실제로 전송할 데이터를 담습니다. 예를 들어 로그인 요청을 보낼 때, 헤더에는 'Content-Type: application/json' 같은 정보가 들어가고, 바디에는 '{"email": "user@example.com", "password": "123456"}' 같은 실제 로그인 데이터가 들어갑니다. 헤더에는 다양한 정보가 들어갑니다. 'Authorization' 헤더에는 인증 토큰을, 'User-Agent'에는 브라우저 정보를, 'Accept'에는 원하는 응답 형식을, 'Cookie'에는 쿠키 정보를 넣죠. 서버는 이 헤더를 보고 요청을 어떻게 처리할지 판단합니다. 예를 들어 'Authorization: Bearer abc123' 헤더가 있으면 서버는 토큰을 확인해서 로그인된 사용자의 요청인지 검증하는 거예요. 바디는 주로 POST, PUT, PATCH 같은 메서드에서 사용됩니다. GET이나 DELETE는 보통 바디가 없고, URL 파라미터나 헤더만으로 요청을 보내죠. 바디에는 JSON, XML, FormData, 일반 텍스트 등 다양한 형식의 데이터를 넣을 수 있고, 'Content-Type' 헤더로 바디의 형식을 알려줍니다. 예를 들어 파일 업로드는 'Content-Type: multipart/form-data'로 헤더를 설정하고, 바디에 파일 데이터를 담아서 보냅니다. 실무에서는 프론트엔드에서 API를 호출할 때 fetch나 axios 같은 라이브러리로 헤더와 바디를 설정합니다. 예를 들어 'fetch('/api/posts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({title: '제목', content: '내용'}) })' 같은 식으로 헤더와 바디를 함께 보내는 거죠.