REST API (RESTful API)
REST API란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻합니다. 그렇다면 REST API에 대해 알기 위해서는 REST 아키텍처의 제약 조건이 무엇인지, API(application programming interface)가 무엇인지 알아야 할 것 같습니다.
REST(Representational State Transfer)
REST란 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미합니다. 구체적으로 HTTP URI를 통해 자원(Resource)을 명시하고, HTTP method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.
REST의 장단점
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 별도의 인프라 구축 불필요
- HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용 가능
- 의도하는 바를 쉽게 파악할 수 있음
- 서버와 클라이언트의 역할을 명확하게 분리
단점
- 표준 부재
- HTTP method 형태가 제한적
- 구형 브라우저가 제대로 지원해주지 못하는 부분 존재
REST 특징
- Server-Client 구조
자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트가 되어 서버는 API를 제공하고 비즈니스 로직 처리 및 저장을 책임지고, 클라이언트는 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임집니다.
- Stateless (무상태)
HTTP 프로토콜은 Stateless 프로토콜이므로 REST 역시 무상태성을 갖습니다. 클라이언트의 context를 서버에 저장하지 않기 때문에 구현이 단순해집니다. 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리합니다.
- 캐시 처리 가능
HTTP가 가진 특징 중 하나인 캐싱 기능을 적용할 수 있어 대량의 요청을 효율적으로 처리할 수 있습니다.
- 계층화
클라이언트는 REST API 서버만을 호출합니다. REST API 서버는 다중 계층으로 구성할 수 있어 구조상의 유연성을 줄 수 있고, 로드밸런싱, 공유 캐시 등을 통해 확장성과 보안성을 향상시킬 수 있습니다.
- 인터페이스 일관성
API (Application Programming Interface)
API란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간 상호작용을 촉진하며, 서로 정보를 교환가능하도록 하는 것입니다.
REST API
REST API 설계 기본 규칙
- URI는 정보의 자원을 표현
- 동사보다는 명사, 대문자보다는 소문자
- 도큐먼트 이름으론 단수 명사, 컬렉션, 스토어 이름으로는 복수 명사
ex) GET /Member/1
-> GET /members/1
- 자원에 대한 행위는 HTTP method로 표현
- URI에 HTTP method가 들어가면 안됨
ex) GET /members/delete/1
-> DELETE /members/1
- URI의 행위에 대한 동사 표현이 들어가면 안됨
ex) GET /members/insert/1
-> POST /members/1
- 경로 부분 중 변하는 부분은 유일한 값으로 대체
ex) id는 하나의 특정 리소스를 나타내는 고유한 값
REST API 설계 규칙
/
는 계층 관계를 나타낼 때 사용
- URL 마지막 문자로
/
사용하지 않음
-
은 URI 가독성을 높이는데 사용
_
은 URI에 사용하지 않음
- URI 경로에는 소문자가 적합
- 파일 확장자는 URI에 포함하지 않음
- 리소스 간 연관 관계가 있는 경우 : /리소스명/리소스ID/관계가 있는 리소스명
ex) GET /users/{userid}/devices