Spring

RESTful 아키텍처

slow333 2023. 1. 25. 11:15

REpresentational State Transfer

자원, 행위, 표현으로 구성

웹 기반은 html 페이지를 전달하고, REST는 데이터만(json 형태) 전달

제약 조건

  1. 모든 리소스틑 URI로 식별(localhost:80/URI)
  2. 모든 리소스는 다중 표현을 가지수 있음(multiple representation)
  3. 모든 리소스는 표준 HTTP 메소드(접근(검색, get)/변경(put)/생성(post)/삭제(delete))를 수행
  4. 서버는 클라이언트의 상태 정보를 갖지 않는다(서버의 상태에 상관 없이 정보 요청)

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