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설계에서 서브 도메인은 일관성 있게 사용
- 클라이언트 개발자 포탈 서브 도메인은 일관성 있게 구성