REST
REST ( REpresentational State Transfer )
- 소프트웨어 아키텍처 스타일
- REST 원리를 따르는 시스템을 RESTful이라고 지칭
- 직관적으로 웹에 있는 자원들을 HTTP를 활용하여 자원에 접근하는 것
- 웹 상의 자료를 HTTP 위에서 SOAP나 쿠키를 통한 세션 트래킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스
- ROA(Resource Oriented Architecture, 자원 지향 아키텍처) 를 실현하기 위한 기술
● SOUP ? XML 기반의 메시지를 네트워크 상에서 교환하는 프로토콜
웹 서비스에서 기본적인 메시지를 전달하는 기반
SOA (Service Oriented Architecture, 서비스 지향 아키텍처) 를 실현하기 위한 기술
단점 : REST보다 어렵고, 무거움
개발하기 어렵고 도구가 필요함
REST 구성요소
- Resource
● 유일한 ID를 가지는 Resource가 서버에 존재하고, 클라이언트는 각 Resource의 상태를 조작하기 위해 요청을 보냄
- Method
● Resource를 조작할 수 있는 동사형의 단어
● 클라이언트는 URI를 이용해서 Resource를 지정하고, 조작하기 위해 Method를 사용
● GET, POST, PUT, DELETE 등
- Representation of Resource
● 서버가 응답으로 보내주는 Resource의 상태
● xml, json, text, rss 등으로 전달할 수 있음
- URI 구성
● URI는 직관적으로 어떤 정보를 제공하는지 알 수 있어야 함
ex) /users, /groups
● URI path가 계층적인 구조를 가져야 함
ex) /groups/{groupId}/member/{memberId}
● URI의 상위 path는 하위 path의 집합을 의미하는 단어로 구성해야 함
ex) /groups/101/member/12345 에서 'groups'는 '101' 등의 그룹의 집합이므로, /groups 만으로 그룹의 목록을 알 수 있어야 함
REST 규칙
- URI는 정보의 자원 표현해야 함 ( 명사 )
ex) /members/1
- 행위는 method로 표현한다
GET : 조회
POST : 생성
PUT : 수정
DELETE : 삭제
REST의 특징
- Addressablitty ( URI를 이용 )
● URI로 지정한 리소스에 대한 직관적인 접근
● 1번 유저에 대한 상세정보를 볼때 /members/1
- Stateless ( 무상태성 )
● 이전, 이후에 대한 정보가 없이 단순히 들어오는 요청만을 처리
● 별도의 세션, 쿠키 관리가 필요없음
● 서비스의 자유도가 높아지고, 유연한 아키텍처 적용이 가능
- Self-Descriptiveness ( 자체 표현 구조 )
● 메시지 포맷만으로 직관적으로 이 메시지가 무엇을 의미하는지 알 수 있어야 함
참고링크