RESTful API란? (REST 개념 / 원칙/ 제한조건)
1. RESTful API란?
평소에 REST / RESTful 이라는 말을 많이 들어봤을 텐데 이의 정확한 개념과 정의 등에 대해서 포스팅해보려고 한다.
REST는 REpresentational State Transfer의 약자로 하나의 아키텍쳐라고 할 수 있다. REST는 resource oriented architecture라고 할 수 있으며, API 설계의 중심에 resource 자원을 놓는 형태라고 할 수 있다. 위키피디아에 따르면 REST는 월드와이드웹과 같은 분산 하이퍼미디어 시스템에서 운영되는 소프트웨어 아키텍처스타일이라고 정의되어 있다. 즉 쉽게 말해 REST API는 HTTP로 정보를 보낼 때 어떤 URI로, 어떤 메서드를 사용할지를 정하는 개발자들 사이의 약속이라고 할 수 있다.
흔히 우리는 RESTful하다라는 말도 자주 사용하는데 REST의 기본 원칙을 성실히 지킨 서비스 디자인에 대해서 RESTful하다라고 말을 한다.
REST는 REpresentational State Transfer의 약자로 하나의 아키텍쳐라고 할 수 있다. REST는 resource oriented architecture라고 할 수 있으며, API 설계의 중심에 resource 자원을 놓는 형태라고 할 수 있다. 위키피디아에 따르면 REST는 월드와이드웹과 같은 분산 하이퍼미디어 시스템에서 운영되는 소프트웨어 아키텍처스타일이라고 정의되어 있다. 즉 쉽게 말해 REST API는 HTTP로 정보를 보낼 때 어떤 URI로, 어떤 메서드를 사용할지를 정하는 개발자들 사이의 약속이라고 할 수 있다.
흔히 우리는 RESTful하다라는 말도 자주 사용하는데 REST의 기본 원칙을 성실히 지킨 서비스 디자인에 대해서 RESTful하다라고 말을 한다.
2. REST의 원칙
REST의 가장 중요한 원칙 두 가지는 아래와 같다.
- URI는 정보의 자원을 표현해야 함 (명사로 표현)
- 자원에 대한 행위는 HTTP method으로 표현한다. 여기서 HTTP method는 GET, POST, PUT, DELETE 가 있음
3. REST 아키텍쳐에 적용되는 제한조건
REST 아키텍쳐에 적용되는 6가지 제한조건은 아래와 같다.
- Uniform Interface (일관적 인터페이스) : 일관적인 인터페이스로 분리되어야 한다
- Stateless (무상태): 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다
- Cacheable (캐시 처리 가능) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
- Layered System (계층화): 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다.
- 클라이언트/서버 구조: 아키텍쳐를 단순화시키고 더 작은 단위로 분리시킴.
- Code on Demand (optional requirement): 자바스크립트, 자바 애플릿의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
4. What is RESTful API?
위에서도 언급했지만 REST의 기본 원칙을 성실히 지킨 서비스 디자인에 대해서 RESTful하다라고 말한다. 다음과 같은 조건은 RESTful 한 서비스의 일부 요소이다.1) 자원의 식별이 가능
- 요청 내에 기술된 개별 자원이 식별 가능해야 함
2) 리소스와 행위의 명시적 분리
-URI로 표현되는 리소스 (명사)
-행위: HTTP method를 이용. ex) GET, POST, DELETE, PUT, PATCH
-행위: HTTP method를 이용. ex) GET, POST, DELETE, PUT, PATCH
1) GET: 조회
2) POST: 생성
3) DELETE: 삭제
4) PUT: 기존 entity 전체 수정
5) PATCH: 기존 entity 일부 수정
3) header와 body의 분리
-메세지를 header와 body에 분리해서 담자
-API 버전 정보, 응답받고자 하는 MIME 타입 등은 헤더에,
-entity에 대한 내용은 body에 담는다.