REST API란? 구조부터 장단점까지 한 번에 정리
2024. 3. 5. 18:03
728x90

REST API란?

API (Application Programming Interface)

  • 운영체제나 프로그래밍 언어가 제공하는 기능(파일 제어, 창 제어 등)을 제어할 수 있게 만든 인터페이스.
  • 서로 다른 시스템 사이의 정보/신호 교환을 위한 접점 역할.

REST (Representational State Transfer)

  • 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템을 위한 아키텍처 스타일.
  • HTTP 기반으로 자원에 접근하는 방식을 정의.

REST의 구성 요소

1. 자원 (Resource)

  • 서버에 존재하는 데이터의 총칭.
  • 고유한 URI(URL)를 통해 식별됨.
  • 클라이언트는 URI를 지정하여 CRUD 명령을 수행.

2. 행위 (Verb)

  • 클라이언트가 HTTP Method (GET, POST, PUT, DELETE 등)를 통해 자원 조작.

3. 표현 (Representation)

  • 서버는 JSON, XML 등의 포맷으로 응답 → 이를 '표현'이라 부름.

REST의 주요 특징

서버-클라이언트 구조 (Server-Client Architecture)

  • 역할 분리 명확: 서버는 API 제공, 클라이언트는 사용자 처리.

무상태성 (Stateless)

  • 각 요청은 독립적, 서버는 요청 간 상태를 저장하지 않음 → 구현이 단순하고 서버 부담 낮음.

캐시 가능 (Cacheable)

  • HTTP 기반으로 웹 캐시 기능 활용 가능 → 성능 개선.

일관된 인터페이스 (Uniform Interface)

  • 플랫폼/리소스 타입과 무관하게 동일한 요청 방식 사용 가능.

자체 표현 구조 (Self-Descriptiveness)

  • 메시지(JSON/XML)가 자체적으로 의미를 설명함.

계층 구조 (Layered System)

  • 클라이언트는 중간 서버 여부를 모름 → 보안/로드밸런싱 계층 추가 가능.

장점

  • 별도 인프라 필요 없음 (HTTP 기반)
  • 클라이언트/서버 완전 분리
  • 플랫폼 독립성 확보 (브라우저, 모바일 등)
  • 구조적이면서도 사용이 쉬움

단점

  • 표준 부재: REST를 흉내만 낸 비정상 API 설계 발생
  • HTTP Method 한계: CRUD만으로 복잡한 행위 표현 어려움
  • RDBMS와 표현 방식 불일치 → NoSQL이 더 적합한 경우 많음

마무리

REST는 간단하면서도 확장성 있는 아키텍처입니다.
하지만 단순성 뒤에 숨어 있는 제약도 반드시 고려하여 사용해야 합니다.

반응형