● 오늘 공부한 것
- fe-sprint-statesairline-server
어제는 express 와 미들웨어의 늪에 빠져서 힘들었는데, 그래도 많은 삽질을 해놓았더니 다져놓은만큼 오늘은 쉽게 문제풀이를 할 수 있었습니다.
fligthRouter.js
const { findAll, findById, update } = require('../controller/flightController');
const express = require('express');
const router = express.Router();
router.get('/', findAll);
router.get('/:uuid', findById);
router.put('/:uuid', update);
module.exports = router;
- '/' 경로로 들어오게 되었을 때, findAll이라는 이벤트 함수를 실행
- '/:uuid' 뒤의 path로 uuuid가 들어온다면 findById라는 이벤트 함수 실행
- '/:uuid'뒤로 put 요청이 들어오면 update라는 이벤트 함수 실행
flightController.js
- findAll
findAll: (req, res) => {
const { departure_times, arrival_times, destination, departure } = req.query;
// TODO:
if (departure_times && arrival_times) {
const result = flights.filter(
(flight) =>
flight.departure_times === departure_times &&
flight.arrival_times === arrival_times,
);
return res.status(200).json(result);
}
if (destination && departure) {
const result = flights.filter(
(flight) =>
flight.destination === destination && flight.departure === departure,
);
return res.status(200).json(result);
}
return res.status(200).json(flights)
}
- findById
findById: (req, res) => {
const { uuid } = req.params;
// TODO:
if (uuid){
const findId = flights.filter(flight => flight.uuid === uuid);
return res.status(200).json(findId);
}
}
- update
update: (req, res) => {
const { uuid } = req.params;
const bodyData = req.body;
// TODO:
if (uuid && bodyData){
flight.map((flight, idx) =>{
if (flight.uuid === uuid) { flights[idx] = {...flight, ...bodyData} }
return res.status(201).json(flights[idx]);
})
}
}
bookRouter.js
const { findAll, findByPhone, findByPhoneAndFlightId, create, deleteByBookingId } = require('../controller/bookController');
const express = require('express');
const router = express.Router();
router.get('/', findAll);
router.get('/:phone', findByPhone);
router.get('/:phone/:flight_uuid', findByPhoneAndFlightId);
router.post('/', create);
//Optional
router.delete('/:booking_uuid', deleteByBookingId);
module.exports = router;
- '/' 라우터로 get요청을 하면 findAll 이벤트 함수를 실행
- '/:phone' 라우터로 get 요청을 하면 findByPhone 이벤트 함수를 실행
- '/:phone/:flight_uuid' 라우터로 get요청을 하면 findByPhoneAndFlightId 이벤트 함수를 실행한다.
- '/' 라우터로 post 요청이 들어오면 create 이벤트 함수를 실행한다.
bookController.js
- findAll
findAll: (req, res) => {
return res.status(200).json(booking);
}
- findByPhone
findByPhone: (req, res) => {
const {phone} = req.params;
if (phone){
const filterphone = booking.filter(list => list.phone === phone);
return res.status(200).json(filterphone);
}
}
- findByPhoneAndFlightId
findByPhoneAndFlightId: (req,res) => {
const {phone, flight_uuid} = req.params;
// TODO:
if (phone && flight_uuid){
const filterlist = booking.filter(list =>
list.phone === phone && list.flight_uuid === uuid);
return res.status(200).json(filterlist);
}
}
- create
create: (req, res) => {
// POST /book에서 사용할 booking_uuid입니다.
const booking_uuid = uuid();
// TODO:
const reservation = {
booking_uuid,
...req.body
};
booking.push(reservation);
return res.status(201).json(booking);
}
- deleteByBookingId
deleteByBookingId: (req, res) => {
const {booking_uuid} = req.params;
// TODO:
if (booking_uuid){
booking = booking.filter(list => list.booking_uuid !== uuid);
return res.status(204).json(booking);
}
}
조금 과제가 아쉬웠다면? 반환하는 값들에 대해서 response 객체의 status를 어떻게 반환해야하고, body에 값을 어떤 json데이터를 담아야하는지 조금 더 명시적으로 적혀있었으면 좋았을 것 같다.
● 내가 놓치고 있던 것
- res.status 로 헤더에 상태코드를 반환할 수 있다.
● 수업 이외의 공부
- 할일 리스트 만들기
- usememo 공부.. 어렵다.. useCallback useMemo가 너무 헷갈ㄹㅕ요
- 프로그래머스 1솔
- 모두의 네트워크 책 읽기