REST란??
REST 정의
- REST (Representational State Transfer)
- 자원의 표현에 의한 상태 전달
자원의 표현
- 리소스를 표현하기 위한 이름을 말한다.
- 예를 들면, DB내의 차의 정보가 리소스라고 하면, 'cars'라고 하는 것은 자원의 표현이다.
상태 전달
- 데이터가 요청되어지는 시점에서 자원의 상태 전달.
- JSON 혹은 XML을 통해 데이터 주고받는 것이 일반적.
REST의 구체적인 개념
- HTTP URI : 웹사이트의 이미지, 텍스트 등 모든 리소스의 고유한 ID
- CRUD (Create:POST, Read:GET, Update:PUT, Delete:DELETE)
REST의 장단점
REST의 구성 요소
자원 (URI)
행위 (Verb) = HTTP Method
- HTTP 프로토콜의 메소드 (GET, POST, PUT, DELETE)
표현 (Representation)
- 클라이언트가 상태에 대한 변화 요청 시 server는 적절하게 응답.
- JSON, XML, TEXT, RSS 등 여러 형태로 응답 가능하다.
- JSON, XML이 일반적.
REST 특징
Server-Client (서버-클라이언트 구조)
- 서버 : 자원 있는 side, 클라이언트 : 자원 요청하는 side
- Rest server : API 제공하고 비즈니스 로직 처리
- Client : 사용자 인증 등을 직접 관리한다.
Stateless (무상태성)
- 서버는 각각의 요청을 별개의 것으로 인식한다.
- 이전의 컨텍스트를 저장하지 않는다. (기억하지 않는다.)
Cacheable (캐시 처리가능)
- 캐시 사용을 통해 응답시간 빨라진다. 대량의 요청을 효율적으로 처리가능.
Layered System (계층화)
- 클라이언트는 rest API 서버만 호출할 수 있다.
REST API 설계 기본 규칙
리소스 원형 (Resource는 명사, 소문자를 사용)
Document (도큐먼트)
- 객체 인스턴스와 유사하다.
- 하나의 객체단위로 하는 단일 정보.
- ex) 1, 2, 3, lee...
- resource의 document이름은 단수 명사로!!!
Collection (컬렉션)
- 서버에서 관리하는 document의 집합.
- ex) projects...
- resource의 collection이름은 복수 명사로!!!
Store (스토어)
- 클라이언트에서 관리하는 document의 집합.
- ex) classmates, favorites ....
- resource의 store이름은 복수 명사로!!!
자원에 대한 행위는 HTTP METHOD
- URI에 HTTP method가 들어가면 안된다.
- GET/cars/delete/2 =====> DELETE/cars/2
- URI 행위에 대한 동사 표현이 들어가면 안된다.
- GET/cars/show/2 =====> GET/cars/2
- GET/cars/insert/2 ====> POST/cars/2
URI 설계 기본 규칙
슬래시 구분자(/)는 계층 관계 나타낸다.
URI 마지막 문자로 슬래시 포함하지 않는다.
하이픈(-)은 URI 가독성을 높인다.
밑줄(_)은 URI에 사용하지 않는다.
- 문자가 가끔가다 가려지기도 하기 때문에 사용하지 말자.
URI 경로에는 대문자가 아닌 소문자로!
파일 확장자는 URI에 포함하지 않는다.