728x90
Express.js의 CRUD API를 간단하게 구현한 코드. 미들웨어는 덤. DB 관련 코드는 임시로 작성한 것이기에 전체 구조 정도만 파악하기 위해 작성한 글
// cats/cats.router.ts
// app 객채가 구분되는 것을 이어줄 필요가 있음
import { Router } from 'express';
// router 인스턴스 생성
const router = Router();
// READ 데이터 조회
router.get('/cats', (req, res) => {
try {
const cats = { data: 'data example' };
// throw new Error('db connect error');
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.send({
succes: false,
error: error.message,
});
}
});
// READ 특정 데이터 조회
// 동적 라우팅 <= :id 파라미터를 활용
router.get('/cats/:id', (req, res) => {
try {
const params = req.params;
console.log(params);
const cats = Cat.find((cat) => {
return cat.id === params.id;
})
const cats = { data: 'data example' };
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.send({
succes: false,
error: error.message,
});
}
});
// CREATE 데이터 생성
router.post('/cats', (req, res) => {
try {
const data = req.body; // json 바디값은 미들웨어 필요
console.log(data);
// 데이터 DB에 저장하는 create코드 생성할것
res.status(200).send({
success: true,
data: {},
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message,
});
}
});
// Update PUT
router.put('/cats/:id', (req, res) => {
try {
const params = req.params;
const body = req.body;
let result;
cats.forEach((cat) => {
if (cat.id === params.id) {
cat = body;
result = cat;
}
})
const cats = { data: 'data example' };
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.send({
succes: false,
error: error.message,
});
}
})
// Update PATCH(partial update)
// Patch는 구조분해 할당으로 누락 데이터 보완
try {
const params = req.params;
const body = req.body;
let result;
cats.forEach((cat) => {
if (cat.id === params.id) {
cat = { ...cat, ...body }
result = cat;
}
})
const cats = { data: 'data example' };
res.status(200).send({
success: true,
data: {
cats,
},
});
} catch (error) {
res.send({
succes: false,
error: error.message,
});
}
// Delete
router.delete('/cats/:id', (req, res) => {
try {
const params = req.params;
// 데이터베이스에서 id와 다른 값들만 필터링. id에 해당하는 정보는 삭제
const newCat = Cat.filter((cat) => cat.id === params.id);
res.status(200).send({
success: true,
data: newCat,
});
} catch (error) {
res.status(400).send({
success: false,
error: error.message
})
}
})
// router 인스턴스 등록
export default router;
728x90
'Research > Node.js' 카테고리의 다른 글
Express.js_싱글톤 패턴, 비즈니스 로직 분리 (0) | 2023.03.24 |
---|---|
Express.js_router 분리하는 방법 (0) | 2023.03.24 |
Express.js_미들웨어 사용 방법 (0) | 2023.03.24 |
Express.js_typescript로 시작하는 방법 (0) | 2023.03.23 |
npm_Package.json 파일 해석 (0) | 2023.03.23 |
댓글