본문 바로가기
카테고리 없음

REST API와 HTTP 이해하기: 클라이언트-서버 통신의 기본

by 준생님 2025. 4. 5.

🌐 웹은 결국 ‘요청과 응답’이다

우리가 브라우저에서 웹사이트에 접속할 때, 내부적으로는 클라이언트(브라우저)서버에게 요청을 보내고, 서버는 그 요청에 응답하는 구조입니다.

이 요청과 응답의 방식은 HTTP(HyperText Transfer Protocol)이라는 약속된 규칙을 따릅니다. 그리고 그 위에 구조화된 통신 방식이 바로 REST API입니다.

🚀 REST API란 무엇인가?

REST는 REpresentational State Transfer의 약자로, 리소스(데이터)를 URI로 표현하고, HTTP 메서드로 행위를 명시하는 웹 표준 아키텍처입니다.

쉽게 말해, “리소스를 URL로 지정하고, 어떻게 요청할지 정해진 방식대로 말하자”는 약속입니다.

예를 들어:

  • GET /users → 사용자 목록 조회
  • POST /users → 사용자 생성
  • GET /users/1 → ID가 1인 사용자 조회
  • PUT /users/1 → ID가 1인 사용자 수정
  • DELETE /users/1 → ID가 1인 사용자 삭제

위처럼 URL은 리소스를 표현하고, GET, POST, PUT, DELETE 같은 HTTP 메서드로 의도를 명확히 전달합니다.

📬 HTTP 요청의 구조

HTTP 요청은 다음과 같은 구조로 이루어집니다.

  • Method: 동작 종류 (GET, POST 등)
  • URL: 요청 대상 경로
  • Headers: 부가 정보 (예: 인증 정보)
  • Body: 전송 데이터 (POST, PUT에서 사용)
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "1234"
}

위 예시는 사용자가 로그인 정보를 입력했을 때 서버로 보내는 HTTP 요청입니다.

📦 HTTP 응답의 구조

서버는 요청에 대해 HTTP 응답을 반환합니다. 기본 구성은 다음과 같습니다.

  • 상태 코드 (Status Code)
  • Headers
  • Body (JSON, HTML, XML 등)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "message": "로그인 성공",
  "token": "abc123"
}

이 응답에서 200 OK는 성공을 의미하며, 실제 데이터는 Body에 포함됩니다.

📊 주요 HTTP 상태 코드 정리

코드 의미
200 성공 (OK)
201 생성됨 (Created)
400 잘못된 요청 (Bad Request)
401 인증 실패 (Unauthorized)
403 접근 금지 (Forbidden)
404 찾을 수 없음 (Not Found)
500 서버 오류 (Internal Server Error)

📁 실전 예시: JSONPlaceholder로 API 연습

JSONPlaceholder는 무료 API 테스트용 가상 서버입니다. 아래는 fetch를 이용한 예제입니다.

fetch("https://jsonplaceholder.typicode.com/posts/1")
  .then(response => response.json())
  .then(data => console.log(data));

위 코드는 GET /posts/1 요청을 보내고, 받은 데이터를 콘솔에 출력합니다. 브라우저 콘솔에서 직접 실행해볼 수 있습니다.

🔐 인증과 REST API

실제 서비스에서는 인증(Authentication)이 필수입니다. 대표적인 방식으로는 JWT(Json Web Token)이 있으며, 사용자는 로그인 시 토큰을 받고, 이후 요청마다 해당 토큰을 Header에 실어 보냅니다.

Authorization: Bearer eyJhbGciOi...

서버는 이 토큰을 검증하여 사용자의 권한을 판단합니다.

🎯 정리: REST API는 ‘데이터 통신의 언어’

  • REST API는 HTTP 위에서 동작하는 웹 통신의 표준 구조
  • URL로 리소스를 표현하고, HTTP 메서드로 행위를 명시
  • 클라이언트와 서버는 데이터를 JSON으로 주고받음
  • 상태 코드, 인증, 보안도 함께 고려해야 함

단순한 개념처럼 보이지만, 실제 웹 서비스에서 REST API는 모든 기능의 중추입니다. 제대로 이해하고 구현할 줄 안다면, 프론트엔드든 백엔드든 강력한 개발자가 될 수 있습니다.

✍️ 도움이 되셨다면 댓글이나 공유 부탁드립니다!

다음 글에서는 “데이터베이스와 SQL 기초”를 다룰 예정입니다.