Contents
- REST가 뭐임!
- REST API가 뭐임!
- REST API 왜 씀?
REST가 뭐임!
Representational State Transfer 의 약자
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. 웹에 존재하는 모든 자원에 고유한 URI을 부여해 활용하는 것으로 자원에 대한 주소를 지정하는 방법론을 의미합니다.
*URI(Uniform Resource Identifier) – 인터넷 상 자원을 식별(identify)하기 위한 문자열
*URL(Uniform Resource Locator) – 인터넷 상 자원의 위치(locate)
REST는 분산 시스템 설계를 위한 아키텍처 스타일 입니다.
REST 구성
- 자원 (Resouce) – URI
서버의 모든 자원에 고유한 ID를 가집니다.
Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청합니다.
- 행위 (Verb) - HTTP Method
서버에 요청을 보내기위해 HTTP 프로토콜의 Method를 사용합니다.
HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공합니다.
- 표현 (Representations)
Client가 자원의 상태(정보)에 대한 조작을 요청하면 서버는 이에 적절한 응답(Representation)을 보낸다.
REST에서 자원은 JSON, XML, TEXT, RSS 등 여러 형태를 가집니다.
REST 특징
1. Client-Server Architecture (서버-클라이언트 구조)
Rest API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트입니다. 서버는 API를 제공하고 비즈니스 로직 처리 및 저장을 책임집니다. 클라이언트는 사용자 인증, Context(세션, 로그인 정보) 등을 직접 관리하고 책임집니다. 역할 구분이 뚜렷하기 때문에 여러 플랫폼에서 사용자 인터페이스의 이식성을 개선하고 서버 구성요소를 단순화하여 확장성을 개선합니다. 또한 서로 간의 개발 내용이 명확해지고 의존성이 줄어듭니다.
2. Stateless(무상태성)
클라이언트에서 서버로의 각 요청에는 요청을 이해하는데 필요한 모든 정보가 포함되어야 하며 서버에 저장된 context를 이용할 수 없습니다. 서버는 각각의 요청을 별개의 것으로 인식하고 단순 처리합니다. 이전 요청이 다음 요청에 연관되어서는 안되고 클라이언트의 요청이 서버에 저장이 되면 안됩니다. Rest API는 세션정보나 쿠키정보를 활용하여 작업을 위한 상태정보를 저장하지 않습니다. 무상태성때문에 Rest API는 서비스의 자유도가 높으며, 서버의 처리방식에 일관성을 부여하게 되어서 서버의 부담이 줄어듭니다. 또한 세션의 상태는 서버와 독립적이며 클라이언트에 종속됩니다.
3. Cacheable(캐시 가능)
웹 표준 HTTP 프로토콜을 사용하기 때문에, 웹에서 사용하는 인프라를 그대로 활용할 수 있습니다. 그러므로 Rest API에서도 HTTP의 캐시 기능을 적용할 수 있습니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용하여 캐시을 구현할 수 있고, 대량의 요청을 효율척으로 처리할 수 있게 도와줍니다. 캐시 사용을 통해 서버의 응답시간, 성능, 자원 이용률을 향상시킬 수 있습니다.
4. Uniform Interface(일관된 인터페이스)
Resource(URI)에 대한 요청을 통일되고, 한정적인 인터페이스로 수행하는 아키텍처 스타일을 의미합니다. 플랫폼이나 언어에 무관하게 HTTP표준 프로토콜을 따르는 모든 플랫폼에서 사용 가능합니다.
5. Self-Descriptiveness(자체 표현)
Rest API는 동사(Method) + 명사(URI) 형식의 표현구조를 사용합니다. 메세지만 보고도 어떤 메서드에 무슨 행위를 하는지 쉽게 이해할 수 있습니다. 또한 JSON 형태의 Rest 메시지 직관적으로 이해가 가능합니다.
6. Layered System(계층 구조)
서버는 비즈니스 로직만을 수행하고 보안, 로드 밸런싱, 암호화 등을 위한 계층을 추가하여 서버를 다중 계층으로 유연하게 구성할 수 있습니다. 또한 Proxy, Gateway등을 사용할 수 있습니다. 계층 구조를 사용하면 각 구성요소가 상호작용하는 직접적인 계층 너머를 볼 수 없도록 구성 요소의 동작을 제한합니다. 따라서 클라이언트는 서버와 직접 통신하는지, 중간 서버와 통신하는지 알 수 없습니다.
7. Code-On-Demand(선택사항)
서버로부터 스크립트를 받아서 클라이언트의 기능을 확장합니다. (반드시 충족할 필요는 없습니다.)
API (Application Programming Interface)
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
REST API가 뭐임!
REST API는 REST기반으로 만든 API이다.
공개되는 OpenAPI는 대부분 REST API로 제공한다.
REST API 왜 씀?
로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다.
REST가 나온 이유는 분산시스템, 멀티 플랫폼 환경에서 데이터 소모량 감소이다.
1. 분산시스템
거대한 애플리케이션을 모듈, 기능별로 분리하여 REST API를 서비스하면 다른 애플리케이션에도 API를 통해 활용가능하다.
2. 멀티 플랫폼
웹 페이지를 위한 HTML 및 이미지 등을 보내던 것과 달리 이제는 데이터만 보내면 여러 클라이언트에서 해당 데이터를 적절히 보여주기만 하면 된다. 예를 들어 모바일 애플리케이션으로 html같은 파일을 보내는 것은 무겁고 브라우저가 모든 앱에 있는 것은 아니기 때문에 알맞지 않았는데 REST API를 사용하면서 데이터만 주고 받기 때문에 여러 클라이언트가 자유롭고 부담 없이 데이터를 이용할 수 있다. 서버도 요청한 데이터만 깔끔하게 보내주면 되기 때문에 가벼워지고 유지보수성도 좋아졌다.
'아 이게 뭐임!' 카테고리의 다른 글
Servlet이 뭐임!! (0) | 2021.07.03 |
---|---|
자바스크립트 시간 가져오기(시간 찍기) (0) | 2021.07.02 |
Servlet이 뭐임!! (0) | 2021.07.01 |
PuTTY가 뭐임!! (0) | 2021.06.30 |
SVN이 뭐임!!!! (0) | 2021.06.29 |