본문 바로가기
IT

REST API에 대한 설명과 제한조건

by 미니송 2017. 9. 26.

REST API



이번 포스팅은 REST API에 대해 하겠습니다. RESTFUL API, RESTFUL, RESTafrians등 다양한 방식으로 불립니다.


RESTRepresentational State Transfer의 약자입니다. REST는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. 2000년에 Roy Fielding(로이 필딩)의 박사학위 논문에서 소개되었습니다.



REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법입니다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말합니다.


이 두 가지의 의미는 겹치는 부분과 충돌되는 부분이 있습니다. 필딩의 REST 아키텍처 형식을 따르면 HTTP WWW이 아닌 아주 커다란 소프트웨어 시스템을 설계하는 것도 가능합니다. 또한, 리모트 프로시저 콜 대신에 간단한 XML HTTP 인터페이스를 이용해 설계하는 것도 가능합니다.

 

REST의 기본 요소

기본 요소는 리소스, 메소드, 메세지 3가지로 구분될 수 있습니다.

 

메소드

HTTP의 여러가지 메소드가 있지만 REST에서는 CRUD(Create Read Update Delete)에 해당하는 4가지의 메소드를 사용합니다. REST API로 다루는 대상 리소스가 무엇이든 상관없이 같은 메소드에 의해 다뤄집니다.



각각은 POST, GET, PUT, DELETECreate, Read, update, Delete에 해당됩니다.

 

리소스

REST는 리소스 지향 아키텍쳐 스타일입니다. 따라서 리소스로 표현해야 하며 각 세부 리소스에는 id를 붙입니다.



REST 아키텍처에 적용되는 6가지 제한 조건        


클라이언트/서버 구조 : 요청과 응답이 있는 클라이언트 서버 구조를 따라야 하며 일관적인 인터페이스로 분리되어야 합니다.


무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 됩니다. 요청마다 분리되어서 처리된다고 생각하시면 될 것 같습니다.


캐시 처리 가능(Cacheable) : 같은 응답을 반복해야 할 수 있으므로 WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 합니다. 캐싱을 통해 대량의 요청을 효율적으로 처리할 수 있습니다.

캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킵니다.


계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없습니다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용합니다.


Code on demand (optional) : REST API는 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있습니다.


인터페이스 일관성(Uniform Interface) : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해줍니다..

 

댓글