RESTful API, API - 각각의 정의, 특징, 장점, 단점, 차이점

 

API

  • Application Programming Interface의 약어
  • 응용 프로그램에서 다른 응용 프로그램의 기능을 호출하거나 데이터를 교환할 수 있도록 하는 인터페이스
  • 즉, 다른 시스템과 상호작용하는 데 필요한 인터페이스를 제공

 

특징

  • 프로그래밍 언어나 플랫폼에 종속되지 않음
  • 외부 시스템과 상호작용하기 위한 인터페이스 제공
  • 데이터 포맷, 프로토콜, 인터페이스 등이 명확하게 정의됨

 

장점

  • 기존 시스템과의 호환성 유지
  • 시스템 간의 상호작용 용이성 (다양한 플랫폼 지원)
  • 개발 시간 단축 및 비용 절감
  • 개발자 간 협업 용이성
  • 비즈니스 확장 용이성

 

단점

  • API가 변경될 경우 호환성 문제 발생 가능성
  • 제공되는 API의 제한적인 경우 제한적인 기능만 사용
  • API를 사용하기 위해 문서를 이해하고 구현해야하는 높은 기술적 요구사항
  • 보안 이슈 존재 가능성
  • API 사용 시 데이터 소유권 문제 발생 가능성

RESTful API

  • Representational State Transfer의 약어
  • HTTP 프로토콜을 기반으로 하는 웹 서비스를 위한 API
  • 분산 하이퍼미디어 시스템을 구축하기 위한 아키텍처 스타일 중 하나

 

특징

  • 자원(Resource) : 모든 자원은 고유한 URI로 식별
  • 행위(Verb) : HTTP Method(GET, POST, PUT, DELETE)를 이용해 자원에 대한 행위 정의
  • 표현(Representations) : 클라이언트는 서버로부터 받은 자원을 표현을 통해 처리
  • 자기 기술(Self-descriptiveness) : REST API 메시지는 스스로를 어떻게 처리할지 충분한 정보 포함
  • 클라이언트-서버 구조 : 클라이언트와 서버가 분리되어 독립적으로 발전
  • 무상태성(Stateless) : 서버는 클라이언트의 상태를 관리하지 않으므로 서비스의 확장성과 레거시와의 상호 운용성 향상
  • 캐시(Casheability) : 클라이언트는 서버로부터 받은 응답을 캐시할 수 있으며, 불필요한 데이터 전송을 줄임
  • 계층화(Layered System) : 서버는 중간 계층 프록시 서버 등을 이용하여 확장성과 보안성 향상
  • 유니폼 인터페이스(Uniform Interface) : 인터페이스는 일관성 있게 설계되어 리소스의 식별, 조작 및 표현을 통일화하여 개발과 이해가 쉬움

 

장점

  • 확장성 : 서버와 클라이언트 사이의 인터페이스가 명확하여 서로간의 의존성이 낮음
  • 재사용성 : HTTP 프로토콜을 사용하기 때문에 기존 웹 인프라 그대로 이용
  • 유지보수 용이성 : 각각의 자원에 대한 명확한 URI 사용으로 쉽게 이해 가능
  • 캐시 기능 : 서버 측의 부하 분산 가능
  • 보안성 :플랫폼에 독립적

 

단점

  • HTTP 프로토콜에 의존
  • URI 설계가 복잡할 수 있음
  • 상태 정보가 클라이언트 서버 간에 전송될 수 있음
  • 필요한 문서화와 테스트 등의 추가 작업 필요

API / RESTful API 차이점

  • 아키텍처의 제약 조건을 따르느냐의 여부
    • API : 제약 조건이 없거나 제한적
    • RESTful API : 아키텍처의 제약 조건을 모두 따르도록 설계
  • 호환성 및 이식성
    • API : 일관성 있는 인터페이스를 제공하지 않을 수 있음
      • 다양한 프로그래밍 언어나 플랫폼에서 호환성이 있도록 개발
    • RESTful API : 시스템의 확장성과 이식성이 뛰어남
      • 표준 HTTP 메소드를 사용하여 인터페이스를 일관성 있게 디자인
      • 때문에 다양한 클라이언트에서 쉽게 이해하고 사용 가능
  • 보안성과 안정성
    • API : 제한적인 보안성과 안정성
      • 제약 조건을 따르지 않거나 없음
    • RESTful API : 보안성 높음
      • 클라이언트-서버 구조, 무상태성, 캐시, 계층화, 유니폼 인터페이스 등의 제약 조건을 모두 따름