나만의 아고라스테이츠 서버만들기

임성은·2022년 12월 13일
0
// 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,
};
profile
개발자의 길에 당차게 들어서다!!

0개의 댓글