API와 RESTful API

hannah·2023년 10월 26일
0

JavaScript

목록 보기
113/121
post-custom-banner

API(Application Programming Interface)

두 개 이상의 프로그램(소프트웨어 시스템)이 통신하기 위해 따라야 하는 규칙

  • API는 특정 프로그래밍 언어로 작성된 라이브러리일 수도 있고 네트워크/프로세스 간 통신 시에 일정 규칙에 맞춰서 요청을 하는 방식이 될 수도 있다.
  • 브라우저의 Web API, fetch, setTimeout등의 함수들 또한 브라우저의 해당 기능들을 부르는 API이다.

  • 호출할 수 있는 API의 명세가 기록된 문서를 API spec.이라고 한다.



그렇다면 RESTful API는 무엇일까

우선 REST에 대해서 알아보자.

REST

존재하는 모든 자원(이미지, 동영상, 텍스트 등 데이터)에 고유한 URI를 부여하여 해당 자원에 대한 주소를 부여하는 것으로 웹 서비스를 만드는데 사용되는 제약(constraint)의 모음이라고 생각하면 된다.

API 디자인에 있어서 HTTP 프로토콜을 의도에 맞게 사용하도록 정의된 아키텍쳐 스타일로 설계시 고려해야 하는 중요한 항목 두 가지는

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

REST 구성

  • 자원 (Resource) : URI
    - REST에서 정보의 가장 핵심적인 추상화는 Resource이다.

  • 행위 (Verb) : HTTP 메서드

  • 표현 (Representations)

참고로 URI는 URL에 대한 상위 개념으로, URI(Uniform Resource Identifier)가 URL(Uniform Resource Locator)을 포함한다.


REST API(RESTful API)

웹 생태계에서 사용되는 API (REST: REpresentational State Transfer)

  • 웹 데이터 전송 방식 중 하나

  • API의 엔드포인트 구조를 구현하는 방식

  • HTTP 프로토콜에서 제공하는 기본 method들(GET, POST, PUT, DELETE)을 사용해서 두 머신이 네트워크를 통해 데이터를 주고 받는 방식이다.

  • REST 방식을 구현하는 웹 서비스를 RESTful한 웹 서비스라고 한다.(그래서 제약들을 모두 만족해서 만들면 RESTful하다 고 한다)

  • API에서 전송하는 자원(resource)을 URI로 표현하고 해당 자원에 행하고자 하는 의도를 HTTP메소드로 정의 각 엔드포인트는 리소스를 표현하는 고유의 URI 주소를 가지고 있으며, 해당 리소스에 행할 수 있는 행위를 표현하는 HTTP메소드를 처리할 수 있게 된다.

특정 리소스(명사)에 HTTP method(동사)를 반영하여 CRUD(Create/Read/Update/Delete)를 수행하는 방식

  • 즉, URI 주소로 HTTP 메소드, 원하는 정보를 요청해 endpoint의 기능이 동작하면서 필요한 정보와 status code를 client server로 보내준다.

이 모든 일련의 과정을 'RESTful API방식으로 웹 데이터가 전송된다'고 표현한다.

REST API의 Maturity Level(성숙도)

  • 3 단계로 이루어진 REST API 구현 성숙도를 뜻한다.

  • 단계가 높을 수록 RESTful하다 고 하며 성숙도가 높다는 것은 사용하는 개발자의 사용성(Usability)이 높다는 의미이기도 하다.

  • 다만 성숙도가 반드시 높을 필요는 없으며 연구 결과에 따르면 level2까지만 구현해도 충분하다고 한다.


이미지 출처

post-custom-banner

0개의 댓글