아카이브

REST 본문

네트워크

REST

주멘이 2018. 6. 13. 18:23

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 ( 자체 표현 구조 )

● 메시지 포맷만으로 직관적으로 이 메시지가 무엇을 의미하는지 알 수 있어야 함


참고링크



'네트워크' 카테고리의 다른 글

웹의 동작 원리  (0) 2018.06.20
세션 & 쿠키  (0) 2018.06.20
OSI 7계층  (0) 2018.06.18
LAN vs WAN  (0) 2018.06.13
HTTP vs HTTPS  (0) 2018.06.13