REST란?
1️⃣ REST 개념
- 네트워크 상에서 자원을 관리하고 상호작용하기 위한 아키택처 스타일
- 주로 웹 애플리케이션 API 설계에 사용됨
- 즉, 인터넷에서 데이터를 주고받는 방법이다.
- 예를 들어, 웹사이트에서 필요한 정보를 가져오거나 데이터를 저장할 때 REST를 사용한다.
2️⃣ REST 주요 구성 요소
1. 리소스 (Resource)
2. HTTP 메서드
- 자원에 대한 작업을 지정하는 표준 HTTP 메서드
- 즉, 데이터를 어떻게 처리할지 결정하는 명령어라고 생각하면 된다.
- GET: 리소스 조회
- POST: 새로운 리소스 생성
- PUT: 기존 리소스 수정 or 교체
- PATCH: 리소스 일부만 수정
- DELETE: 리소스 삭제
3. 표현 (Representation)
- 리소스는
JSON
, XML
등 다양한 형식으로 표현 가능하다.
JSON
이 가장 많이 사용된다.
3️⃣ REST 설계 원칙
1. 상태 비저장 (Stateless)
- 서버는 클라이언트의 상태를 저장하지 않는다.
- 각 요청은 독립적이며 필요한 정보를 포함해야 한다.
2. 클라이언트-서버 분리
- 클라이언트와 서버는 서로 독립적으로 설게한다.
- 클라이언트는 UI를 관리하고, 서버는 데이터 처리를 담당.
3. 캐시 가능 (Cacheable)
- HTTP 캐싱을 활용하여 요청 응답 성능을 최적화
- 자주 요청되는 데이터는 저장해서 빠르게 불러올 수 있다.
4. 계층화 (Layered System)
- 중간 계층 (프록시, 로드 밸런서, 캐시 서버 등)을 통해 클라이언트-서버 간 통신 가능
5. 통일된 인터페이스
4️⃣ REST 장점 / 단점
1. 장점
- 간단하고 직관적: HTTP 기반으로 이해하기 쉬움
- 확장성: 클라이언트와 서버가 독립적으로 확장 가능
- 캐싱 가능: HTTP 캐시로 성능 최적화
- 호환성: 다양한 플랫폼에서 사용 가능
2. 단점
- 상태 비저장 설계로 인해 클라이언트가 요청 데이터를 반복적으로 전송해야 함
- 복잡한 쿼리 처리에는 REST보다 GraphQL이 더 적합할 수 있음
- 대규모 데이터 처리나 배치 작업에는 적합하지 않음
5️⃣ REST와 다른 기술 비교
- SOAP: 더 구조화된 프로토콜, 보안 및 트랜잭션 관리에 강점
- GraphQL: 유연하고 단일 요청에서 여러 리소스를 조회 가능
✅ REST 활용 상황
영화 정보를 보여주는 앱
당신은 영화 정보를 제공하는 앱을 개발하고 있다고 가정한다.
이 앱에서는 사용자들이 최신 영화 목록과 특정 영화의 세부 정보를 확인할 수 있어야 한다.
REST를 이용해 데이터를 주고받는 과정
1. 사용자가 앱에서 최신 영화 목록을 보려고 한다.
- 앱이 REST API의 GET 요청을 보낸다.
//plaintext
GET https://api.movies.com/latest
- 서버는 최신 영화 목록 데이터를 JSON 형식으로 반환한다.
// JSON
[
{ "id": 1, "title": "The Great Adventure", "year": 2023 },
{ "id": 2, "title": "Mystery Night", "year": 2023 }
]
2. 사용자가 특정 영화의 상세 정보를 보려고 한다.
- 앱이 REST API의 또 다른 GET 요청을 보낸다.
//plaintext
GET https://api.movies.com/movies/1
- 서버는 ID가 1인 영화의 상세 정보를 반환한다.
// JSON
{
"id": 1,
"title": "The Great Adventure",
"year": 2023,
"genre": "Adventure",
"rating": 4.7
}
3. 사용자가 새로운 영화를 추가하려고 하낟.
- 앱이 REST API의 POST 요청을 보낸다.
//plaintext
POST https://api.movies.com/movies
Content-Type: application/json
// JSON
{
"title": "New Blockbuster",
"year": 2024,
"genre": "Action"
}
- 서버는 새로운 영화가 성공적으로 추가되었음을 알리고, 새 영화의 ID를 반환한다.
// JSON
{ "id": 3, "message": "Movie added successfully." }
REST의 역할
- REST는 이렇게 앱(클라이언트)와 서버가 서로 데이터를 주고받는 역할을한다.
- 서버는 데이터를 제공하거나 처리하고, 앱은 그 데이터를 사용자에게 보여주거나 활용한다.
중요한 점
- URL로 리소스(데이터)를 명확히 구분할 수 있다.
- HTTP 메서드로 데이터 처리 방식을 표현한다.
(GET: 조회, POST: 생성, PUT: 수정, DELETE: 삭제)
- 데이터는 주로 JSON 형식으로 주고받아서 가볍고 읽기 쉽다.