- my-agora-states-server/app.js
- 모든 Origin, 경로에 대해 CORS 요청을 허용하게 미들웨어를 적용합니다.
- POST 요청 등에 포함된 body(payload)를 구조화하기 위한 미들웨어를 적용합니다.
- 서버 상태 확인을 위해 GET / 에서 상태 코드 200으로 응답합니다.
- discussionsRouter를 이용하여 /discussions 경로로 라우팅합니다.
- my-agora-states-server/router/discussions.js
- GET /discussions
- 모든 discussion 목록을 조회하는 라우터를 작성합니다.
- GET /discussions/:id
- discussion 하나를 조회하는 라우터를 작성합니다.
- my-agora-states-server/controller/index.js
- discussionsController.findAll (모든 discussion 목록 조회)
- discussionsController.findById (discussion 하나를 조회)
app.js
// TODO: cors를 적용합니다.
app.use(cors());
// TODO: Express 내장 미들웨어인 express.json()을 적용합니다.
app.use(express.json({strict:false}));
./router/discussions.js
// TODO: 모든 discussions 목록을 조회하는 라우터를 작성합니다.
router.get('/', findAll);
// TODO: :id에 맞는 discussion을 조회하는 라우터를 작성합니다.
router.get('/:id', findById);
./controller/index.js
const discussionsController = {
findAll: (req, res) => {
// TODO: 모든 discussions 목록을 응답합니다.
// const { author } = req.query;
// if (author) {
// res.json(discussionsData,filter((item) => item.author === author));
// } else {
// res.json(discussionsData);
// }
res.json(discussionsData)
},
findById: (req, res) => {
// TODO: 요청으로 들어온 id와 일치하는 discussion을 응답합니다.
const { id } = req.params;
const data = discussionsData.filter(discussion => discussion.id === Number(id));
if(data) {
return res.status(200).json(data)
} else {
return res.status(404).send('Not found');
}
}
};
module.exports = {
discussionsController,
};