REST는 Representational State Transfer의 약자이며, 자원을 이름으로 구분하고, 상태를 주고받는 행위
를 의미한다.
웹의 장점을 최대한 활용하기 위한 아키텍처로 발표되었다.
자원 (resource)
: HTTP URI행위 (verb)
: HTTP Method표현 (representations)
: HTTP Message PayloadUIR로 지정한 리소스에 대한 조작을 통일된 인터페이스로 수행한다.
작업을 위한 상태정보를 따로 저장하지 않는다. 세션, 쿠키 정보를 별도로 관리하지 않기 때문에 API 서버는 들어오는 요청만을 처리한다.
이로인해 서비스의 자유도가 높아지고 구현이 단순해진다.
http 웹표준을 그대로 사용하기 때문에, 웹의 인프라를 그대로 사용할 수 있다.
http에서 사용하는 las-modified 태그나 e-tag를 이용해 캐싱을 구현할 수 있다.
REST API 메세지만 보고 이해할 수 있는 자체 표현 구조로 되어 있다.
Client는 사용자 인증이나 세션, 로그인 정보 등을 관리하고, REST 서버는 API를 제공하는 구조로 역할이 확실히 구분된다.
이로인해 Client와 Server에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.
REST 서버는 다중 계층을 ㅗ구성될 수 있고, proxy, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.
리소스명은 명사를 사용한다.
GET /members/delete/1 (X)
DELETE /members/1 (O)
GET /members/insert/2 (X)
POST /members/2 (O)
POST
: 리소스를 생성한다.GET
: 리소스를 조회한다.PUT
: 리소스를 수정한다.DELETE
: 리소스를 삭제한다.Reference