데이터 관리와 API 설계
1. 데이터 관리
- JSON 데이터 생성
src/data/data.json
파일 생성 후 초기 데이터 추가
[
{
"id": 1,
"name": "WonGyeong Choi",
"email": "[email protected]"
},
{
"id": 2,
"name": "Sieun Kim",
"email": "[email protected]"
}
]
- 데이터 읽기/쓰기 유틸리티 함수 작성
src/utils/fileHandler.ts
를 생성하고 데이터 관리를 위한 함수를 작성
import { promises as fs } from 'fs';
const filePath = './src/data/data.json';
// 데이터 읽기
export const readData = async () => {
const data = await fs.readFile(filePath, 'utf-8');
return JSON.parse(data);
};
// 데이터 쓰기
export const writeData = async (data: any) => {
await fs.writeFile(filePath, JSON.stringify(data, null, 2));
};
2. RESTful API 설계
- API 라우트 생성
src/routes/api.ts
파일 생성 후 아래 내용 추가
import { Router, Request, Response } from 'express';
import { readData, writeData } from '../utils/fileHandler';
const router = Router();
// GET: 모든 사용자 데이터 가져오기
router.get('/users', async (req: Request, res: Response) => {
const data = await readData();
res.json(data);
});
// POST: 새 사용자 추가
router.post('/users', async (req: Request, res: Response) => {
const newUser = req.body;
const data = await readData();
newUser.id = data.length + 1; // ID 자동 생성
data.push(newUser);
await writeData(data);
res.status(201).json(newUser);
});
export default router;
- 메인 서버에 API 연결
src/app.ts
에 API 추가
import express from 'express';
import apiRoutes from './routes/api';
const app = express();
const PORT = 3000;
// JSON 파싱 미들웨어 추가
app.use(express.json());
// API 라우트 추가
app.use('/api', apiRoutes);
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
3. 테스트 실행
- 서버 실행
npm run dev
- Postman을 사용해 API 테스트
[
{
"id": 1,
"name": "WonGyeong Choi",
"email": "[email protected]"
},
{
"id": 2,
"name": "Sieun Kim",
"email": "[email protected]"
}
]
{
"name": "Eunjin Joe",
"email": "[email protected]"
}
{
"id": 3,
"name": "Eunjin Joe",
"email": "[email protected]"
}