REST의 정의 "Reprsentational State Transfer"
- 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
- 1) 자원의 표현
- 자원 : 해당 소프트웨어가 관리하는 모든 것
- EX) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
- 자원의 표현 : 그 자원을 표현하기 위한 이름
- EX) DB의 도시 정보가 자원일 때, 'gimpo'를 자원의 표현으로 정한다.
- 2) 정보 전달
- 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
- JSON 또는 XML를 통해 데이터를 주고 받는 것이 일반적이다.
- JSON , XML의 특징
- -데이터를 저장하기 전달하기 위해 고안되었다.
- -기계뿐만 아니라 사람도 쉽게 읽을 수 있다.
- -계층적인 데이터 구조를 가진다.
- -다양한 프로그래밍 언어에 의해 파싱될 수 있다.
- -XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.
- JSON , XML의 특징
- 1) 자원의 표현
- REST는 웹의 기존 기술과 HTTP프로토콜을 그대로 활용하여 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나다.
REST 구성 요소
- 자원 : URI
- 모든 자원에 고유한 ID가 있거, 이 자원은 Server에 존재
- 자원을 구별하는 ID는 HTTP URL 이다.
- Client는 URL을 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
- 행위 : HTTP Method
- HTTP 프로토컬 메소드인 GET,POST,PUT,DELETE와 같은 메서드를 사용한다.
- 표현
- Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 응답을 보낸다.
REST API의 정의
- REST 기반으로 서비스 API를 구현한것
- API : 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
REST API의 특징
- 시스템들을 REST 기반으로 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
- REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
REST API 디자인 가이드
1.URL는 정보의 자원을 표현해야 한다.
2.자원에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.
REST API 규칙
- URI는 정보의 자원을 표현해야 한다. (리소스명은 동사보다 명사를 사용)
- 자원에 대한 행위는 HTTP Method로 표현
- EX) GET /members/delete/1 (x) -> GET /members/1
<HTTP Method의 역할>
Method | 역할 |
POST | POST를 통해 해당 URI를 요청하면 리소스를 새성한다. |
GET | GET를 통해 해당 리소스를 조회한다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다. |
PUT | PUT를 통해 해당 리소스를 수정한다. |
DELETE | DELETE를 통해 리소스를 삭제한다. |
URI 설계 시 주의할 점
- 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용
- URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
- EX) http://restapi.example.com/gimpo/ (x) -> http://restapi.example.com/gimpo (o)
- 하이픈(-)은 URI 가독성을 높이는데 사용
- 밑줄(_)은 URI에 사용하지 않는다.
- URI경로에 대문자 사용은 피한다.
- 파일 확장자는 URI에 포함시키지 않는다
- EX) http://restapi.example.com/gimpo/photo.jpg (x)
자원을 표현하는 Collection과 Document
- Document는 객체이며 Collection은 객체들의 집합이다.
- 컬렉션과 도큐먼트는 모두 리소스라고 표현할수 있으며 URI에 표현된다.
- EX) http://restapi.example.com/sports/soccer
- sports라는 컬렉션과 soccer라는 도큐먼트로 표현된다.
- 직관적인 REST API를 위해서는 컬렉션과 도큐먼트를 사용할 때 단수 복수도 지켜주면 이해하기 쉬운 URI 설계가 가능하다.
HTTP 응답 상태 코드
- 1XX : 전송 프로토콜 수준의 정보 교환
- 2XX : 클라이언트 요청이 성공적으로 수행돔
- 3XX : 클라이언트 요청을 완료하기 위해 추가적인 행동을 취해야 함
- 4XX : 클라이언트의 잘못된 요청
- 5XX : 서버쪽 오류로 인한 상태코드
RESTful의 개념
- RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어
- REST API를 제공하는 웹 서비스를 RESTful 하다고 할수 있다.
- REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것