// TODO: cors를 적용합니다.
app.use(cors())
// TODO: Express 내장 미들웨어인 express.json()을 적용합니다.
app.use(express.json({strict:false}))
const port = 4000;
const discussionsRouter = require('./router/discussions');
// TODO: app.use()를 활용하여 /discussions 경로로 라우팅합니다.
app.use('/discussionsRouter',discussionsRouter)
app.js 코드에서 있는 투두 작성해주었다.
위에까지 한 경우 2pass.. ㅠㅠ
그리고나서 1시간여정도를 삽질 했지만 아직도 2pass^^
// TODO: discussions 라우터를 완성합니다.
const { discussionsController } = require('../controller');
const { findAll, findById } = discussionsController;
const express = require('express');
const router = express.Router();
// TODO: 모든 discussions 목록을 조회하는 라우터를 작성합니다.
router.get('/list', findAll)
// TODO: :id에 맞는 discussion을 조회하는 라우터를 작성합니다.
router.get('/id', findById)
module.exports = router;
router.get('/lower', (req, res) => {
res.send(data);
}) 라우터의 형식인데 위에 findAll,findById로 대체하였다.
findAll: (req, res) => {
// TODO: 모든 discussions 목록을 응답합니다.
res.status(200).send(discussionsData)
},
왜냐면 위 컨트롤러의 형식이 이미 이렇게 짜여져 있었기 때문에
그런데 404에러가 계속 뜬다. 일단 오류해결부터..
오류의 원인은 라우팅 할때 경로지정하는 부분 복붙해놓고 수정안해놨던 것이였다,..
app.use('/discussionsRouter',discussionsRouter) 바로 이부분. 그래서 app.use('/discussions', discussionsRouter)로
다시 수정했더니 404오류는 사라졌다..
이제
GET /discussions 요청 과 id 조회 요청 부분을 한다.
먼저 discussions.js
라우터를 작성해준다. 저번 섹션에서 했던 부분이라 이부분은 간단하게 넘어간다.
// TODO: discussions 라우터를 완성합니다.
const { discussionsController } = require('../controller');
const { findAll, findById } = discussionsController;
const express = require('express');
const router = express.Router();
// TODO: 모든 discussions 목록을 조회하는 라우터를 작성합니다.
router.get('/', findAll)
// TODO: :id에 맞는 discussion을 조회하는 라우터를 작성합니다.
router.get('/:id', findById)
module.exports = router;
index.js 부분.
const { agoraStatesDiscussions } = require("../repository/discussions");
const discussionsData = agoraStatesDiscussions;
const discussionsController = {
findAll: (req, res) => {
// TODO: 모든 discussions 목록을 응답합니다.
return res.status(200).send(discussionsData)
},
findById: (req, res) => {
// TODO: 요청으로 들어온 id와 일치하는 discussion을 응답합니다.
const {id} = req.params; ///req.params.id 로도 가능하다.
const filtering = discussionsData.filter(el => el.id === Number(id))
// console.log(filtering)
if(filtering.length > 0){ //이거 지정안해주면 pass안됨.
return res.status(200).json(...filtering)// 스프레드연산자로 배열복제
}else {
return res.status(404).json("no")
}
}
};
module.exports = {
discussionsController,
};