REST (Representational state transfer)
World Wide Web의 아키텍쳐 개발을 위해 고안된 소프트웨어 아키텍쳐 스타일을 지치한다. REST는 인터넷-스케일에서 분산 하이퍼미디어 시스템을 위한 제약 조건들의 집합을 정의한다.
REST 아키텍쳐 스타일은 컴포넌트간의 상호작용/ 일관적인 인터페이스, 독립적인 컴포넌트 유지 그리고 유저-반응과 연관된 캐시 성능을 활용하기 위해 레이어드(계층) 형태의 아키텍처를 지향한다.
REST는 소프트웨어 산업 전반에서 상태가 없고 신뢰성있는 webAPI를 제공하기 위해 널리 받아들여진 가이드라인과 같은 존재이다. REST 규약을 따르는 web API의 경우 RESTful이라고 지칭한다.
RESTful web API는 HTTP 전송 메서드를 기반으로 사용하여 URL-encoded 파라미터들을 통해 자원을 얻고 데이터를 전송하기 위해 JSON/XML 형식의 데이터를 사용한다.
"Web Resources" 들은 다큐먼트 혹은 파일 형태로 World Wide Web에서 정의되며 URL에 의해 확인되어진다. 오늘날, 정의는 더 일반적이고 추상적이게 되었다.
아키텍쳐 컨셉
REST 아키텍쳐 스타일은 네트워크 기반 응용 프로그램을 위해 고안되었는데, 특히 클라이언트-서버 어플리케이션을 위해 고안되었다. 하지만 그것보다, 이것은 인터넷-스케일의 사용을 위해 디자인되었는데, user-agent (client)와 origin server) 사이의 약한 결합을 도모한다.
클라이언트는 항상 자원을 URI를 통해서만 접근가능하다. 다른 말로, 클라이언트는 URI를 이용하여 요청을 보내게되고 서버는 자원의 표현 상태(respresentation)를 보내게 된다. 자원의 표현 상태는 REST이 또 다른 중요한 컨셉으로 클라이언트 어플리케이션마다 이 자원 표현 상태를 다양하게 해석하는 것을 보장한다.
아키텍쳐 특성
- 컴포넌트 상호작용의 성능은 네트워크 효율과 유저 반응에 중요한 요소이다.
- 컴포넌트간 인터렉션과 많은 컴포넌트를 지원하는 스케일성(scalability)
- 심플한 일관된 인터페이스
- 요구에 따라 변경될 수 있는 컴포넌트
- 서비스 에이전트에 의해 컴포넌트간 통신이 가시적이다.
아키텍쳐 제약사항
Client-Server 아키텍쳐
클라이언트-서버 아키텍쳐 디자인은 유저 인터페이스가 데이터 저장을 염려하지 않도록 한다. 따라서 유저 인터페이스의 Portability가 증가한다.
Statelessness
상태가 없는 프로토콜은 어떠한 세션 정보도 서버에 의해 저장되어지지 않는다. 클라이언트으로부터 서버로 전송되는 세션 데이터는 모든 정보의 패킷은 이전 패킷의 문맥에 상관없이 항상 이해 가능하다. 이것이 상태가 없는 프로토콜이라 할 수 있고 세션에 정보를 유지해야하는 부하를 줄임으로써 다양한 어플리케이션을 서버 사이드에서 제공할 수 있다.
Cacheability
WebClient는 Response를 캐싱가능한 데이터를 받을 수 있다.
Layered System
클라이언트는 엔드 서버로 컨넥션이 있는지 혹은 중간 개체가 있는지 알 수 가 없다. 프록시나 로드 밸런서가 클라이언트와 서버 사이에 존재한다 하더라도 통신에 영향을 주지 않으며 통신을 위한 코드를 수정할 필요가 없다. 중간 서버는 캐시 기능과 부하 분산 기능을 제공하여 시스템 확장성을 높인다.
Code on Demand
서버는 전송가능한 코드를 클라이언트에게 전송함으로써 기능을 커스터마이징하거나 임시적으로 확장할 수 있다.
Uniform Interface
일관된 인터페이스 제약은 RESTful 시스템 디자인의 기본 제약이다. 이것은 아키텍쳐를 결합도를 낮추고 단순화함으로써 컴포넌트가 독립적으로 동작하게 한다.
- 자원은 요청에 의해 확인되어진다. 각각의 자원은 URI 형태로 표현되어 확인되어진다.
- 자원의 변경도 표현(representations)에 의해 이루어진다.
- 자가표현적인 메시지, 각 메시지는 어떻게 메시지를 처리할 것인지 설명한다.
Web 서비스에서 적용
REST 아키텍쳐 제약사항을 적용한 웹 서비스 API를 RESTful API이라고 지칭한다.
- 기본 URI 존재 : http://api.example.com/
- 표준 HTTP 메서드를 사용 (GET, POST, PUT, DELETE)
- 전송되는 데이터를 표현하는 미디어 타입.
HTTP 메서드
HTTP method | 설명 |
GET | 목표 자원의 상태에 대한 표현을 요청 |
POST | 목표 자원에 관해 요청에 담긴 상태를 처리하도록 요청 |
PUT | 목표 자원을 만들거나 대체하도록 요청에 담긴 상태를 사용하도록 요청 |
DELETE | 목표 자원을 삭제하는 요청 |
참고 : https://en.wikipedia.org/wiki/Representational_state_transfer
'개발 > 개발 노트' 카테고리의 다른 글
VirtualBox에서 인터넷 사이트 DNS 접속 오류 (0) | 2022.05.08 |
---|---|
x64 아키텍쳐 레지스터 (0) | 2022.04.21 |
Base64 변환 인코딩 (0) | 2022.04.05 |
C++ UnitTest 프로젝트 만들기 (0) | 2022.01.30 |