???
: REpresentational State Transfer
: WWW과 같은 분산 하이퍼미디어 시스템을 위한 SW architecture의 한 형식
: '웹에 존재하는 모든 자원에 고유한 URI를 부여하여 활용'하는 것. 즉, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론
RESTful >> REST 형식을 따르는 시스템
HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD Operation 적용
# 구성요소
자원(Resource), URI | 모든 자원은 고유한 ID를 가지고 ID는 서버에 존재하며 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보냄. HTTP에서 이런 자원을 구별하는 ID는 'Students/1'같은 URI이다 |
행위(Verb), Method | 클라이언트는 URI를 이용해서 자원을 지정하고 자원을 조작하기 위해 Method를 사용 |
표현(Representation) | 클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태. REST에서 자원은 JSON, XML, TEXT, RSS등 여러 형태로 나타낼 수 있음 |
# REST가 필요한 이유
어플리케이션 분리 및 통합 |
다양한 클라이언트의 등장 |
최근의 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신이 가능해야한다 |
이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용한 결과 REST가 관심받음 |
# REST의 주요 목표
scalability of component interactions |
generality of interfaces |
independent deployment of components |
intermediary components to reduce latency, enfore security and encapsulate legacy systems |
# REST 특징
클라이언트 / 서버 구조 | 자원이 있는 Sever와 자원을 요청하는 Client의 구조 |
무(無)상태 | HTTP는 Stateless 프로토콜이므로 REST도 무상태성을 가짐. 클라이언트의 Context를 서버에 저장하지 않음 |
캐시 처리 가능 | 웹 표준인 HTTP 프로토콜을 그대로 사용하여, 웹에서 사용하는 기존의 인프라를 활용 할 수 있다 |
계층화 | API 서버는 순수 business logic을 수행하고 그 앞단에 사용자 인증, 암호화, 로드밸런싱 등을 하는 계층을 추가하여 구조상의 유연성을 줄 수 있음 |
인터페이스 일관성 | URI로 지정한 자원에 대한 조작을 통일하고 한정적인 인터페이스로 수행. HTTP 표준만 따른다면 모든 플랫폼에서 사용 가능 |
Code on demand |
java 애플릿이나 javascript의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능 확장 가능 |
# REST 장단점
장점 | 쉬운사용 | HTTP 프로토콜 인프라를 그대로 사용하여 별도의 인프라 구축할 필요 없음 |
클라이언트-서버 역할의 명확한 분리 | 클라이언트는 REST API를 통해 서버와 정보를 주고받음. REST의 특징인 Stateless에 따라 서버는 클라이언트의 Context를 유지할 필요 X | |
특정 데이터 표현 사용 가능 |
REST API는 헤더 부분에 URI 처리 메서드를 명시하고 필요한 실제 데이터를 'body'에 표현할 수 있도록 분리시킴. JSON, XML 등 원하는 Representation 언어로 사용 가능 |
|
단점 | 메소드의 한계 | REST는 HTTP 메소드를 이용하여 URI 표현. 이런 표현은 쉬운 사용이 가능하다는 장점있음. 허나 메소드의 형태가 제한적이라는 단점도 있음 |
표준이 없음 | REST는 설계 가이드임. 표준이 없음. |
CRUD : 대부분의 컴퓨터 SW가 가지는 기본적 데이터 처리 기능은 create(생성), read(읽기), update(갱신), delete(삭제)를 일컫는 말. HTTP Method에서의 CRUD는 post(자원 생성), get(정보 조회), put(정보 업데이트), delete(삭제)이다.
728x90
'IT > 관련지식' 카테고리의 다른 글
사용자 인터페이스 기본원칙 (0) | 2020.10.12 |
---|---|
AMD CPU에서 Android Emulator 실행 방법 (0) | 2020.08.18 |
GIT (0) | 2020.07.28 |
UML 특징 (0) | 2020.07.24 |
버전 관리 도구 (0) | 2020.07.24 |