REST
HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용한다.
Create : POST (자원 생성)
Read : GET (자원 정보 조회)
Update : PUT (자원 정보 업데이트)
Delete : DELETE (자원 삭제)
REST 구성요소
자원 URI
- 모든 자원은 ID를 가지고 있고, ID는 서버에 존재하고, 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP에서 이러한 자원을 구별하는 ID는 HTTP URI 이다.
행위 Method
- 클라이언트는 URI를 이용해 자원을 지정하고 조작하기 위해 Method를 사용한다. POST, GET, PUT, DELETE를 제공한다
표현 Representation
- 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation 이라고 한다. REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태로 나타낼수 있다.
REST 특징
무상태성 stateless
- 무상태성 성격을 갖는다. 상태정보를 따로 저장하거나 관리하지 않는다. 쿠기나 세션을 별도로 저장하거나 관리하지 않기 때문에 API 서버는 요청만 단순히 처리하면 된다. 서버에서 불필요한 정보를 관리하지 않아서 단순해진다.
캐시 처리 가능 cacheable
- HTTP를 그대로 사용하기 때문에 캐싱기능을 사용할 수 있다.
자체 표현 구조
- REST API 메세지만 보고 쉽게 이해할 수 있는 구조로 되어있다
계층형 구조
- 클라이언트는 REST API서버만 호출한다
- 프록시, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.
인터페이스 일관성
- URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.
RESTful
- REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어
REST원리는 따르는 시스템을 RESTful이라한다.
목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 만든는것
- 성능향상에 목적을 둔것이 아니라 이해도나 호환성을 목적으로 둔다.
RESTful 하지못한 예시
- CRUD 중에 POST만 사용한 경우
- route에 자원, id말고 다른 내용이 들어가있을 경우 (/students/updateName)