REST란?
REST의 정의 : Representation State Transfer의 약자
자원의 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
자원(resource) : 해당 소프트웨어가 관리하는 모든 것(문서, 그림, 데이터 등)
상태(정보) 전달 : 데이터가 요청되어지는 시점에서 자원의 정보를 전달한다.
REST의 구체적인 개념
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 기능을 적용하는 것을 의미한다.
구성요소
- 자원(resource) : URI
- 행위 : HTTP 프로토콜의 Method를 사용한다.
- 표현 : client가 자원의 상태(정보)에 대한 조작을 요청하면 server는 이에 적절한 응답을 보낸다. REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러형태의 응답으로 나타내어 질 수 있다.(JSON으로 데이터를 주고 받는 것이 일반적이다.)
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 서버와 클라이언트의 역할을 명확하게 구분한다.
단점
- 표준이 존재하지 않는다.
- 사용할 수 있는 메소드가 4가지 밖에 없다.(HTTP method 형태가 제한적)
REST가 필요한 이유
- 애플리케이션 분리 및 통합
- 다양한 클라이언트의 등장
- 죄근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에도 통신을 할 수 있어야 한다.
REST 특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Code-On-Demand(optional)
- Uniform Interface(인터페이스 일관성)
REST API
API란?
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록하는것
REST API의 정의 : REST 기반으로 서비스 API를 구현한 것
REST API의 특징
- REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
- REST는 HTTP 표준으로 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
RESTful API 설계시 주의할 점
- url는 정보의 자원을 표현해야한다.(resource명은 동사보다 명사로 사용)
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현
- 슬래시(/)는 계층관계를 나타내는데 사용, uri마지막 문자로 포함하지 않는다.
- 하이픈(-)운 uri 가독성을 높이는데 사용
- uri 경로에는 소문자가 적합하다.
- 파일확장자는 uri에 포함하지 않는다.
그래서 RESTful한 API뭔데???
이해하기 쉽고 사용하기 쉬운 api를 restful한 api라고한다.