
웹 애플리케이션은 데이터 저장 및 검색을 위해 데이터베이스와의 연결을 필요로 한다. MySQL과 Sequelize ORM(Object-Relational Mapping)을 사용할 수 있다.
Sequelize 설치 및 설정
npm install sequelize mysql2를 실행하여 Sequelize와 MySQL 드라이버를 설치한다.const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
const Board = sequelize.define('board', {
title: Sequelize.STRING,
content: Sequelize.TEXT,
author: Sequelize.STRING
});
리포지토리에서 모델 사용
boardRepository.js에서 Sequelize 모델을 사용하여 데이터베이스와 상호 작용한다.const Board = require('../models').Board;
exports.findAll = async () => {
return await Board.findAll();
};
exports.create = async (boardData) => {
const board = Board.build(boardData);
return await board.save();
};
오류 처리는 애플리케이션의 중요한 부분이다. Express에서는 미들웨어를 사용하여 오류를 효율적으로 처리할 수 있다.
Express는 요청-응답 사이클의 마지막에 위치하는 오류 처리 미들웨어를 사용한다.
이 미들웨어는 4개의 매개변수를 받는다: 오류 객체, 요청 객체, 응답 객체, 다음 미들웨어 함수.
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
웹 애플리케이션의 보안은 매우 중요하다. Express 애플리케이션의 보안을 강화하기 위해 다음과 같은 방법을 사용한다.
Helmet은 HTTP 헤더를 통한 보안 강화를 위한 미들웨어 패키지다.
npm install helmet 후 애플리케이션에 적용한다.
const helmet = require('helmet');
app.use(helmet());
게시판 API 구현을 통해, 조회, 생성, 수정, 삭제 기능을 제공한다.
boardRoutes.js에서 각 경로에 맞는 컨트롤러 함수를 연결한다.
router.get('/', boardController.getAllBoards);
router.post('/', boardController.createBoard);
router.put('/:id', boardController.updateBoard);
router.delete('/:id', boardController.deleteBoard);
boardController.js에서 API 엔드포인트에 대한 로직을 구현한다.
exports.updateBoard = async (req, res) => {
// 게시글 업데이트 로직
};
exports.deleteBoard = async (req, res) => {
// 게시글 삭제 로직
};