TIL 39일차 NodeJS Express2

shleecloud·2021년 9월 10일
0

Codestates

목록 보기
38/95
post-custom-banner

들어가며

어제 했던 실습을 오늘까지 이어서했다. 3일이나 진행해서 넉넉해서 좋았다. 이번 스프린트는 페어분과 같이 진행하느라 템포가 1/4 수준으로 낮아져서 많이 힘들었다. 과정이 진행될수록 내용이 점점 어려워지고 기본기가 부실하면 코드를 이해할 수가 없다. 아무리 열심히 설명해도 배열과 객체 기초를 설명해야하는 상황이면 진이 빠진다. 이번엔 조금.. 그런 벽을 느꼈다. 어렵구나.

오늘 진행한 내용은 어제 엊그제 고생하고 고민한만큼 부드럽게 진행됐다. 전체적인 개념을 정리할 필요를 느끼는데 TIL로 녹이기는 조금 아깝고 새로운 글로 적고 싶다.

이번 TIL은 스프린트 리뷰에서 얻은 내용으로 쓰고싶다. 코드스테이츠 과정중 가장 집중해서 봤고 질문을 많이 한 과목이다. 그만큼 꿀팁이나 이해를 돕는 설명이 좋았다.

Express의 기본 구조

정말 축약적으로 그린 그림이지만 기본적인 내용은 모두 포함되어있다. HTTP 공장의 개념은 미들웨어를 거치면서 데이터가 가공되는 과정을 표현하신 것 같다. 사실 미들웨어에 대한 개념이 모호했는데 이번 세션으로 쫙 정리가 됐다.

MiddleWare?

아래 스크린샷을 보면 app.use로 미들웨어를 배치하면서 데이터가 변환되는 과정을 보여준다. 이게 이해가 정말 안됐는데 단순하게 생각해서 데이터에 미들웨어들이 추가되는 과정이다. app.use 들어가는 부분들은 모두 미들웨어라고 생각하면 된다.

내가 알던 미들웨어는 Apache/Tomcat 같은 하나의 솔루션으로 생각했는데 여기서의 개념은

const flightRouter = require('./router/flightRouter');
const bookRouter = require('./router/bookRouter');
const airportRouter = require('./router/airportRouter');

app.use(cors());
app.use(express.json());

app.use('/flight', flightRouter);
app.use('/book', bookRouter);
app.use('/airport', airportRouter);

Router?

라우터도 일종의 미들웨어로 이해하면 될 것 같다. 다만 길을 잡아주기만 하고 구체적인 가공은 다른 함수로 보내는 것이고. 이렇게 사용하는게 신기했다. 그리고 next 매개변수도 사용하고 싶은데 이번 과정에는 등장하지 않았다. 이 부분도 집고 넘어가고 싶다.

const { findAll, findById, update } = require('../controller/flightController');
const exress = require('express');
const router = exress.Router();

router.get('/', findAll);
router.get('/:id', findById);
router.put('/:id', update);
module.exports = router;
profile
블로그 옮겼습니다. https://shlee.cloud
post-custom-banner

0개의 댓글