Node.js로 GET, POST, PUT, DELETE 같은 HTTP 메서드를 한번 만들어보기로 했다.
기본적으로는 Express.js를 사용하면 이런 작업을 더 간단하고 효율적으로 할 수 있다.
1. Node.js와 Express 설치
우선 당연하지만 설치부터 해줘야 한다.
mkdir my-backend
cd my-backend
npm init -y
npm install express
위부터 차례대로 해주면 된다.
2. Express 서버 코드 작성
app.js 파일을 하나 만들어준 후
const express = require('express');
const app = express();
const port = 3000;
// JSON 파싱 미들웨어 추가
app.use(express.json());
// GET 요청 처리
app.get('/api/items', (req, res) => {
res.json({ message: 'GET 요청', items: [1, 2, 3] });
});
// POST 요청 처리
app.post('/api/items', (req, res) => {
const newItem = req.body; // 클라이언트에서 보낸 데이터를 받음
res.json({ message: 'POST 요청', item: newItem });
});
// PUT 요청 처리
app.put('/api/items/:id', (req, res) => {
const { id } = req.params; // URL에서 id를 가져옴
const updatedItem = req.body; // 수정된 데이터
res.json({ message: `PUT 요청 ${id} 수정`, item: updatedItem });
});
// DELETE 요청 처리
app.delete('/api/items/:id', (req, res) => {
const { id } = req.params; // URL에서 id를 가져옴
res.json({ message: `DELETE 요청 ${id}을(를) 삭제` });
});
// 서버 시작
app.listen(port, () => {
console.log(`서버가 http://localhost:${port} 에서 실행 중`);
});
이렇게 작성해주면 된다.
간단하게 설명을 보면
- app.get: 클라이언트의 GET 요청을 처리
- /api/items 엔드포인트에서 데이터를 조회할 때 사용
- app.post: 클라이언트의 POST 요청을 처리.
- /api/items 엔드포인트에서 새로운 데이터를 생성할 때 사용
- 요청의 본문(body)을 처리하기 위해 express.json() 미들웨어를 추가
- app.put: 클라이언트의 PUT 요청을 처리
- /api/items/:id 엔드포인트에서 특정 데이터를 수정할 때 사용
- URL에서 :id는 동적 매개변수
- app.delete: 클라이언트의 DELETE 요청을 처리
- /api/items/:id 엔드포인트에서 특정 데이터를 삭제할 때 사용
3. 서버 실행
이제 저장을 해준 후
node app.js
로 실행을 해준다.
이후 postman같은 곳에서 테스트 해볼 수 있다.
아니면
curl http://localhost:3000/api/items
curl -X POST -H "Content-Type: application/json" -d '{"name": "item1"}' http://localhost:3000/api/items
등과 같이 curl을 이용해도 좋다.
DB?
만약 db도 연결해서 하고싶다면
전 MySQL이라 mysql2를 사용했습니다.
npm install mysql2
각자 맞는 패키지를 설치해주고
const express = require('express');
const mysql = require('mysql2');
const app = express();
const port = 3000;
// MySQL 연결 설정
const db = mysql.createConnection({
host: 'localhost', // MySQL 서버 주소
user: 'root', // MySQL 사용자명
password: 'password', // MySQL 비밀번호
database: 'test_db' // 사용할 데이터베이스 이름
});
// MySQL 연결 확인
db.connect((err) => {
if (err) {
console.error('DB 연결 실패:', err);
return;
}
console.log('MySQL 연결 성공!');
});
// GET 요청 처리 예시 (DB에서 데이터 조회)
app.get('/api/items', (req, res) => {
db.query('SELECT * FROM items', (err, results) => {
if (err) {
res.status(500).json({ message: 'DB 조회 실패', error: err });
} else {
res.json({ items: results });
}
});
});
// 서버 시작
app.listen(port, () => {
console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});
위와같이 연결해주면 된다.
만약 post라면
const express = require('express');
const mysql = require('mysql2');
const app = express();
const port = 3000;
// JSON 파싱 미들웨어 추가
app.use(express.json()); // 클라이언트에서 보낸 JSON 데이터를 처리할 수 있게 함
// MySQL 연결 설정
const db = mysql.createConnection({
host: 'localhost', // MySQL 서버 주소
user: 'root', // MySQL 사용자명
password: 'password', // MySQL 비밀번호
database: 'test_db' // 사용할 데이터베이스 이름
});
// MySQL 연결 확인
db.connect((err) => {
if (err) {
console.error('DB 연결 실패:', err);
return;
}
console.log('MySQL 연결 성공!');
});
// POST 요청 처리 예시 (DB에 데이터 삽입)
app.post('/api/items', (req, res) => {
const { name } = req.body; // 클라이언트로부터 받은 데이터 (예: { "name": "item1" })
// 데이터베이스에 새로운 항목을 추가하는 SQL 쿼리
const query = 'INSERT INTO items (name) VALUES (?)';
db.query(query, [name], (err, result) => {
if (err) {
res.status(500).json({ message: 'DB에 항목 추가 실패', error: err });
} else {
res.status(201).json({ message: '아이템이 성공적으로 추가되었습니다!', item: { name } });
}
});
});
// 서버 시작
app.listen(port, () => {
console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});
이런식이다.
'이것저것' 카테고리의 다른 글
| React Server Component? (1) | 2024.10.30 |
|---|---|
| 스위프 6기 프로젝트 빈더 (2) | 2024.10.25 |
| 디바운싱 (0) | 2024.10.23 |
| 카카오 주소 검색 API (4) | 2024.10.06 |
| git push 에러! (6) | 2024.09.21 |