[TIL# 20] - Express, DB

이상현·2024년 9월 5일

[ TIL ]

목록 보기
20/38

Express

  • 역할: Express는 웹 서버를 구축하는 데 사용하는 웹 프레임워크입니다.
  • 기능: 라우팅, 미들웨어 관리, 요청과 응답 처리 등 서버 측 애플리케이션의 기본적인 기능을 쉽게 구현할 수 있도록 도와줍니다.
// app.js

import express from 'express';
import goodsRouter from './routes/goods.js';
import newsRouter from './routes/news.js';
import connect from './schema/index.js';

const app = express();
const PORT = 3000; // 서버를 열 때 사용할 포트 번호

connect();

app.use(express.json()); // json형태로 서버에 body 데이터를 전달하면, req.body에 데이터를 변환하여 넣어준다.
app.use(express.urlencoded({ extended: true })); // form content type에서 body 데이터를 전달하면, req.body에 데이터를 변환하여 넣어준다

app.get('/', (req, res) => {
  res.send('Hello World!');
});

// localhost:3000/api -> goodsRouter
// localhost:3000/api -> newsRouter
// 2. 라우터를 등록 합니다.
app.use('/api', [goodsRouter, newsRouter]);
// 1. Express.js의 서버를 엽니다.
app.listen(PORT, () => {
  console.log(PORT, '포트로 서버가 열렸어요!');
});

코드를 통해 express 사용법을 익혀보자!

1. Express 인스턴스 생성:

const app = express();를 통해 Express 애플리케이션 인스턴스를 생성합니다.

2. 포트 설정:

const PORT = 3000;에서 서버가 실행될 포트 번호를 설정합니다.

3. MongoDB 연결:

connect(); 함수는 Mongoose를 통해 MongoDB 데이터베이스에 연결하는 코드입니다.

4. 미들웨어 설정:

  • app.use(express.json());
    • JSON 형태의 요청 본문을 파싱하여 req.body에 넣어주는 역할을 합니다.
  • app.use(express.urlencoded({ extended: true }));
    • URL 인코딩된 데이터 (예: 폼 데이터)를 파싱하여 req.body에 넣어줍니다.

5. 라우팅 설정:

  • app.get('/', (req, res) => { res.send('Hello World!'); });

    • 루트 경로('/')에 요청이 왔을 때 "Hello World!"를 응답합니다.
  • app.use('/api', [goodsRouter, newsRouter]);

    • /api 경로로 시작하는 요청을 goodsRouter와 newsRouter에서 처리하도록 라우터를 설정합니다.

6. 서버 시작:

  • app.listen(PORT, () => { console.log(PORT, '포트로 서버가 열렸어요!'); });
    • 지정된 포트에서 서버를 시작하고, 서버가 실행되면 콘솔에 메시지를 출력합니다.

Mongoose

  • 역할: Mongoose는 MongoDB의 객체 데이터 모델링(ODM: Object Data Modeling) 라이브러리입니다.
  • 기능: MongoDB와 상호작용할 때 JavaScript 객체를 데이터베이스 문서에 매핑하여, 데이터 구조를 정의하고, 검증하며, 쉽게 데이터베이스 작업(CRUD)을 할 수 있도록 도와줍니다.

예시: Mongoose를 사용하면 데이터베이스 스키마를 정의할 수 있고, 해당 스키마에 맞춰 데이터를 저장, 수정, 삭제, 조회하는 작업을 편리하게 수행할 수 있습니다.

따라서, Mongoose는 데이터베이스와 관련된 작업을 다루고, Express는 서버의 라우팅과 요청/응답 처리를 담당한다고 생각하면 됩니다. Express가 서버의 뼈대를 제공하고, Mongoose가 데이터와 관련된 로직을 쉽게 구현할 수 있도록 도와주는 역할을 한다고 보면 됩니다.

profile
Node.js_6기

0개의 댓글