파일이 수정되어도 API가 수정되지 않도록 하는 서버를 만들어보자
👉🏻 내부 시스템의 변경사항이 API 사용자에게 영향을 미치지 않도록 할 수 있음. 즉, DB 구조나 서버의 비지니스 로직에 변경이 생겨도, API의 인터페이스 자체는 그대로 유지될 수 있음. 이는 API를 일괄되고 안정적인 계약(contract)으로 만들어, 클라이언트 애플리케이션(사용자의 앱)이 서버의 내부 변경에 대해 걱정하지 않고도 안정적으로 서비스를 이용할 수 있게 함. 결과적으로 사용자는 서비스의 내부적인 업그레이드나 수정 때문에 빈번한 앱 업데이트를 강제로 받지 않아도 됨. 이러한 접근은 API의 버전 관리와 호환성 유지에도 중요한 역할을 하며, 개발자는 이를 통해 더 나은 유지보수성과 확장성을 확보할 수 있음
What is Node.js ?
런타임이란?
- 프로그램이 실행될 때 그 프로그램이 머무는 공간을 의미, 브라우저는 자바스크립트 런타임이기도 함.
- 브라우저라는 공간 안에서 자바스크립트로 만든 프로그램을 실행할 수 있기 때문
- 이와 동일하게 Node.js 또한 자바스크립트 런타임이므로 자바스크립트로 만든 프로그램을 실행할 수 있음.
👉🏻 다시말해, 자바스크립트로 만든 게임, 알고리즘, 서버 등 많은 것들을 실행할 수 있음
express 모듈 설치
npm install express
💡 라우팅이란?
- 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
{
"name": "leesfact",
"tall": "200"
}
node a.js 실행
즉, API 사용자에게 키가 몇인지 알려주지 않음
(내부 시스템의 변경사항이 API 사용자에게 영향을 미치지 않도록 할 수 있음)