-
API 서버 구축 (with Node JS + Express JS)Archive/캡스톤디자인 2022. 4. 19. 20:45
Node JS 프로젝트 준비
Node JS
이번 프로젝트에서는 웹서버를 구축하기 위해 Node JS와 Express JS를 사용한다.
이를 위해 가장 기본적으로 Node JS를 설치한다.
npm init
프로젝트를 진행할 디렉터리를 하나 생성하고, 그곳에서 npm init을 실행하여 Node JS 프로젝트를 시작한다.
npm init시 물어보는 옵션은 모두 기본값으로 설정하였다.
Express JS
이번 프로젝트에서 웹서버를 구현하는 핵심기능은 Express JS 라이브러리를 이용할것이다.
이를 위해 npm을 이용해 Express를 설치한다.
npm i express
Express JS를 이용한 서버 구현
서버 열기
기본적으로 Node JS의 시작파일이 되는 index.js에 서버를 여는 작업을 진행할 것이다.
하지만 그 전에 서버자체의 설정을 구현할 새로운 파일인 app.js를 같은 디렉터리에 생성한다.
touch app.js
이 app.js에 express를 이용해 서버 설정을 작성한다.
const express = require("express"); const { default: helmet } = require("helmet"); const app = express(); app.use(helmet()); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.get("/", (req, res) => { res.json("homepage"); }); module.exports = app;
추가적으로 helmet 라이브러리를 이용해 웹 취약성으로부터 앱을 보호한다.
npm i helmet
이후 express 웹서버 정보를 담고있는 app객체를 module.exports를 통해 내보냈다.
그리고 이는 index.js에서 아래와 같이 불러와서 서버를 실행하는데 사용한다.
const app = require("./app"); const PORT = process.env.PORT || 4000; app.listen(PORT, () => { console.log(`Listening on: http://localhost:${PORT}`); });
process.env.PORT는 나중에 해당 서버를 배포하여 실제 웹서버로 사용될 때 자동적으로 사용할 포트번호로 사용된다.
라우팅
라우팅
라우팅이란, URI 및 특정한 HTTP 요청 메소드를 가지는 클라이언트의 요청에 웹서버가 응답하는 방법을 결정하는 것을 의미한다.app.js 파일에 다음과 같이 기본적인 라우팅을 설정한다.
app.get("/api/data", (req, res) => { res.send("get data") } app.post("/api/data", (req, res) => { console.log(req.body) res.send("post data") } app.delete("/api/data/:id", (req, res) => { res.send(`delete data: ${req.params.id}`) });
- app.get: 데이터베이스에서 값을 가져와 보낼 예정
- app.post: 데이터를 받아 데이터베이스로 값을 보낼 예정 (req.body에서 데이터를 받을 수 있음)
- app.delete: 특정 id를 가진 데이터를 데이터베이스에서 삭제할 예정 (URI의 params부분에 삭제할 데이터의 id값을 넣음)
Express JS에 대한 자세한 정보는 아래의 포스트에서 확인하길 바란다.