SPRING/chapter05_REST
01_rest.txt
GAWON
2023. 7. 4. 18:17
1. REST(Representational State Transfer)
- 네트워크에서 클라이언트와 서버의 통신 방식 중 하나.
1) 주요 어노테이션
(1) @RestController
- Controller가 Rest 방식을 처리하기 위한 것을 명시
- 기존 Controller에서 Model에 값을 담아서 전달하는 방식과 다름
(2) @ResponseBody
- 일반적인 JSP와 같은 뷰로 전달되는게 아니라 데이터 자체를 전달하기 위한 용도
(3) @PathVariable
- URL 경로에 있는 값을 파라미터로 추출할 때 사용
(4) @CrossOrigin
- Ajax의 크로스 도메인 문제를 해결해주는 어노테이션
(5) @RequestBody
- JSON 데이터를 원하는 타입으로 바인딩
2) JSON(JavaScript Object Notation)
- 자바스크립트와 비슷한 형태로 생긴 데이터 묶음
- {}로 묶고 키:값 으로 구성
- 스프링에서 사용하기 위해 jackson-databind 라이브러리 추가
- xml 처리를 위해 jackson-dataformat-xml 라이브러리 추가
3) 구성 요소
(1) Resource
- REST에서 가장 중요한 개념은 바로 유일한 ID를 가지는 Resource가 서버에 존재하고,
클라이언트는 각 Resource의 상태를 조작하기 위해 요청을 보낸다.
일반적으로 Resource는 user, friends, group 등과 같은 명사형의 단어이고,
HTTP에서 이러한 Resource 를 구별하기 위한 ID는 '/member/101'와 같은 URI이다.
(2) Method
- GET, DELETE 등과 같이 Resource를 조작할 수 있는 동사형의 단어를 Method라고 한다.
클라이언트는 URI를 이용해서 Resource를 지정하고 해당 Resource를 조작하기 위해서 Method를 사용한다.
HTTP에서는 GET, POST, PUT, DELETE 등의 Method를 제공한다.
작업 전송방식 URI
등록(Create) POST /member/new
조회 (Read) GET /member/{id}
수정(Update) PUT /member/{id} + body(json 데이터 등)
삭제(Delete) DELETE /member/{id}
(3) Representation of Resource
- 클라이언트가 서버로 요청을 보냈을 때, 서버가 응답으로 보내주는 Resource의 상태를
Representation이라고 한다. REST에서 하나의 Resource는 여러 형태의
Representation으로 나타내어 질 수 있다.
주로 xml, json, text 등을 전달할 수 있다.
(4) URI 구성
- URI는 ‘/groups’, ‘/users’ 등과 같이 직관적으로 어떤 정보를 제공하는지 알 수 있는 단어들로 구성
- URI는 ‘/groups/member/101’와 같이 URI path가 계층적인 구조를 가지도록 구성
- URI의 상위 path는 하위 path의 집합을 의미하는 단어로 구성. 예를 들어 ‘/groups/101/member/12532’의 경우
‘groups’는 ‘101’ 등의 그룹의 집합이므로 ‘/groups’ 만으로도 그룹 목록이라는 정보를 제공할 수 있는 유효한 URI가 된다.
- CREATE / DESTORY/UPDATE/DELETE 등의 기본 CRUD 처리는 URI에 명시적으로 표현하도록 하여
URI를 보더라도 직관적으로 어떤 기능을 제공하는지 알 수 있도록 명명하도록 한다.