본문 바로가기

Backend/WEB

[Toast Meetup] REST API

REST API

- Representational State Transfer API

- HTTP의 주요 저자 중 한명인 로이 필딩이 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 논문에서 소개

- 자원, 행위, 표현

 

REST API의 6가지 특징

Uniform (유니폼 인터페이스)

- Uniform이란 균일하다, 동일하게 하다, 평준화하다 의 의미를 가진다.

이와 같은 의미로, REST API는 uniform interface를 제공하여 자원(resource)에 대한 조작이 한정되고 통일된 형태로 이뤄지도록 만들어준다. 이는 곧 플랫폼에 종속적이지 않은 인터페이스를 제공한다는 것이다.

- Self-descriptiveness (자체 표현 구조)

REST API의 메시지는 다른 복잡한 해석 절차나 외부 모듈없이 그 스스로 쉽게 이해가능한 자체 표현 구조를 가진다.\

- HATEOAS(Hypermedia As The Engine Of Application State)

요청에 포함된 자원, 동작에 대해 URI를 포함해 응답하여 서버와 클라이언트 간의 동적인 상호작용을 도와준다.

- Resource Identification In Requests

요청으로 자원을 식별할 수 있어야 한다.

- Resource Manipulation Through Representations

표현을 통해, 자원에 대한 조작을 실행한다.

 

Stateless (무상태성)

세션 정보나 쿠키 정보와 같은 별도의 상태 정보를 저장하고 관리하지 않는다.

서비스의 자유도가 높아지며 요청에 대한 처리에 집중할 수 있도록 해준다.

Cacheable (캐시 가능)

REST API는 HTTP protocol을 기반으로 한 아키텍쳐이기 때문에 HTTP가 가진 캐싱 기능이 적용 가능하다.

HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용해 캐싱을 구현할 수 있다.

Client - Server 구조

클라이언트와 서버가 명확히 구분되어, 의존성이 줄어든다.

계층형 구조

다중 계층을 사용해 보안, 로드 밸런싱 등의 계층을 둘 수 있으며,

Proxy, Gateway와 같은 네트워크 미들웨어를 가질 수 있다.

Code On Demand(Optional)

클라이언트가 서버가 요청에 대해 어떻게 처리할지 주문한다. 주문형 코드

 

REST API 디자인 가이드 (표준X)

- URI로 정보의 자원을 표현, HTTP Method로 자원에 대한 행위를 표현

- 슬래시 구분자(/)를 통해 계층 관계를 표현한다.

ex) waristo.tistory.com/computer-science/network

- URI 마지막에 슬래시 구분자(/)를 사용하지 않는다.

- 밑줄(_)을 URI에 사용하지 않는다. (가독성)

- 가급적 대문자 사용을 하지 않는다. (대/소문자의 구분)

- 파일 확장자를 URI에 포함하지 않고, Header를 사용한다.

 

HTTP Method

- GET: Read, 특정 자원을 조회, 자원에 대한 상세 정보를 가져온다.

- POST: Create, 새로운 자원을 생성한다.

- PUT: Update, 자원에 대한 수정 => PATCH와의 차이점은 자원의 전체 교체(PUT), 자원의 일부 교체(PATCH)

- DELETE: Delete, 자원을 삭제

이외에 HEAD, CONNECT, OPTIONS, TRACE가 있다.

 

Colllection과 Document

- Document는 문서, 객체라고 이해할 수 있다.

- Collection은 Document의 집합

- 둘 모두 자원(resource)이라고 할 수 있으며, URI로 표현할 수 있다.

- Collection은 복수형, Document는 단수형으로 지켜주는 것이 좋다.

 

REST API의 장점

- Open API 제공에 용이하다.

- 플랫폼에 종속적이지 않기 때문에, 멀티 플랫폼 제공에 용이하다.

 

REST API의 단점

- 디자인에 대한 명확한 표준 규약이 없다.

- JSON , XML 형태의 데이터는 RDBMS 표현에 적합하지 않다.

 

HTTP에 대한 더 많은 참고는 mozilla web doc과 RFC 문서를 추천한다.

 

참고)

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.toast.com

 

REST 아키텍처를 훌륭하게 적용하기 위한 몇 가지 디자인 팁

최근의 서버 프로그램은 여러 웹 브라우저는 물론이며, 아이폰, 안드로이드 애플리케이션과의 통신에 대응해야 합니다. 이번 글에선 여러 문제를 지혜롭게 대처할 수 있는 REST 아키텍처에 대해

spoqa.github.io