IT/관련지식

REST

금마s 2020. 7. 28. 16:51

???

  : 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