본문 바로가기
개발/Node.js

[Node.js] API 와 REST API

by WaDDak 2024. 9. 2.

 

API 란?

API는 서로 다른 소프트웨어나 어플리케이션 간을 연결해주는 매개체이자 약속이라고 볼 수 있습니다.

API는 두 애플리케이션이 서로 데이터를 주고 받고, 기능을 호출하는 방식을 정의 합니다.

 

주요 개념 :

  • 인터페이스 : API는 애플리케이션이 다른 소프트웨어나 서비스와 상호작용할 수 있는 방법을 제공합니다. 이 인터페이스는 함수, 프로토콜, 도구 등을 통해 구현됩니다.
  • 추상화 : API는 내부 구현을 숨기고, 외부에서 쉽게 사용할 수 있는 방법만을 제공합니다. 이를 통해 개발자는 복잡한 시스템을 쉽게 다룰 수 있습니다.
  • 호출 : API를 통해 특정 기능을 호출할 수 있으며, 이 호출에 대한 결과는 요청을 보낸 애플리케이션으로 반환됩니다.

 

우리가 API를 작성한다는 의미는 ?

  • 웹 어플리케이션(프론트엔드)에서 원하는 기능을 수행하는 URL과 인터페이스를 제공한다는 의미입니다.
  • 우리가 작성할 API에서 원하는 데이터를 받아 데이터베이스에 데이터를 저장하고, 저장되어 있는 데이터를 읽어서 웹 어플리케이션에 데이터를 제공하는 행위를 통해 사용자가 원하는 목적을 이룰 수 있게 해야 합니다.

 

REST API 란?

REST는 (REpresentational State Transfer)의 약자로, REST 아키텍처 스타일을 기반으로 하는 웹 서비스 API입니다. REST는 웹에서 자원을 관리하고, 상태를 표현하는 데 사용되는 규칙과 원칙을 정의한 아키텍처 스타일입니다.

 

최대한 간단히 설명하자면 URL, Headers, Method 등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의한다라고 이해하면 됩니다.

또한 이 REST아키텍쳐는 사람이 봐도 이해할 수 있도록 자원(Resource)을 정의하고 이 자원을 중심으로 표현을 구성하는 원칙을 제시합니다.

 

REST API는 HTTP를 통해 웹 서비스의 자원에 접근하는 방식을 REST 아키텍쳐의 규칙을 따라 구현된 API라고 생각하시면 됩니다.

 

REST API의 주요 특징 :

  1. 자원(Resource) - URL : 
    • 우리가 만들 소프트웨어가 관리하는 모든 것을 자원으로 표현할 수 있습니다. 쇼핑몰이라면 상품에 대해서 정보를 관리할 것이고 또는 장바구니에 담긴 상품들도 관리해야겠죠.
    • 예를 들어, 상품은 /goods RUL로 사용할수 있으며, 장바구니는 /carts로 사용될 수 있을 것입니다.
    • 예: https://api.example.com/users/1 (1번 사용자 자원)  각 주소의 이름이 자원이 될 수 있다.
  2. 행위 - HTTP 메서드  : REST API는 자원에 대한 작업을 수행하기 위해 표준 HTTP 메서드를 사용합니다.
    • 이전에 익혔던 HTTP 메소드를 통해 해당 자원에 대한 행위를 표현할 수 있습니다.
    • 이러한 행위를 CRUD라고 합니다. 자원에 대한 생성/조회/수정/삭제 를 각각의 메소드로 나누었다.
    • POST : 자원을 생성합니다.            => C
    • GET : 자원을 읽거나 검색합니다.  =>  R
    • PUT : 자원을 업데이트합니다.       =>  U
    • DELETE : 자원을 삭제합니다.       =>  D
  3. 표현 
    • 해당 자원을 어떻게 표현할지에 대한 방법입니다. 보통 JSON, XML과 같은 형식을 이용해서 자원을 표현합니다. JSON이 가장 많이 사용됩니다.
    • HTTP에서는 Content-Type이라는 헤더를 통해 표현방법을 서술합니다.
  4. 상태 비저장성 : 각 쵸엉은 서버에 저장된 상태에 의존하지 않으며, 모든 필요한 정보는 요청 자체에 포함되어야 합니다. 즉, 서버는 각 요청을 독립적으로 처리합니다.
  5. 클라이언트 - 서버 구조 : REST는 클라이언트와 서버 간의 역할을 명확하게 구분합니다. 클라이언트는 요청을 보내고, 서버는 요청에 따라 자원을 제공하거나 조작합니다.

 

REST API의 예시 :

 

router.get('/books', (req, res) => {
	res.json({ success: true, data: getAllBooks() });
});

 

  • 위의 예시 코드는 /books라는 URL을 통해 전체 책 목록을 불러와 응답해 주는 역할을 하는 API입니다.
  • HTTP 메서드인 GET은 리소스를 조회하는 역할을 담당하므로, 이코드는 전체 책 목록을 조회하고, 그 결과를 JSON 형식으로 반환 합니다. 이렇게 API가 REST원칙에 따라 구현되었으므로, 이 API는 RESTful하다 볼 수 있습니다.

'개발 > Node.js' 카테고리의 다른 글

[Node.js] Request 와 Response  (0) 2024.09.02
[Node.js] Routing 및 Router  (0) 2024.09.02
[Node.js] Express.js 프레임 워크  (0) 2024.08.30
[Node.js] Package Manager  (0) 2024.08.30
[Node.js] Node.js 란?  (1) 2024.08.30