Skip to content

REST API란?

RESTful API 내용 정리


REST API란?

REST(Representational state transfer)란 웹 환경에서 아키텍처의 설계 및 개발을 가이드하기 위해 만들어진 소프트웨어 아키텍처 스타일로, RESTful API란 REST 원리를 따르는 API 시스템을 말한다.

REST 구성

REST는 아래의 세 개의 요소로 구성된다.

  • 자원(Resource): URI
  • 행위(Verb): HTTP METHOD
  • 표현(Representations): HTTP Message Pay Load

REST 네트워크 아키텍처의 원리

  • Uniform Interface
    • URI와 URL을 통해서 리소스를 식별함, 아키텍처를 단순화하고 작은 단위로 분리함으로써, 클라이언트와 서버가 독립적으로 변경될 수 있어야 함
  • Stateless(무상태성)
    • 클라이언트의 요청에 대해 클라이언트의 상태를 서버에 저장하지 않음
  • Cacheable
    • 클라이언트는 서버의 응답을 캐시할 수 있어야 함. 클라이언트가 서버의 응답을 캐시하여 재활용하는 것을 통해서 서버의 부하를 절감할 수 있음
  • Self-descriptiveness(자기표현구조)
    • REST API 메시지를 통해 요청하는 데이터를 어떻게 처리해야할지 쉽게 이해 할 수 있는 자체 표현 구조로 구성되어야 함
  • Client - Server 구조
    • 클라이언트와 서버가 분리되어 서로 독립적으로 존재
  • 계층화(Layered System)
    • 서버와 클라이언트 사이에 방화벽/게이트웨이/Proxy 등 다계층 형태를 구성하고 확장할 수 있어야 함

REST API 디자인 가이드

  • URI는 정보의 자원을 표현
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현

URI 설계 원칙(RFC-3986)

  • 슬래시 구분자(/)는 계층 관계를 나타내기 위해 사용
  • URI 마지막 문자로 슬래시(/) 사용 금지
  • 하이픈(-)은 URI 가독성 제고를 위해 사용
  • 언더스코어(_) 사용 금지
  • URI 경로는 소문자로 구성
  • 파일 확장자, 프로그래밍 언어에 의존적인 확장자는 URI에 노출 금지
  • 구현에 의존적인 경로 사용 금지
  • 세션 ID 노출 금지
  • 프로그램의 method명 이용 금지
  • 컬렉션 데이터에 대한 명사는 복수형 사용
  • 컨트롤러 이름으로는 동사나 동사구 사용
  • 경로 부분 중 변하는 부분은 유일한 값으로 대체
  • CRUD 기능을 나타내는 것은 URI에 사용 금지
  • URI Query Parameter 디자인
    • Query Parameter를 통해 컬렉션 결과에 대한 필터링
    • URI 쿼리는 컬렉션 결과를 페이지로 구분하여 나타내는데 사용
  • API설계에서 서브 도메인은 일관성 있게 사용
  • 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 구성