Spring
RESTful 아키텍처
slow333
2023. 1. 25. 11:15
REpresentational State Transfer
자원, 행위, 표현으로 구성
웹 기반은 html 페이지를 전달하고, REST는 데이터만(json 형태) 전달
제약 조건
- 모든 리소스틑 URI로 식별(localhost:80/URI)
- 모든 리소스는 다중 표현을 가지수 있음(multiple representation)
- 모든 리소스는 표준 HTTP 메소드(접근(검색, get)/변경(put)/생성(post)/삭제(delete))를 수행
- 서버는 클라이언트의 상태 정보를 갖지 않는다(서버의 상태에 상관 없이 정보 요청)
Leonard Richardson은 REST 성숙도 모델을 고안
레벨0 ~ 3까지 총 4단계로 구성
Level 0 :
Post 메소드만을 사용 SOA 에플리케이션을 구축하는 가장 원시적인 형태
Level 1 :
Post 메소드를 사용, 메소드와 인자를 사용하는 대신에 REST URI를 사용
복잡한 기능을 여러 리소스로 나누어 표현
Level 2 :
Post와 더불어 GET, HEAD, DELETE, PUT을 사용
진정한 REST 단계에 도달
요청에 따라 적절한 메소를 사용
Level 3 :
클라이언트 요청에 따른 응답에 아이퍼미디어 컨트롤을 포함.??
RESTfull API Naming
REST API 설계는 아키텍처 스타일이지 표준이 아님
이름을 어떻게 정하는 지에 대한 것
resource에 접근하는 기준을 어떻게(URI, URL) 정의하느냐 임
원칙
- 간결하고 직관적인 URL을 정의
- 행동유도성(affordable)
- 직관적
- 자원별로 2개의 기준 URL을 사용
- 기준 URL에는 동사를 사용하지 않음
- 컬렉션이나 요소들을 다룰 때는 HTTP 메소드를 사용
예) / articles /articles/1234
Resource | POST(CREATE) | GET(READ) | PUT(UPDATE) | DELETE |
/articles | 생성 | 목록 조회 | 대량 업데이트 | 모두 삭제 |
/articles/1234 | 애러 | 특정목록 조회 | 업데이트(있으면) 없으면 애러 |
항목 삭제 |
요청 구성 예:
POST : http://localhost:8080/users
GET ;http://localhost:8080/users/{id}
PUT : http://localhost:8080/users/{id}
DELETE; http://localhost:8080/users/{id}
GET ; http://localhost:8080/users