Restful API

1. 개요

REST(Representational State Transfer)는 World Wide Web과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 HTTP의 주요 저자 중 한 사람인 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. ‘네트워크 아키텍처 원리’란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트래킹 같은 별도의 전송 계층 없이 전송하기 위한 간단한 인터페이스를 말한다.

2. 원리

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

  • 클라이언트/서버 구조 : 일관적인 인터페이스로 분리되어야 한다.
  • 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다.
  • 캐시 처리 가능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
  • 계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 또는 중간을 통해 연결되었는지 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상 시키는데 유용하다.
  • Code on demand(Optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
  • 일관성 : 아키텍처를 단순화시키고 작은 단위로 분리함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다.

인터페이스 원칙 가이드

  • 자원의 식별
    • 요청 내에 기술된 개별 자원을 식별할 수 있어야 한다.
  • 메세지를 통한 리소스의 조작
    • 클라이언트가 어떤 자원을 지칭하는 메세지와 특정 메타데이터만 가지고 있다면 서버 상의 해당 자원을 변경,삭제 할 수 있는 충분한 정보를 가지고 있는 것이다.
  • 자기서술적메세지
    • 각 메세지는 자신을 어떻게 처리해야 하는지에 대한 충분한 정보를 포함해야 한다.
  • 어플리케이션 상태에 대한 엔진으로서 하이퍼미디어
    • 클라이언트가 관련된 리소스에 접근하기를 원한다면, 리턴되는 지시자에서 구별될 수 있어야한다.

3. 주요 목표

  • 구성 요소 상호작용의 규모 확장성
  • 인터페이스의 범용성
  • 구성 요소의 독립적인 배포
  • 중간적 구성요소를 이용해 응답 지연 감소, 보안 강화, 레거시 시스템 인캡슐레이션


Improve this page