MySQL과 Node.js 연동: 데이터를 읽고 쓰기 및 CRUD API 구현
이번 강의에서는 MySQL을 Node.js와 연결하여 데이터를 읽고 쓰는 방법을 배우고, 이를 기반으로 CRUD API를 구현하는 방법을 다룹니다. Node.js에서 MySQL을 활용해 데이터베이스 작업을 자동화하고, API를 통해 데이터 처리를 효율적으로 수행할 수 있습니다.
1. MySQL과 Node.js 연동
1.1 MySQL 설치 및 설정
MySQL이 설치되어 있지 않다면, **MySQL 공식 웹사이트**에서 다운로드하여 설치합니다. MySQL 설치 후, 데이터베이스와 테이블을 설정합니다.
CREATE DATABASE node_mysql_example;
USE node_mysql_example;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
이 예시는 users 테이블을 생성하여 사용자의 이름과 이메일을 저장하는 데이터베이스를 만듭니다.
1.2 Node.js에서 MySQL 설치
MySQL을 Node.js에서 사용하기 위해 mysql 모듈을 설치합니다. 프로젝트 폴더에서 다음 명령어를 실행합니다.
npm install mysql
2. MySQL과 Node.js 연결 설정
db.js 파일을 만들어 MySQL과 Node.js를 연결하는 코드를 작성합니다.
// db.js
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost', // MySQL 서버 호스트
user: 'root', // MySQL 사용자
password: 'your_password', // MySQL 비밀번호
database: 'node_mysql_example' // 사용할 데이터베이스 이름
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL:', err);
return;
}
console.log('Connected to MySQL database');
});
module.exports = connection;
이 코드에서는 MySQL 서버에 연결하고, 에러 발생 시 이를 콘솔에 출력하도록 설정합니다. 연결이 성공하면 "Connected to MySQL database" 메시지가 출력됩니다.
3. CRUD API 구현
이제 CRUD 작업을 수행할 수 있는 API를 Express와 MySQL을 사용하여 구현해보겠습니다.
3.1 서버 설정
server.js 파일을 생성하고, 기본적인 Express 서버와 MySQL 연동을 설정합니다.
// server.js
const express = require('express');
const app = express();
const db = require('./db'); // MySQL 연결 파일
app.use(express.json()); // JSON 데이터를 처리하기 위해 사용
// 서버 포트 설정
const PORT = 3000;
// 서버 시작
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
3.2 Create (데이터 생성)
사용자 데이터를 MySQL에 저장하는 POST 요청을 처리하는 API를 만듭니다.
// POST 요청: 새로운 사용자 추가
app.post('/users', (req, res) => {
const { name, email } = req.body;
const query = 'INSERT INTO users (name, email) VALUES (?, ?)';
db.query(query, [name, email], (err, result) => {
if (err) {
return res.status(500).send('Error creating user');
}
res.status(201).send('User created successfully');
});
});
3.3 Read (데이터 조회)
모든 사용자 데이터를 조회하거나 특정 사용자의 데이터를 조회하는 GET 요청 API를 추가합니다.
// GET 요청: 모든 사용자 조회
app.get('/users', (req, res) => {
const query = 'SELECT * FROM users';
db.query(query, (err, results) => {
if (err) {
return res.status(500).send('Error fetching users');
}
res.json(results);
});
});
// GET 요청: 특정 사용자 조회
app.get('/users/:id', (req, res) => {
const { id } = req.params;
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [id], (err, result) => {
if (err) {
return res.status(500).send('Error fetching user');
}
if (result.length === 0) {
return res.status(404).send('User not found');
}
res.json(result[0]);
});
});
3.4 Update (데이터 수정)
특정 사용자의 데이터를 수정하는 PUT 요청 API를 추가합니다.
// PUT 요청: 사용자 정보 수정
app.put('/users/:id', (req, res) => {
const { id } = req.params;
const { name, email } = req.body;
const query = 'UPDATE users SET name = ?, email = ? WHERE id = ?';
db.query(query, [name, email, id], (err, result) => {
if (err) {
return res.status(500).send('Error updating user');
}
if (result.affectedRows === 0) {
return res.status(404).send('User not found');
}
res.send('User updated successfully');
});
});
3.5 Delete (데이터 삭제)
사용자 데이터를 삭제하는 DELETE 요청 API를 추가합니다.
// DELETE 요청: 사용자 삭제
app.delete('/users/:id', (req, res) => {
const { id } = req.params;
const query = 'DELETE FROM users WHERE id = ?';
db.query(query, [id], (err, result) => {
if (err) {
return res.status(500).send('Error deleting user');
}
if (result.affectedRows === 0) {
return res.status(404).send('User not found');
}
res.send('User deleted successfully');
});
});
4. API 테스트
서버를 실행하여 API가 제대로 동작하는지 확인할 수 있습니다.
Postman이나 브라우저에서 각 엔드포인트로 요청을 보내 API를 테스트할 수 있습니다:
- GET: http://localhost:3000/users
- POST: http://localhost:3000/users (JSON 데이터 { "name": "John", "email": "john@example.com" } 포함)
- PUT: http://localhost:3000/users/:id (데이터 수정)
- DELETE: http://localhost:3000/users/:id
5. CRUD API의 장점
- 데이터의 완전한 관리: CRUD API를 사용하면 데이터를 생성, 조회, 수정, 삭제하는 모든 작업을 효율적으로 관리할 수 있습니다.
- 유연한 데이터 처리: 각 요청에 대한 응답을 명확하게 정의할 수 있어, 클라이언트와의 데이터 교환이 원활해집니다.
- 확장성: API를 확장하여 더 복잡한 데이터 구조나 비즈니스 로직을 쉽게 추가할 수 있습니다.
결론
이번 강의에서는 MySQL과 Node.js를 연결하여 데이터를 읽고 쓰는 방법을 배우고, CRUD API를 구현하는 과정을 다루었습니다. Node.js와 MySQL을 연동하여 데이터를 관리하는 API를 구현하면, 웹 애플리케이션에서 유연하고 강력한 데이터 처리가 가능합니다.
'React와 Node.js를 사용한 웹 애플리케이션 개발' 카테고리의 다른 글
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(15) (1) | 2024.09.19 |
---|---|
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(12) (3) | 2024.09.19 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(11) (2) | 2024.09.19 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(10) (2) | 2024.09.18 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(9) (5) | 2024.09.18 |