🌐 웹은 결국 ‘요청과 응답’이다
우리가 브라우저에서 웹사이트에 접속할 때, 내부적으로는 클라이언트(브라우저)가 서버에게 요청을 보내고, 서버는 그 요청에 응답하는 구조입니다.
이 요청과 응답의 방식은 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는 모든 기능의 중추입니다. 제대로 이해하고 구현할 줄 안다면, 프론트엔드든 백엔드든 강력한 개발자가 될 수 있습니다.