REST API

API, REST API, RESTful, HTTP API

Posted by iheese on March 15, 2022 · 3 mins read

API(Application Programming Interface)

  • 컴퓨터와 컴퓨터 프로그램 사이의 연결, 프로그램 간의 상호작용을 도와주는 매개체
  • ‘결제 API를 제공한다’: API를 통해 여러 사람이 사용할 수 있게 프로그래밍된 결제 서비스를 제공한다.


REST API

  • REST 스타일(아키텍처의 제약조건)을 준수하는 API를 의미한다.
  • REST는 HTTP를 잘 활용하기 위한 원칙이다.

    REST의 특징

    • client-server:
      • 자원을 가진 쪽이 서버, 요청하는 쪽이 클라이언트이다.
      • 서버는 API를 제공, 클라이언트는 사용자 인증, Context(세션, 로그인 정보) 등을 구분하여 서로 간의 의존성을 줄인다.
    • stateless:
      • 서버는 각가의 요청을 별개의 것으로 인식하고 처리한다. 이를 통해 서버 처리의 일관성을 부여하고, 서버의 부담을 줄인다.
    • cacheable :
      • 웹 기존 인프라 중 하나인 캐시를 구현할 수 있고, 요청에 대한 효율적인 처리가 가능해진다.
    • uniform interface :
      • URI에 대한 요청을 통일되고 한정적으로 수행한다.
      • 클라이언트의 플랫폼에 무관하며 특정 언어, 기술에 종속받지 않는다.
    • uniform interface의 스타일
      1. 리소스가 URI로 식별되어야 한다.
      2. 리소스를 생성, 수정, 추가하고자 할 때 HTTP 메세지에 표현해서 전송해야한다.
      3. 메세지는 스스로 설명할 수 있어야 한다.
      4. 에플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.(HATEOAS)
    • layered system :
      • 서버는 다중 계층으로 구성될 수 있다. 중간 매체가 존재할 수 있으며 클라이언트는 중간 매개체의 존재 여부를 알 수 없다.
    • code-on-demand (optional) :
      • 요청 메세지만 보고 이해할 수 있는 자체 표현 구조로 되어있다.
  • uniform interface의 스타일을 모두 지킨 것을 REST API 라고 칭하지만 3, 4번 원칙의 구현이 어렵고 현실적이지도 효율적이지도 않다.
  • 하지만 많은 사람들이 REST API, HTTP API를 같은 의미로 사용하고 있다.


HTTP를 위한 RESTful한 원칙

  • URI는 정보의 자원을 표현해야 한다.
  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

web_api


RESTful API URI의 특징

  • URI는 정보의 자원을 표현해야 한다.
    • GET/ members : 모든 멤버의 정보를 달라는 요청
    • PUT/ members/1 : 멤버 중 1번을 수정하라는 요청
    • POST/ members/1 : 멤버 중 1번 리소스를 생성하라는 요청
    • DELETE/ members/1 : 멤버 중 1번 리소스를 삭제하라는 요청
  • URI 마지막은 슬래시 구분자(/) 포함하지 않는다.
  • 하이픈(-) 은 URL 가독성 높일 때 사용하고, 언더바(_)는 사용하지 않는다.
  • URI 경로는 소문자만 사용하고, URI 문법 형식은 URI 스키마와 호스트를 제외하고 대소문자를 구별한다.
  • 파일 확장자는 URI에 포함되지 않는다.
  • Accept Header를 사용한다. (서버에게 자신이 받을 수 있는 미디어 타입이 무엇인지 알려주는 헤더)


응답 코드(상태 코드)

성공

statuscodesuccess


클라이언트로 인한 오류

statuscoderror


서버로 인한 오류

statuscodeerror2


Reference: