API와 REST API의 개념

윤태규·2023년 11월 27일
  1. API와 REST API의 개념
    1) API(Application Programming Interface)란?
    👉 API(Application Programming Interface)는 서로 다른 소프트웨어나 어플리케이션 간을 연결해주는 매개체이자 약속이라고 볼 수 있습니다.
    만약, 스마트폰의 날씨 앱을 이용해 내일의 날씨를 조회한다면, 앱은 날씨 정보를 제공하는 서버에게 정보를 요청해야 합니다. 이 때, 앱과 날씨 서버간의 통신을 도와주는것이 바로 API 입니다.
    API는 정해진 규칙에 따라 날씨 서버에 정보를 요청하는 역할을 담당합니다. 이 규칙은 “어떤 정보를 어떻게 요청할 것인가?”, “응답은 어떤 형식으로 받을 것인가?” 등을 정의한 것으로, 이는 마치 서로간에 약속을 한 것과 동일한 방법인 것이죠.
    그리고, 날씨 앱의 사용자는 API를 통해 서버에 날씨 정보를 요청(Reqeust)하게됩니다. 서버는 이 요청을 처리한 뒤, 최종적인 날씨 정보를 API를 통해 날씨 어플리케이션에 반환(Response)합니다.
    이렇게 API는 서로 다른 시스템 간의 통신을 할 수 있게 해주는 중개자의 역할을 담당하게 됩니다.
    2) 우리가 API를 작성한다는 의미는?
    - 웹 어플리케이션(프론트엔드)에서 원하는 기능을 수행하는 URL인터페이스제공한다는 의미입니다.
    - 우리가 작성할 API에서 원하는 데이터를 받아 데이터베이스에 데이터를 저장하고, 저장되어 있는 데이터를 읽어서 웹 어플리케이션(프론트엔드)에 데이터를 제공하는 행위를 통해 사용자가 원하는 목적을 이룰 수 있게 해야 합니다.
    3) 그럼 REST API는 어떤 의미를 갖는 API인가?
  • REST API, RESTful API 라고 들어보셨나요? 여기서 REST란 무슨 의미일까요?
  • REST는 “Representational State Transfer”의 줄임 말로, 위키를 따르면 다음과 같습니다.

    REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위해 네트워크 상에서 자원을 쉽고 명확하게 식별하고 조작할 수 있게 도와주는 소프트웨어 아키텍처의 한 형식이다.

  • 최대한 간단하게 설명하자면 URL, Headers, Method 등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의한다고 이해하면 됩니다.
    또한 이 “REST 아키텍쳐”는 사람이 봐도 쉽게 이해할 수 있도록 “자원(Resource)”을 정의하고 이 “자원”을 중심으로 표현을 구성하는 원칙을 제시합니다.
  • REST API는 HTTP를 통해 웹 서비스의 자원에 접근하는 방식을 “REST 아키텍쳐”의 규칙을 따라 구현된 API라고 생각하시면 됩니다.
    4) REST API의 구성 요소
    REST API의 구성은 크게 세 가지로 이루어 집니다
  1. 자원(Resource) - URL
    • 우리가 만들 소프트웨어가 관리하는 모든 것을 자원(Resource)으로 표현할 수 있습니다. 쇼핑몰이라면 상품(Goods)에 대해서 정보를 관리할것이고 또는 장바구니(Carts)에 담긴 상품들도 관리해야겠죠.
    • 예를 들어, 상품(Goods)/goods URL로 사용할 수 있으며, 장바구니(Carts)/carts로 사용될 수 있을 것입니다.
  2. 행위 - HTTP method
    • 이전에 배웠던 Http method 기억나시나요? GET, POST 등등이 있다고 했었는데요. 이것으로 해당 자원에 대한 행위를 표현할 수 있습니다. → 예를 들어, GET메서드는 ‘조회(Read)’와 관련이 있으므로 데이터를 읽는 작업을 수행하며, POST메서드는 ‘생성(Create)’와 관련이 있으므로 새로운 데이터를 생성하는 작업을 수행합니다.
    • 이렇게 나누어진 것을 보통 CRUD 라고 합니다. 자원에 대한 생성/조회/수정/삭제를 각각의 method 로 나누어놓은 것이지요.
      Create : 생성(POST)
      Read : 조회(GET)
      Update : 수정(PUT),(PATCH)
      Delete : 삭제(DELETE)
    • 위 이미지의 예시처럼 쓰이는 것이 일반적인 method 사용 방식입니다. 하지만 이것은 필수적인 것은 아니고 모든 곳에서 다 이렇게 지켜서 사용하지는 않습니다. 상황에 따라 위 예시를 완벽하게 지키기 어려운 부분들도 있으니 이 부분 참고 해주세요. 😉
  3. 표현
    • 해당 자원을 어떻게 표현할지에 대한 방법입니다. 보통 JSON, XML 같은 형식을 이용해서 자원을 표현합니다.
    • HTTP에서는 Content-Type 이라는 헤더를 통해 표현 방법을 서술합니다.
  • 5) REST API 예시
    router.get('/books', (req, res) => {
    	res.json({ success: true, data: getAllBooks() });
    });
    • 위의 예시 코드는 /books 라는 URL을 통해 전체 책 목록을 불러와 응답해 주는 역할을 하는 API입니다.
    • Http 메서드인 GET은 리소스를 조회하는 역할을 담당하므로, 이 코드는 전체 책 목록을 조회(Read)하고, 그 결과를 JSON 형식으로 반환합니다. 이렇게 API가 “REST 원칙”에 따라 구현되었으므로, 이 API는 RESTful 하다 볼 수 있습니다.

02. Routing 이해 및 Router 학습

  • 1) Routing이란?
    Routing은 클라이언트의 요청 조건(Http 메서드, 주소 등)에 대응해 응답(Response)하는 방식을 말합니다.
  • 2) Router란? 여기서 말하는 Router는 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js의 기본 기능중 하나입니다.
    • 일반적으로 Router는 아래와 같은 구조를 가집니다.

      router.**METHOD**(**PATH**, **HANDLER**);
    • router: Express.js의 라우터를 정의하기 위해 사용합니다.

    • METHOD: HTTP Method를 나타냅니다. (ex: get, post, put, patch, delete …)

    • PATH: 실제 서버에서 API를 사용하기 위한 경로를 나타냅니다. (ex: users, posts …)

    • HANDLER: 라우트가 일치할 때 실행되는 함수힙니다.

03. API Client 학습

  • 1) API Client란 뭘까?
    💡 API Client란 개발단계에서 우리가 작성한 API의 요청을 확인하거나 테스팅 할 때 도움을 주는 툴입니다. API Client를 사용함으로 개발 속도를 높이거나 잘못된 API 요청으로 인한 치명적인 에러를 예방하는데 도움을 받을 수 있습니다.
    • 대표적인 API Client로는 Postman, Insomnia 가 있습니다. 이 두가지의 API Client는 API 요청(Request)을 손쉽게 구성할 수 있고, 응답(Response)을 직관적으로 확인할 수 있게 도와줍니다.
  • 2) 어떤 상황에 필요할까? 지금까지 우리는 주로 데이터를 가져오는 데 사용되는 Http Method 중 GET 에 대응하는 API를 구현하고, 웹 브라우저를 통해 확인해왔습니다. 그러나, 서버의 데이터를 조회하기 위해선 생성, 수정, 삭제와 같은 작업이 필요할 것입니다. 해당하는 작업을 수행하기 위해서는 POST, PATCH, PUT, DELETE 등의 Http Method를 사용하는 API를 개발하고 테스트 해야할 것입니다. 이런 상황에서 Terminal에서 명령어를 입력하거나, Html 파일을 생성하여, 각각의 API를 테스트할 순 있지만, 더욱 편리하게 서버에 보낼 데이터와 주소를 한번에 관리할 수 있는 API Client를 사용할 예정입니다. 🙂
profile
끝까지 가자

0개의 댓글