JaeYeopHan님 깃허브 참고
홍찬기님 블로그 참고
1.1 REST란
Restful API를 설명하기 앞서 REST가 무엇인지 알아보자.
REST(REpresentational State Transfer의 약자)란 네트워크에서 통신을 구성할 때 '이렇게 정한 구조로 설계하세요'라는 지침이다.
1.2 RESTful
여기에 ful 이라는 어미를 붙여 REST 기본 원칙을 성실히 지킨 서비스 디자인을 'RESTful' 하다 라고 표현된다.
1.3 API(Application Programming Interface
API 는 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다-위키백과
특정 앱에서 구글의 지도를 사용하여 만들고 싶을 때 사용하는 구글 API가 예시가 되겠다.
1.4 RESTful API
즉 RESTful API란 REST를 성실히 만족하는 API이다.
REST 의 구성요소는 자원(Resource), 행위(Verb), 표현(Respresentation) 3가지로 구성된다.
1. 자원(=URI)
모든 자원(이미자, 동영상, 문서 등) 은 고유한 ID를 가지고 있는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. /video/1 이런식.
2. 행위(=메소드)
클라이언트는 URI 를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다. HTTP 프로토콜에서는 GET,POST,PUT,Delete 4가지 메소드를 사용한다.
3. 표현
클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 표현이라고 한다. REST 에서 자원은 JSON, XML, TEXT,RSS 등 여러 형태의 표현으로 나타낼 수 있다
1. 자원과 행위를 명시적이고 직관적으로 분리한다
- 자원은 URI 로 표현되는데
명사
로 표현되어야 한다. ex) /video- 행위는 HTTP Method로 표현하고,
GET(조회)
,POST(생성)
,PUT(수정)
,DELETE(삭제)
를 목적에 맞게 사용한다.
2. Message는 Header 와 Body를 명확하게 분리해서 사용한다
- Entity에 대한 내용은 body에 담는다.
- 애플리케이션 서버가 행동할 판단의 근거가 되는 컨트롤 정보인 API 버전 정보, 응답받고자 하는 MIME 타입 등은 header 에 담는다.(아직 모르는 내용..)
- header 와 body 는 http header 와 http body로 나눌 수도 있고, http body에 들어가는 json 구조로 분리할 수도 있다.
3. API 버전을 관리한다(아직 모르는 내용)
- API를 변경할 때는 반드시 하위호환성을 보장하자
4. 서버와 클라이언트가 같은 표현을 사용해서 요청하도록 한다.
- 브라우저는 form-data 형식의 submit으로 보내고 서버에서는 json 형태로 보내는 식의 분리보다는 둘다 json으로 보내든, 둘 다 form-data 형식으로 보내든 하나로 통일한다(이런걸 'URI가 플랫폼 중립적이다' 라고 한다).
REST 6가지 원칙