#3 데이터베이스 연동과 REST API 구현
Node.js는 데이터베이스와의 연동이 간편하며, REST API를 쉽게 구현할 수 있는 환경을 제공합니다. 이번 섹션에서는 Node.js에서 데이터베이스를 연동하는 방법과 REST API를 구현하는 방법에 대해 알아보겠습니다.
데이터베이스 연동
Node.js에서는 다양한 데이터베이스를 지원합니다. 대표적으로는 MySQL, MongoDB, PostgreSQL 등이 있습니다. 이들 데이터베이스는 대부분 노드의 모듈로 제공되므로, 쉽게 설치하여 사용할 수 있습니다.
MySQL 연동
MySQL은 Node.js에서 가장 많이 사용되는 관계형 데이터베이스 중 하나입니다. Node.js에서 MySQL을 사용하기 위해서는 mysql 모듈을 설치해야 합니다.
npm install mysql
mysql 모듈을 설치한 후, 다음과 같이 코드를 작성하여 MySQL에 연결할 수 있습니다.
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_db'
});
connection.connect((err) => {
if (err) throw err;
console.log('MySQL Connected!');
});
MongoDB 연동
MongoDB는 Node.js에서 가장 많이 사용되는 NoSQL 데이터베이스 중 하나입니다. Node.js에서 MongoDB를 사용하기 위해서는 mongodb 모듈을 설치해야 합니다.
npm install mongodb
mongodb 모듈을 설치한 후, 다음과 같이 코드를 작성하여 MongoDB에 연결할 수 있습니다.
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017/my_db';
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log('MongoDB Connected!');
});
REST API 구현
Node.js와 Express를 이용하면 간단하게 REST API를 구현할 수 있습니다. REST API란 HTTP 프로토콜을 이용해 데이터를 주고받는 API입니다. REST는 Representational State Transfer의 약자로, HTTP URI를 통해 자원을 명시하고 HTTP Method(GET, POST, PUT, DELETE)를 통해 자원에 대한 CRUD 작업을 수행하는 것을 말합니다.
Express에서 REST API를 구현하기 위해선 HTTP Method와 URI에 따라서 데이터베이스에 접근하는 로직을 작성해야 합니다. 예를 들어 GET /users 요청이 들어오면 데이터베이스에서 모든 사용자 정보를 가져와서 응답으로 보내는 로직을 작성하면 됩니다.
GET 요청
GET 요청을 처리하기 위해서는 데이터베이스에서 필요한 정보를 가져와서 응답으로 보내주는 로직을 작성해야 합니다. 예를 들어, 사용자 정보를 가져오는 API를 만든다고 가정해보겠습니다.
const express = require('express');
const app = express();
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
];
app.get('/users', (req, res) => {
res.json(users);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
위 코드는 /users URI로 GET 요청이 들어왔을 때, users 배열을 응답으로 보내는 코드입니다.
POST 요청
POST 요청을 처리하기 위해서는 클라이언트에서 보낸 데이터를 데이터베이스에 저장하는 로직을 작성해야 합니다. 예를 들어, 새로운 사용자를 추가하는 API를 만든다고 가정해보겠습니다.
const express = require('express');
const app = express();
let users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
];
let id = 4;
app.use(express.json());
app.post('/users', (req, res) => {
const { name } = req.body;
const user = { id: id++, name };
users.push(user);
res.status(201).json(user);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
위 코드는 /users URI로 POST 요청이 들어왔을 때, 요청 바디에 있는 name 값을 이용하여 새로운 사용자를 생성하고, 생성된 사용자를 응답으로 보내는 코드입니다.
PUT 요청과 DELETE 요청
PUT 요청을 작성하는 방법은 다음과 같습니다.
app.put('/api/users/:id', (req, res) => {
const id = req.params.id;
const updatedUser = req.body; // 업데이트된 사용자 정보를 요청 본문에서 가져옴
// 사용자 정보 업데이트 로직
// ...
res.json({message: `User with id ${id} updated successfully`});
});
PUT 요청은 POST 요청과 비슷하지만, 이미 존재하는 데이터를 업데이트하기 위해 사용됩니다. 따라서 요청 본문에 업데이트된 데이터를 담아서 보내야 합니다. PUT 요청은 기존 데이터를 완전히 대체하므로, 전체 데이터를 담아서 보내야 합니다. 이를 위해 req.body를 사용합니다.
위 코드에서는 app.put() 메서드를 사용해서 PUT 요청을 처리합니다. URL에 :id와 같은 매개변수를 사용해서 업데이트할 사용자의 ID를 전달받습니다. req.params 객체를 사용해서 URL의 매개변수를 가져올 수 있습니다. 업데이트된 사용자 정보는 req.body에서 가져옵니다. 이후에는 업데이트 로직을 수행하고, 성공적으로 업데이트되었다는 메시지를 클라이언트에게 전송합니다.
마지막으로 DELETE 요청을 작성해보겠습니다. DELETE 요청은 다음과 같이 작성할 수 있습니다.
app.delete('/api/users/:id', (req, res) => {
const id = req.params.id;
// 사용자 정보 삭제 로직
// ...
res.json({message: `User with id ${id} deleted successfully`});
});
DELETE 요청은 기존 데이터를 삭제하기 위해 사용됩니다. 따라서 삭제할 데이터의 ID를 URL 매개변수로 전달받습니다. 이후에는 삭제 로직을 수행하고, 성공적으로 삭제되었다는 메시지를 클라이언트에게 전송합니다.
이렇게 REST API를 구현하면, 클라이언트는 HTTP 요청을 통해 서버의 데이터를 생성, 읽기, 수정, 삭제할 수 있습니다. REST API는 HTTP 요청을 사용하기 때문에, 클라이언트와 서버 간의 상호작용을 표준화하고, 간단하게 구현할 수 있습니다. 따라서 REST API는 현재 가장 널리 사용되고 있는 API 디자인 패턴 중 하나입니다.
'javascript pure > javascript 기본' 카테고리의 다른 글
24. 자바스크립트 개발 도구와 테스트-3 (0) | 2023.03.19 |
---|---|
23. 자바스크립트 개발 도구와 테스트-2 (0) | 2023.03.19 |
22. 자바스크립트 개발 도구와 테스트-1 (0) | 2023.03.19 |
20. Node.js와 백엔드 개발-2 (0) | 2023.03.19 |
19. Node.js와 백엔드 개발-1 (0) | 2023.03.19 |
18. jQuery와 React, Vue-3 (0) | 2023.03.19 |
17. jQuery와 React, Vue-2 (0) | 2023.03.19 |
16. jQuery와 React, Vue-1 (0) | 2023.03.19 |