📌 1. REST란 무엇인가?
1.1 정의
**REST (Representational State Transfer)**는 웹 기반 시스템 설계를 위한 아키텍처 스타일입니다. 이는 2000년 Roy Fielding의 박사 논문에서 처음 제안되었습니다. REST는 구체적인 구현 기술이 아니라, 시스템 간 상호작용이 어떻게 이뤄져야 하는지에 대한 일련의 원칙과 제약 조건들로 구성됩니다.
1.2 REST의 주요 제약 조건
REST 아키텍처 스타일은 다음과 같은 제약 조건을 따릅니다:
- 클라이언트-서버 구조 (Client-Server Architecture)
클라이언트는 사용자 인터페이스(UI)를 담당하고, 서버는 데이터 저장과 처리를 담당합니다. 이 분리는 서로의 역할을 독립적으로 발전시킬 수 있게 해줍니다. - 무상태성 (Stateless)
각 요청은 독립적이어야 하며, 서버는 이전 요청에 대한 정보를 저장하지 않습니다. 모든 요청은 필요한 모든 정보를 포함해야 합니다. - 캐시 처리 가능 (Cacheable)
서버의 응답은 캐시가 가능해야 하며, 이를 통해 성능을 향상시킬 수 있습니다. - 일관된 인터페이스 (Uniform Interface)
REST의 핵심 원칙 중 하나로, 모든 API는 일관된 방식으로 접근할 수 있어야 합니다. 대표적인 예가 HTTP 메서드(GET, POST, PUT, DELETE 등) 사용입니다. - 계층화된 시스템 (Layered System)
클라이언트는 직접 서버에 연결되는 것이 아니라, 중간 서버를 통해 데이터가 전달될 수 있습니다. 이는 보안, 로드 밸런싱 등에 유리합니다. - 코드 온 디맨드 (Code on Demand, 선택적)
클라이언트가 서버로부터 코드를 받아 실행할 수도 있습니다. (예: JavaScript)
📌 2. REST API란?
2.1 정의
REST API는 위에서 설명한 REST의 제약 조건을 일정 수준 이상으로 따르는 웹 API입니다.
즉, HTTP 프로토콜을 기반으로 하여, 클라이언트와 서버 간에 리소스를 주고받는 방식으로 동작합니다.
2.2 특징
- 리소스 기반: 데이터는 "리소스(Resource)"로 표현되며, 각 리소스는 고유한 URI로 식별됩니다. 예: /users/123
- HTTP 메서드 사용:
- GET: 리소스 조회
- POST: 리소스 생성
- PUT: 리소스 전체 수정
- PATCH: 리소스 부분 수정
- DELETE: 리소스 삭제
- Stateless한 통신을 지향
- JSON 또는 XML 등의 포맷을 주로 사용하여 데이터를 주고받음
2.3 REST API의 예시
메서드 URI 설명
GET | /users | 모든 사용자 조회 |
GET | /users/1 | ID가 1인 사용자 조회 |
POST | /users | 새로운 사용자 생성 |
PUT | /users/1 | ID가 1인 사용자 정보 전체 수정 |
DELETE | /users/1 | ID가 1인 사용자 삭제 |
📌 3. RESTful API란?
3.1 정의
RESTful API는 REST API 중에서도 REST의 원칙을 충실하게 구현한 API를 뜻합니다.
즉, "REST에 가깝거나 이상적인 구현"이라는 의미에서 "RESTful"이라는 형용사를 붙여 사용합니다.
RESTful API는 다음을 충족해야 합니다:
- URI는 리소스를 나타내야 하며, 동사를 포함하지 않아야 함
(예: /getUser?id=1 ❌ → /users/1 ✅) - HTTP 메서드를 정확하게 사용해야 함
(예: 데이터를 조회하는데 POST 사용 ❌ → GET 사용 ✅) - 서버와 클라이언트 간의 요청과 응답은 무상태성이어야 함
- 요청의 결과는 표현 상태(Representations)로 반환되어야 함 (보통 JSON)
3.2 RESTful하지 않은 API의 예
POST /getUser
Body: { "id": 123 }
- 문제점:
- 리소스를 식별하는 URI가 명확하지 않음
- HTTP 메서드가 의미에 맞지 않게 사용됨
3.3 RESTful한 API로 개선
GET /users/123
- URI가 리소스를 명확하게 나타냄
- GET 메서드 사용으로 조회 목적이 명확함
📌 4. 차이점 요약
항목 REST REST API RESTful API
정의 | 아키텍처 스타일 (개념적) | REST 원칙을 따르는 API | REST 원칙을 잘 지킨 API |
형태 | 이론적 | 구현 방식 | 구현 품질 강조 |
예시 | 원칙: 무상태성, 일관된 인터페이스 등 | /users/1 등의 리소스 중심 API | REST에 거의 완벽하게 부합하는 API |
관계 | API 설계 철학 | 철학을 따른 실현 형태 | 그 중에서도 모범 사례에 가까운 것 |
📌 5. 결론
REST, REST API, RESTful API는 서로 깊은 관련이 있는 용어지만 엄연히 다른 층위의 개념입니다.
- REST는 아키텍처 스타일, 즉 개념입니다.
- REST API는 REST의 제약 조건을 반영해 만든 실제 API 구현체입니다.
- RESTful API는 REST의 철학을 충실히 구현한 API를 의미합니다.
'게으른 개발자의 끄적거림' 카테고리의 다른 글
Open Api란?(feat. 완벽 정리) (0) | 2025.05.13 |
---|---|
HTTP 402error란? (0) | 2025.04.18 |
HTTP 401error란? (0) | 2025.04.10 |
스프링 @Bean 어노테이션이란? (0) | 2025.03.23 |
Java DB연결 방법 완벽 정리 (0) | 2025.03.20 |