REST(Representational State Transfer)
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
- 구체적으로 URI를 통해 고유한 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당자원에 대한 CRUD 동작을 수행하는 것
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.
- REST의 구성요소
- 자원(URI)
모든 자원에 고유한 ID가 존재하고 이 자원은 Server에 존재
Client는 URI를 통해 자원을 지정하고 해당자원의 상태에 대한 조작을 서버에 요청
- 행위
HTTP 프로토콜의 Method를 사용한다.(GET, POST, PUT, DELETE)
- 표현
Client가 조작을 요청하면 Server는 이에 적절한 응답을 보낸다.
일반적으로 JSON 혹은 XML을 통해 데이터를 주고받는다.
HTTP Method
POST : 자원의 생성(CREATE)
GET : 자원의 조회(SELECT)
PUT : 자원의 수정(UPDATE)
DELETE : 자원의 삭제(DELETE)
REST의 장단점
- 장점
- HTTP 프로토콜을 그대로 활용한다.
-> REST API 사용을 위한 별도의 인프라를 구축할 필요가 없음
-> HTTP 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다.
-> 서버와 클라이언트의 역할을 명확하게 분리한다.
-> 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리를 할 수 있다.
- 단점
- 정해진 표준이 없다(암묵적인 표준만 정해져 있음)
- 하이픈('-')은 사용 가능하지만 언더바('_')는 사용하지 않는다.
- 특별한 경우를 제외하고 대문자 사용은 하지 않는다(대소문자 구분을 하기 때문에)
- URI 마지막에 슬래시('/')를 사용하지 않는다.
- 슬래시('/')로 계층 관계를 나타낸다.
- URI는 명사를 사용한다.
- 사용할 수 있는 메소드가 4가지밖에 없다.(GET, POST, PUT, DELETE)
REST API
-
OPEN API : 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스
예를들어 통계청에서 제공하는 데이터, 구글맵등은 데이터를 외부 응용프로그램에서 사용할 수 있도록 OPEN API를 제공한다.
대부분의 OPEN API는 REST 방식으로 지원!!
-
기존의 Service VS REST Service
-
기존의 Service : 요청에 대한 처리를 한 후 가공된 데이터를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환.
-
REST Service : 데이터 처리만 한다거나, 처리 후 반환될 데이터가 있다면 JSON이나 XML 형식으로 전달. View 에 대해 신경 쓸 필요가 없음
-> 다양한 플랫폼이 등장한 지금 데이터만 신경쓰는 REST 방식을 사용하는 OPEN API가 주목받고 있음!!
-
기존Service와 REST Service 코드 비교

RESTful
- RESTful : 일반적으로 REST API를 제공하는 웹 서비스를 RESTful 하다고 말함.
- 누군가 공식적으로 발표한 것이 아닌 REST원리를 따르는 시스템을 통상적으로 지칭하는 용어