REST는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.
웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로써 REST를 발표.
HTTP URI를 통해 제어할 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍쳐.
잘 표현된 HTTP URI로 리소스를 정의하고 HTTP Method로 리소스에 대한 행위를 정의한다.
리소스는 JSON, XML과 같은 여러 언어로 표현할 수 있다.
- 하이픈(`-`)은 사용 가능하지만 언더바(`_`)는 사용하지 않는다.
- 특별한 경우를 제외하고 대문자를 사용하지 않는다.
- URI 마지막에 슬래시(`/`)를 사용하지 않는다.
- 슬래시(`/`)로 계층 관계를 나타낸다.
- 확장자가 포함된 파일 이름을 직접 포함시키지 않는다.
- URI는 명사를 사용한다.
기존의 웹 접근 방식과 REST API 방식의 차이점
기존의 블로그 등은 GET과 POST만으로 자원에 대한 CRUD를 처리하며, URI는 액션을 나타냈다.
REST로 변경할 경우 4가지 Method를 모두 사용하여 CRUD를 처리하며, URI는 제어하려는 자원을 나타낸다.
- jackson`-`databind 라이브러리는 객체를 JSON 포맷의 문자열로 변환시켜서 브라우저로 전송한다.
- https://mvnrepisitory.com/artifact/com.fasterxml.jackson.core/jackson-databind
- jackson-dataformat-xml 라이브러리는 객체를 xml로 브라우저로 전송한다.
- https://mvnrepisitory.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml
- pom.xml에 라이브러리 추가.
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind-version}</version>
</dependency>
실습 관련은 0425 강의자료 15page부터 참조.