REST Architecture

REST는 HTTP API의 URL 표기법이 아니라, 분산 시스템 인터페이스를 위한 아키텍처 스타일이다. 클라이언트는 자원 자체가 아닌 자원의 표현을 주고받고, HTTP 메서드로 그 표현에 대한 행위를 표현한다.[1]

자원·표현·행위

제약 조건을 설계 기준으로 쓰기

제약 API 설계에서 확인할 점
Client-Server UI와 서버 책임이 독립적으로 바뀔 수 있는가
Stateless 각 요청이 필요한 상태 정보를 포함하는가
Cacheable 응답의 캐시 가능 여부를 명시할 수 있는가
Layered System 중간 계층이 있어도 클라이언트가 서버 구조에 의존하지 않는가
Uniform Interface URI, 표현, 메시지 의미가 일관적인가

REST의 제약은 client-server, stateless, cacheable, layered system, uniform interface이며, code-on-demand는 선택 제약이다.[1:4]

Uniform Interface의 네 기준

성숙도 모델을 체크리스트로 읽기(해석)

Richardson 성숙도 모델은 Level 0(POX), Level 1(Resource), Level 2(HTTP verb), Level 3(Hypermedia control)로 API를 구분한다.[1:6] 원문은 대부분의 상용 "REST API"가 Level 2에 해당하고, Level 3에 도달해야 진정한 RESTful API라고 본다.[1:7] 다만 Level 3 달성 여부보다, 클라이언트 요구와 운영 비용에 맞게 자원 식별·메서드 의미·오류 표현을 일관되게 만드는 편이 실무적 기준이라는 것은 원문과 다른 이 page의 해석이다.

관련

출처


  1. REST API — REST의 자원·표현·행위, 6개 제약, uniform interface의 네 조건과 Richardson 성숙도 모델을 설명한다. "대부분의 상용 "REST API"가 이 수준에 해당한다."(L90), "이 수준에 도달해야 진정한 RESTful API라고 할 수 있다."(L94) ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎