REST API란?
- 소프트웨어 프로그램 아키텍처의 한 형식이다. - 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다. - 월드 와이드 웹(www) 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식이다. - 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 사용하기 때문에 웹의 장접을 최대한 활용할수 있는 아키텍처이다.
REST의 구체적인 개념
- HTTP URL을 통해 자원을 명시하고 HTTP Method (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 OPERATION을 적용하는 것을 의미한다.
- 웹의 모든 자원에 고유한 ID인 HTTP URL을 부여한다.
REST API의 등장
- 최근 서비스 / 애플리케이션의 개발 흐름은 멀티 플랫폼, 멀티 디바이스 시대로 넘어와 있다. 단순히 하나의 브라우저만 지원하면 되었던 이전과는 달리 여러 웹 브라우저는 물론이며, 아이폰 안드로이드 애플리케이션과의 통신에 대응할 수 있어야 한다.
- 따라서 플랫폼에 맞추어 새로운 서버를 만드는 수고를 들이지 않기 위해 범용적으로 사용성을 보장하는 서버 디자인이 필요하게 되었다.
REST 구성
-자원 URL
모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다. 자원을 구별하는 ID는 order/order_id 와 같은 URL 이다.
-행위 Http Methood
HTTP 프로토콜의 Method를 사용한다. HTTP 프로토콜은 GET,POST,PUT,DELETE와 같은 메서드를 제공한다.
- 표현 Representaion of Resource
자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 읍답을 보낸다. REST에서 하나의 자원은 JSON,XML,TEXT,RSS 등 여러 형태의 Representation으로 나타낸다. 현재는 JSON으로 주고 받는 것이 대부분이다.
REST 특징
- 클라이언트 / 서버 구조
클라이언트는 유저와 관련된 처리를, 서버는 REST API를 제공함으로써 각각의 역활이 확실하게 구분되고 일괄적인 인터페이스로 분리되어 작동할 수 있게 한다 REST Server: API를 제공하고 비지니스 로직 처리 및 저장을 책임진다. 사용자 인증이나 context 등을 직접 관리하고 책임진다. 서로 간 의존성이 줄어든다.
- 무상태성
REST는 HTTP의 특성을 이용하기 떄문에 무상태성을 갖는다. 즉 서버에서 어떤 작업을 하기 위해 상태정보를 기억할 필요가 없고 들어온 요청에 대해 처리만 해주면 되기 때문에 구현이 쉽고 단순해진다.
- 캐시 처리 가능
HTTP라는 기존 웹표준을 사용하는 REST의 특징 덕분에 기본 웹에서 사용하는 인프라를 그대로 사용 가능하다. 대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다. 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상 시킬 수 있다.
- 자체 표현 구조
JSON을 이용한 메시지 포멧을 이용하여 직관적으로 이해할 수 있고 REST API 메시지만으로 그 요청이 어떤 행위를 하는지 알 수 있다.
- 계층화
클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 계층 등 중간매체를 사용할 수 있어 자유도가 높다
- 유니폼 인터페이스
표준에만 따른다면 모든 플랫폼에서 사용이 가능하며, URI로 지정한 리소스에 대한 조작을 가능하게 하는 아키텍쳐 스타일을 말한다 URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. 즉, 특정 언어나 기술에 종속되지 않는다.
참고 : https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80