Node.js를 이용한 간단한 API 구축

이강용·2024년 1월 27일
0

CS

목록 보기
5/109

파일이 수정되어도 API가 수정되지 않도록 하는 서버를 만들어보자

👉🏻 내부 시스템의 변경사항이 API 사용자에게 영향을 미치지 않도록 할 수 있음. 즉, DB 구조나 서버의 비지니스 로직에 변경이 생겨도, API의 인터페이스 자체는 그대로 유지될 수 있음. 이는 API를 일괄되고 안정적인 계약(contract)으로 만들어, 클라이언트 애플리케이션(사용자의 앱)이 서버의 내부 변경에 대해 걱정하지 않고도 안정적으로 서비스를 이용할 수 있게 함. 결과적으로 사용자는 서비스의 내부적인 업그레이드나 수정 때문에 빈번한 앱 업데이트를 강제로 받지 않아도 됨. 이러한 접근은 API의 버전 관리와 호환성 유지에도 중요한 역할을 하며, 개발자는 이를 통해 더 나은 유지보수성과 확장성을 확보할 수 있음

What is Node.js ?

  • 비동기적 이벤트 주도 방식, 논블로키이 I/O 모델을 사용하는 구글의 V8 엔진을 장착한 자바스크립트 런타임

런타임이란?

  • 프로그램이 실행될 때 그 프로그램이 머무는 공간을 의미, 브라우저는 자바스크립트 런타임이기도 함.
  • 브라우저라는 공간 안에서 자바스크립트로 만든 프로그램을 실행할 수 있기 때문
  • 이와 동일하게 Node.js 또한 자바스크립트 런타임이므로 자바스크립트로 만든 프로그램을 실행할 수 있음.
    👉🏻 다시말해, 자바스크립트로 만든 게임, 알고리즘, 서버 등 많은 것들을 실행할 수 있음

express 모듈 설치

npm install express

  • express는 Node.js에서 동작하는 웹 프레임워크 중 많이 사용되며 라우팅 설정, 미들웨어 설정, 정적 자원 서버 설정 등이 쉬은 프레임워크

💡 라우팅이란?

  • URL(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말함

URL

http://127.0.0.1:3000
프로토콜 : HTTP
IP : 127.0.0.1 (루프백 IP)
port : 3000
prot는 숨겨져있음
https port : 443이 기본 포트
http port : 80이 기본 포트

{
  "name": "leesfact",
  "tall": "187"
}
const express = require("express");
const app = express();
const port = 3000;
const fs = require("fs");
app.get("/", (req, res) => {
  const f = JSON.parse(
    fs.readFileSync("a.json", {
      encoding: "utf-8",
    })
  );
  const data = {
    name: f.name,
  };
  res.send(data);
});

app.listen(port, () => {
  console.log(`http://127.0.0.1:${port}`)
});

node a.js

내부적으로 a.json 파일을 수정

{
  "name": "leesfact",
  "tall": "200"
}

node a.js 실행

즉, API 사용자에게 키가 몇인지 알려주지 않음 (내부 시스템의 변경사항이 API 사용자에게 영향을 미치지 않도록 할 수 있음)

profile
HW + SW = 1

0개의 댓글