귀염둥이의 메모

[Network] REST API와 RESTful 개념 본문

CS/네트워크

[Network] REST API와 RESTful 개념

겸둥이xz 2021. 10. 27. 08:58
반응형

REST (Representational State Transfer)

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
  • 자원(SW가 관리하는 모든 것)의 표현에 의해서 상태를 전달한다
  • 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용한다 (웹의 장점을 최대한 활용할 수 있음)
  • 자원을 URI를 통해서 명시한다
  • HTTP 메소드를 이용하여 자원에 대한 CRUD 연산을 적용한다

REST 구성

  • 자원 (Resource) - URI
  • 행위 (Verb)- HTTP 메소드
  • 표현 (Representations) - JSON, XML ...

REST의 특징

  1. Uniform Interface
    • URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행
    • HTTP 표준을 따르는 모든 플랫폼에서 사용이 가능
  2. Stateless
    • HTTP는 Stateless이므로 REST 역시 무상태성
    • 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만 단순히 처리
    • 서비스의 자유도가 높아지고 구현이 단순해진다
  3. Cacheable
    • 웹 표준인 HTTP를 그대로 사용하므로 웹에서 사용하는 기존 인프라 그대로 활용
    • HTTP가 가진 캐싱 기능이 적용 가능
  4. Self-descriptiveness
    • REST API 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있음
  5. Client-Server 구조
    • REST Server는 API 제공
    • 클라이언트는 세션, 로그인 정보 등을 직접 관리
    • 각각의 역할이 구분되고 서로 간 의존성이 줄어듦
  6. Layered System
    • REST Server는 다중 계층으로 구성될 수 있음
    • 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있음
    • 게이트웨이, Proxy 같은 네트워크 기반의 중간 매체를 사용할 수 있게 함

REST의 장점

  • HTTP 프로토콜을 그대로 사용하기 때문에 REST API 사용을 위한 별도의 인프라가 필요 없음
  • HTTP 표준을 따르는 모든 플랫폼에서 사용이 가능
  • REST API 메시지가 의도하는 바를 명확하게 나타내기 때문에 의도하는 바를 쉽게 파악할 수 있음
  • 클라이언트와 서버의 역할을 명확하게 분리

REST의 단점

  • 명확한 표준이 존재하지 않음
  • HTTP 메소드 형태가 제한적임(GET, POST, PUT, DELETE)

 

REST API

REST 기반으로 서비스 API를 구현한 것

REST API 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용이 편리함
  • HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있음

RESTful

  • REST API를 제공하는 웹 서비스를 RESTful 하다고 할 수 있음
  • REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭됨

RESTful의 목적

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것 (일관적인 컨벤션)

 

반응형
Comments