[8/17] 41일차 회고록(Web Server 개인 프로젝트)

원지렁·2022년 8월 17일
0
post-thumbnail

오늘의 학습내용

서버 구축하기

1. 코드 리뷰

1-1) Express 설정

// Express 설정
const express = require('express');
const app = express();

// 미들웨어 설정
const cors = require('cors');
const morgan = require('morgan');

// 미들웨어 적용
app.use(morgan('tiny'));
app.use(cors());
app.use(express.json());

// 포트 설정
const port = 4000;

// discussion 라우터 설정
const discussionsRouter = require('./router/discussions');

// app.use()를 활용하여 /discussions 경로로 라우팅합니다. 
app.use('/discussions', discussionsRouter);

// 서버 상태 확인을 위해 상태 코드 200과 함께 응답을 보냅니다.
app.get('/', (req, res) => {
  res.status(200).send('fe-sprint-my-agora-states-server');
});

// 서버 포트 실행
const server = app.listen(port, () => {
  console.log(`[RUN] My Agora States Server... | http://localhost:${port}`);
});

// 서버 & app.js 송출
module.exports.app = app;
module.exports.server = server;

1-2) ID로 필터링하기

// discussions 라우터 경로 설정
const { discussionsController } = require('../controller');
const { findAll, findById } = discussionsController;
const express = require('express');
const router = express.Router();

// 모든 discussions 목록을 조회하는 라우터를 작성합니다.
router.get('/', findAll); // http://localhost:4000/disussions/

// :id에 맞는 discussion을 조회하는 라우터를 작성합니다.
router.get('/:id',findById);

module.exports = router;
// dummy data 가져오기
const { agoraStatesDiscussions } = require("../repository/discussions");
const discussionsData = agoraStatesDiscussions;

const discussionsController = {
  
  // 생략
  
  // 요청으로 들어온 id와 일치하는 discussion을 응답합니다.
  findById: (req, res) => {
  
    const { id } = req.params;

    let filtered_id;

    if(id){
      filtered_id = discussionsData.filter(data => {
        
        // id가 string 타입이므로 Number화 시킨다.
        return data.id === Number(id); 
      })  
    }

    // filtered_id는 배열로 리턴되므로 배열안의 객체를 꺼낸다.
    let filter_id = filtered_id[0];

    if(filter_id){
      return res.status(200).json(filter_id);
    } else {
      return res.status(404).json('Not Found');
    }
  }

};

module.exports = {
  discussionsController,
};
profile
새싹 개발자 지렁이의 벨로그입니다.

0개의 댓글