
REST
네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나
기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용해 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
- JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적
- 즉, HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것
- CRUD Operation
- Create : POST
- Read : GET
- Update : PUT
- Delete : DELETE
- HEAD : header 정보 조회 (HEAD)
- 장점
- HTTP 프로토콜의 인프라를 그대로 사용하여 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없음
- HTTP 프로토콜의 표준을 최대한 활용해 여러 추가적인 장점을 함께 가져갈 수 있게 해줌
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장
- 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화
- 서버와 클라이언트의 역할을 명확하게 분리
단점
- 표준이 존재하지 않음
- 사용 가능한 메소드가 4가지
- 구형 브라우저가 아직 제대로 지원 못함
REST가 필요한 이유
- 애플리케이션 분리 및 통합
- 다양한 클라이언트의 등장 ex) 브라우저, 안드로이드, 아이폰
- 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용하는 방법을 모색한 결과, REST에 관심을 가지게 됨
REST 구성 요소
- 자원 : URI
- 모든 자원에 고유 ID가 존재, 이 자원은 Server에 존재
- 자원을 구별하는 ID는 HTTP URI
- Client는 URI를 이용해 자원ㅇ르 지정하고 해당 자원의 상태에 대한 조작을 Server에 요청
- 행위(Verb) : HTTP Method
- HTTP 프로토콜의 Method를 사용
- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공
- 표현
- Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답을 보냄
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내질 수 있음
- JSON, XML을 통해 데이터를 주고받는 것이 일반적
REST 특징
-
서버-클라이어늩 구조
장점 : 서로 간 의존성이 줄어듬
-
Stateless (무상태)
- HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성을 갖는다.
- Client의 context를 Server에 저장하지 않는다
- Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리
- 각 API 서버는 Client의 요청만을 단순 처리
- 이전 요청이 다음 요청의 처리에 연관되어서는 안됨
- Cacheable (캐시 처리 가능)