게으른 개발자의 끄적거림

REST, REST API, RESTful API 특징 및 차이점 완벽 정리

끄적잉 2025. 5. 7. 14:23

 

 

 

📌 1. REST란 무엇인가?

1.1 정의

**REST (Representational State Transfer)**는 웹 기반 시스템 설계를 위한 아키텍처 스타일입니다. 이는 2000년 Roy Fielding의 박사 논문에서 처음 제안되었습니다. REST는 구체적인 구현 기술이 아니라, 시스템 간 상호작용이 어떻게 이뤄져야 하는지에 대한 일련의 원칙과 제약 조건들로 구성됩니다.

 

1.2 REST의 주요 제약 조건

REST 아키텍처 스타일은 다음과 같은 제약 조건을 따릅니다:

  1. 클라이언트-서버 구조 (Client-Server Architecture)
    클라이언트는 사용자 인터페이스(UI)를 담당하고, 서버는 데이터 저장과 처리를 담당합니다. 이 분리는 서로의 역할을 독립적으로 발전시킬 수 있게 해줍니다.
  2. 무상태성 (Stateless)
    각 요청은 독립적이어야 하며, 서버는 이전 요청에 대한 정보를 저장하지 않습니다. 모든 요청은 필요한 모든 정보를 포함해야 합니다.
  3. 캐시 처리 가능 (Cacheable)
    서버의 응답은 캐시가 가능해야 하며, 이를 통해 성능을 향상시킬 수 있습니다.
  4. 일관된 인터페이스 (Uniform Interface)
    REST의 핵심 원칙 중 하나로, 모든 API는 일관된 방식으로 접근할 수 있어야 합니다. 대표적인 예가 HTTP 메서드(GET, POST, PUT, DELETE 등) 사용입니다.
  5. 계층화된 시스템 (Layered System)
    클라이언트는 직접 서버에 연결되는 것이 아니라, 중간 서버를 통해 데이터가 전달될 수 있습니다. 이는 보안, 로드 밸런싱 등에 유리합니다.
  6. 코드 온 디맨드 (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