2025년 1월 2일

김동환·2025년 1월 2일

오늘의코드

//express 도구를 가져온다. express 는 서버를 만들기 위해 도와주는 도구입니다.
import express from 'express';
// constant 라는 상수를 정의하는 폴더에서 환경변수중에 SERVER_PORT 가져온다. SERVER_PORT는 3000이다.
import { SERVER_PORT } from './constants/env.constant.js'; // 
// import dotenvObj from './constants/env.constant.js';
// middleware 폴더에서 error 만 처리하는 middleware 파일에서 errorHandler 만 가져온다.
import { errorHandler } from './middlewares/error-handler.middleware.js';
// constants 상수를 정의하는 폴더에서 http-status 상태를 관리하는 파일에서 HTTP_STATUS 만 가져온다. 상태를 관리하는 객체다.
import { HTTP_STATUS } from './constants/http-status.constant.js';
// routers 폴더에서 index.js 는 라우터를 관리하는 파일에 api 라우터를 가지고 온다. api 라우터는 express 라우터이다.
import { apiRouter } from './routers/index.js';

// express 를 실행해서 app 서버를 만들었다.
const app = express();

// use 미들웨어를 정의한다. express.json 을 사용할 수 있게 한다.
// express.json 을 사용하면 클라이언트가 json 요청으로 데이터를 보낼 때 서버가 파싱해서 req.body 에 데이터를 넣는다.
app.use(express.json());
// Express에서 사용되는 미들웨어로, HTML 폼 데이터를 처리하기 위해 설정됩니다.
// 클라이언트가 전송한 URL-encoded 데이터를 처리하고, 이를 서버에서 쉽게 접근할 수 있도록 req.body 객체에 파싱해 넣어줍니다.
// 폼이라는 것이 input이나 textarear 같은 태그들이 폼 태그다.
app.use(express.urlencoded({ extended: true }));

// get 메서드로 /health-check 요청이 왔을 때 I'm healthy를 전달해준다.
app.get('/health-check', (req, res) => {
  return res.status(HTTP_STATUS.OK).send(`I'm healthy.`);
});

// 접두사를 /api로 고정하고 있고, apirouter 를 사용할 수 있게 해준다.
app.use('/api', apiRouter);

// errorHandler 미들웨어를 사용한다. 에러 처리하는 미들웨어이다.
app.use(errorHandler);

// listen 메서드를 통해서 서버포트에서 내 프로그램을 실행한다. 실행이되면 콜백함수가 실행이되면서 콘솔로그가 찍힌다.
app.listen(SERVER_PORT, () => {
  console.log(`서버가 ${SERVER_PORT}번 포트에서 실행 중입니다.`);
});

TIL: Express를 사용하여 서버 구축하기

오늘은 Express를 사용하여 서버를 구축하는 방법에 대해 학습했습니다. 아래는 제가 작업한 코드를 바탕으로 정리한 내용입니다.


1. Express를 가져오기

import express from 'express';
  • Express는 서버를 간단하게 구축할 수 있도록 도와주는 도구입니다.
  • import express를 통해 Express를 가져와 사용했습니다.

2. 환경 변수 가져오기

import { SERVER_PORT } from './constants/env.constant.js';
  • 환경 변수 관리 파일에서 SERVER_PORT를 가져왔습니다.
  • 이 값은 서버가 실행될 포트를 정의하며, 코드에서는 3000으로 설정되어 있습니다.

3. 에러 핸들러 미들웨어

import { errorHandler } from './middlewares/error-handler.middleware.js';
  • 에러를 처리하기 위한 미들웨어를 가져왔습니다.
  • 이 미들웨어는 서버에서 발생한 오류를 통합적으로 처리할 수 있도록 도와줍니다.

4. HTTP 상태 코드 관리

import { HTTP_STATUS } from './constants/http-status.constant.js';
  • HTTP 상태 코드를 관리하는 객체입니다.
  • 상태 코드 값을 명확하게 정의해 코드의 가독성을 높이고, 잘못된 값을 사용하는 실수를 방지합니다.

5. 라우터 설정

import { apiRouter } from './routers/index.js';
  • 라우터를 관리하는 파일에서 apiRouter를 가져왔습니다.
  • 이 라우터는 /api 경로로 들어오는 요청을 처리하는 데 사용됩니다.

6. Express 서버 생성

const app = express();
  • express()를 실행하여 서버 애플리케이션 객체를 생성했습니다.
  • 이 객체는 라우터, 미들웨어 등을 등록하여 서버의 동작을 정의할 수 있습니다.

7. 미들웨어 설정

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
  • express.json(): 클라이언트가 JSON 형식으로 데이터를 전송하면 이를 파싱하여 req.body에 저장합니다.
  • express.urlencoded(): HTML 폼 데이터를 파싱하여 req.body에 저장합니다.

8. 헬스 체크 API

app.get('/health-check', (req, res) => {
  return res.status(HTTP_STATUS.OK).send(`I'm healthy.`);
});
  • /health-check 경로로 GET 요청이 들어오면 서버 상태를 응답합니다.
  • 이는 서버가 정상적으로 실행 중인지 확인할 수 있는 간단한 API입니다.

9. 라우터 연결

app.use('/api', apiRouter);
  • /api를 접두사로 사용하는 모든 요청을 apiRouter로 연결합니다.

10. 에러 핸들러 연결

app.use(errorHandler);
  • 서버에서 발생한 오류를 처리하기 위해 에러 핸들러 미들웨어를 연결했습니다.

11. 서버 실행

app.listen(SERVER_PORT, () => {
  console.log(`서버가 ${SERVER_PORT}번 포트에서 실행 중입니다.`);
});
  • listen 메서드를 통해 서버를 실행했습니다.
  • 서버 실행 시 콜백 함수에서 포트 번호를 콘솔에 출력합니다.

배운 점

  1. Express의 기본 동작 이해: 서버 객체 생성, 라우터 설정, 미들웨어 사용, 서버 실행 흐름을 알게 되었습니다.
  2. 미들웨어의 중요성: 데이터 파싱 및 에러 처리와 같은 기본 기능을 미들웨어로 처리할 수 있어 코드가 간결해집니다.
  3. 환경 변수 관리: dotenv를 사용하여 환경 변수를 안전하게 관리할 수 있음을 배웠습니다.

느낀 점

  • Express는 간단하고 직관적인 방식으로 서버를 구성할 수 있어 초보자에게도 접근성이 높다고 느꼈습니다.
  • 특히, 미들웨어를 체계적으로 활용하면 유지보수에 유리할 것 같습니다.

앞으로는 더 복잡한 라우팅과 데이터베이스 연동을 학습하며 Express를 심화적으로 사용해볼 계획입니다!

profile
Node.js 7기

0개의 댓글