728x90
app.ts에 라우터들을 따로 분리해주자. 라우터들이 더 쌓이면 유지보수가 어려워지기 때문이다.
cats 폴더 내 model과 router를 넣어두었다. model은 데이터가 든 파일인데 무시하자. router.ts에 집중하자.
// app.ts
import * as express from 'express';
// 라우터 가져와서..
import catsRouter from './cats/cats.route';
const app: express.Express = express();
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// logging middlewares
app.use((req, res, next) => {
console.log(req.rawHeaders[1]);
console.log('this is middleware!');
next();
});
// json middleware
app.use(express.json());
// 위에서 가져온 라우터 여기서 사용!
app.use(catsRouter);
// 404 middleware
app.use((req, res, next) => {
console.log('Error Middleware');
res.send({ error: '404 not found error' });
});
app.listen(8000, () => {
console.log('listening on port 8000');
});
json middleware와 404 middleware 사이에 catsRouter를 사용했다. 이를 사용하기 위해 위에서 임포트 했다. 이 라우터는 어디서 왔을까? 아래를 확인해보자.
// 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 ===
// })
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,
});
}
});
// router 인스턴스 등록
export default router;
라우터 소스코드를 보면 라우터 인스턴스를 만든 뒤 export 해준다. app.ts에서 사용하는 바로 그 라우터 파일이다.
728x90
'Research > Node.js' 카테고리의 다른 글
node.js_zip and unzip (0) | 2023.09.20 |
---|---|
Express.js_싱글톤 패턴, 비즈니스 로직 분리 (0) | 2023.03.24 |
Express.js_CRUD API (0) | 2023.03.24 |
Express.js_미들웨어 사용 방법 (0) | 2023.03.24 |
Express.js_typescript로 시작하는 방법 (0) | 2023.03.23 |
댓글