REST란 "Representational State Transfer"의 약자이다. 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.
REST란, "웹에 존재하는 모든 자원(이미지, 동영상, DB자원)에 고유한 URI를 부여해 활용" 하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다.
이런 REST의 형식을 따른 시스템을 RESTful 이라고 부른다.
HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용한다.
CRUD Operation, HTTP Method
1. Create : POST(자원 생성)
2. Read : GET(자원의 정보 조회)
3. Update : PUT(자원의 정보 업데이트)
4. Delete : DELETE(자원 삭제)
장점
쉬운 사용
HTTP 프로토콜 인프라를 그대로 사용하므로 별도의 인프라를 구축할 필요가 없다.
클라이언트-서버 역할의 명확한 분리
클라이언트는 REST API를 통해 서버와 정보를 주고 받는다. REST의 특징인 Stateless에 따라 서버는 클라이언트의 Context를 유지할 필요가 없다.
특정 데이터 표현을 사용가능
REST API는 헤더 부분에 URI 처리 메소드를 명시하고 필요한 실제 데이터를 'body'에 표현할 수 있도록 분리시켰다. JSON,XML등 원하는 Representation 언어로 사용 가능하다.
단점
메소드의 한계
REST는 HTTP 메소드를 이용하여 URI를 표현한다. 이러한 표현은 쉬운 사용이 가능하다는 장점이 있지만 반대로 메소드 형태가 제한적인 단점이 있다.
표준이 없음
REST는 설계 가이드일 뿐이지 표준이 아니다. 명확한 표준이 없다.