IT Study/SW 개발 및 프로그래밍

🌐 REST API

cs_bot 2025. 3. 26. 00:19

1. 개요

  • 현대 시스템 간 연동 방식으로 웹 기반 API가 보편화
  • 그중 REST API는 가장 널리 사용되는 아키텍처 스타일 중 하나
  • 클라이언트-서버 간 통신 단순화 및 표준화에 기여

2. REST 개념 및 정의

  • REST(Representational State Transfer)의 약자
  • 2000년 로이 필딩(Roy Fielding)의 박사학위 논문에서 제안된 웹 아키텍처 스타일
  • HTTP 프로토콜 기반의 자원(Resource) 지향 접근 방식
  • 클라이언트와 서버 간 상태 정보를 주고받으며 자원을 표현

3. REST의 구성 요소

  • 자원(Resource)
    • URI(Uniform Resource Identifier)를 통해 표현
    • 고유 식별자 형태로 관리됨
  • 행위(Verb)
    • HTTP 메서드 사용 (GET, POST, PUT, DELETE 등)
    • CRUD(Create, Read, Update, Delete)와 매핑
  • 표현(Representation)
    • 자원 상태를 표현하는 데이터
    • JSON, XML, HTML 등 다양한 포맷 사용
  • 메시지
    • 요청(request)과 응답(response) 구조로 구성
    • Header, Body 등을 통해 부가 정보 전달 가능

4. REST의 6가지 아키텍처 제약 조건

  • 클라이언트-서버 구조
    • 역할 분리로 확장성과 독립성 확보
  • 무상태성(Stateless)
    • 각 요청은 독립적이며, 서버는 클라이언트 상태 저장하지 않음
  • 캐시 처리 가능(Cacheable)
    • 응답 데이터에 캐싱 정보 포함하여 성능 최적화 가능
  • 계층화 시스템(Layered System)
    • 클라이언트는 중간 서버 존재를 인지하지 못함
  • 인터페이스 일관성(Uniform Interface)
    • 일관된 URI 및 HTTP 메서드 활용
  • 코드 온 디맨드(Optional)
    • 클라이언트에 스크립트 코드 전달 가능 (선택 사항)

5. REST API의 작동 방식 예시

  • URI: /users/123
    • GET /users/123 : 사용자 정보 조회
    • POST /users : 사용자 생성
    • PUT /users/123 : 사용자 정보 갱신
    • DELETE /users/123 : 사용자 삭제

6. REST API의 장점

  • HTTP 기반으로 별도 프로토콜 불필요
  • 플랫폼 및 언어 독립적 구조
  • 경량(Lightweight) 구조로 모바일/IoT 환경에 적합
  • 구조적 단순성으로 빠른 개발 및 유지보수 가능
  • 표준 URI 및 HTTP 메서드를 활용한 명확한 인터페이스 정의 가능

7. REST API의 단점 및 한계

  • 무상태성으로 인해 인증 처리 시 매 요청마다 인증 필요
  • 복잡한 트랜잭션 처리 및 비동기 처리가 어려움
  • URI 설계에 대한 명확한 가이드 없을 경우 난해한 구조 발생 가능
  • 표준화가 미흡하여 개발자 간 구현 방식 상이

8. RESTful 설계 시 고려사항

  • 자원의 개념을 명확하게 식별하고 URI로 표현
  • HTTP 메서드를 올바르게 사용하도록 설계
  • 상태코드(HTTP Status Code)를 표준에 따라 정확히 반환
  • URI는 명사 중심, 메서드는 동사 중심으로 사용
  • 메시지 포맷은 JSON을 기본으로 하되 확장성 고려
  • 인증은 OAuth2, JWT 등 별도 보안 계층 통해 처리

9. REST API와 유사/대체 기술 비교

항목 REST API SOAP GraphQL
구조 경량, URI 기반 무겁고 복잡 유연한 질의 언어
표준 HTTP 표준 기반 XML 기반의 엄격한 표준 자체 스키마 정의
메시지 포맷 JSON, XML 등 XML만 지원 JSON 기반
확장성 높은 수준 복잡한 확장 구조 뛰어난 질의 유연성

10. REST API 적용 사례

  • 구글, 페이스북, 트위터, 슬랙 등 글로벌 IT 기업
  • 공공데이터포털 및 민간 오픈 API 서비스
  • 마이크로서비스(MSA) 구조에서 각 서비스 간 통신 수단으로 활용
  • 모바일 백엔드와 클라이언트 앱 간 통신

11. 결론

  • REST API는 단순성과 명확성을 갖춘 현대 웹 시스템의 핵심 통신 방식
  • 아키텍처 제약 조건을 충실히 지키는 설계가 중요
  • RESTful한 설계와 구현을 통해 시스템 간의 상호 운용성과 확장성을 보장할 수 있음
  • 향후 GraphQL, gRPC 등 신기술과의 병행 사용 고려 필요