RESTful API란?
REST를 기반 API를 의미합니다.
REST은 무엇인지, REST API는 무엇인지, RESTful API는 무엇인지 알아보려고합니다.
1. RESTful API에서 REST 란?
REST는 Representational State Transfer의 약자로써 풀어서 설명하자면
자원을 이름으로 구분해 해당 자원의 상태를 주고 받는 것을 말한다.
웹에 존재하는 자원(이미지, 동영상, DB)에 대한 CRUD 요청을,
고유한 URI(Resource와 Method)로 표현하여 특정한 형태로 전달하는 방법이다.
CRUD : Create, Read, Update, Delete
- Create : 데이터 생성(POST)
- Read : 데이터 조회(GET)
- Update : 데이터 수정(PUT)
- Delete : 데이터 삭제(DELETE)
REST의 구성요소
자원(Resource) : HTTP URI
서버는 Unique한 ID를 가지는 Resource를 가지고 있으며, 클라이언트는 이러한 Resource에 요청을 보낸다.자원에 대한 행위(Verb) : HTTP Method
서버에 요청을 보내기 위한 방식으로 GET, POST, PUT, PATCH, DELETE가 있다.
CRUD 연산 중에서 처리를 위한 연산에 맞는 Method를 사용하여 서버에 요청을 보내야 한다.자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
클라이언트와 서버가 데이터를 주고받는 형태로 json, xml, text, rss 등이 있다.
REST 특징
Server-Client Architecture(서버-클라이언트 구조)
자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당한다.
서버는 API를 제공하며, 클라이언트는 사용자 인증, Context(세션, 로그인 정보) 등을 직접 관리하는 등 역할을 확실히 구분시킴으로써 서로 간의 의존성을 줄인다.Stateless(무상태)
세션정보나 쿠키정보를 활용하여 작업을 위한 상태정보를 저장 및 관리하지 않는다.
서비스의 자유도가 높으며, 서버에서 불필요한 정보를 관리하지 않으므로 구현이 단순하다.
서버의 처리방식에 일관성을 부여하고, 서버의 부담을 줄이기 위함이다.Cacheable(캐시 처리 가능)
HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용하여 캐싱을 구현할 수 있고, 이것은 대량의 요청을 효율적으로 처리할 수 있게 도와준다.Layered System(계층화)
다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있다.
또한 Proxy, Gateway와 같은 네트워크 기반의 중간매체를 사용할 수 있게 해준다.Uniform Interface(인터페이스 일관성)
Resource(URI)에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미한다.
이것은 요청을 하는 클라이언트의 플랫폼(Android, Ios, Jsp 등) 에 무관하며, 특정 언어나 기술에 종속받지 않는 특징을 의미한다.
REST 장/단점
장점 | 단점 |
---|---|
|
|
REST 개발 원칙
- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
- 마지막에 슬래시 (/)를 포함하지 않는다.
- 언더바 대신 하이폰을 사용한다.
- 파일확장자(예를들어 .json , .JPGE, .html, php)는 URI에 포함하지 않는다.
- 행위를 포함하지 않는다.
- 소스에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현해야 합니다.
2. RESTful API에서 API 란?
API(Application Programing Interface)
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
RESTful API는 REST 설계 가이드를 따라 API를 만드는 것이다.
3. RESTful API에서 RESTful 이란?
‘REST API’를 제공하는 웹 서비스를 ‘RESTful’ 하다고 할 수 있다.
REST의 원리를 모두 따르는 시스템을 의미하며, 설계 규칙을 올바르게 지킨 시스템을 말한다.