REST
REST는 무엇인가
Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미한다.
REST의 구성요소
- Resource : HTTP URI
- 모든 자원에 고유한 ID가 존재하고 이것은 서버에 존재한다.
- 자원을 구별하는 ID는 HTTP URI이다.
- client는 URI를 이용해 자원을 저장하고 자원의 상태에 대한 조작을 server에 요청한다.
- Verb : HTTP Method
- HTTP 프로토콜은 CRUD와 같은 여러 Method를 제공한다.
- Representations : HTTP Message Payload
- client가 자원의 상태에 대한 조작을 요청하면 server는 적절한 응답을 보낸다.
- REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태의 representation으로 나타낼 수 있다.
REST의 특징
- Server - Client
- 자원을 가진 쪽이 server, 자원을 요청하는 쪽을 client가라 한다.
- Stateless
- HTTP 프로토콜이 stateless이므로 REST도 무상태성을 갖는다.
- client의 정보를 server에 저장하지 않고 요청에 대해서만 처리한다.
- 서버에 일관성을 부여하고 부담이 줄어든다.
- Cacheable
- HTTP가 가진 캐싱기능을 사용할 수 있다.
- 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
- Layered System
- client는 REST API server만 호출하나 REST server는 다중 계층으로 구성될 수 있다.
- Code-On-Demand(Optional)
- server로 부터 스크립트를 받아서 client에서 실행한다.
- Uniform Interface
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용가능하다.
- 특정 언어나 기술에 종속되지 않는다.
REST API
REST API 설계 기본 규칙
- URI는 정보의 자원을 표현해야 한다.
- resource는 동사보다 명사를 사용하고 대문자보다는 소문자를 사용한다.
- resource의 도큐먼트 이름으로는 단수 명사를 사용한다.
- resource의 컬렉션 이름으로는 복수 명사를 사용한다.
- resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
- 자원에 대한 행위는 HTTP Method로 표현한다.
- URI에 HTTP Method가 들어가면 안된다.
- URI의 행위에 대한 동사 표현이 들어가면 안된다.
- 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
REST API 설계 규칙
- 슬래시 구분자는 계층 관계를 나타내는데 사용한다.
- URI 마지막 문자로 슬래시를 포함하지 않는다.
- 하이픈은 URI 가독성을 높이는데 사용
- 밑줄은 URI에 사용하지 않는다.
- URI 경로에는 소문자를 사용하도록 한다.
- 파일 확장자는 URI에 포함시키지 않는다.
- 리소스 간에 연관 관계가 있는 경우
/리소스명/리소스ID/관계가 있는 다른 리소스명