Middleware는 req(요청) 객체, res(응답) 객체, 그리고 어플리케이션 요청-응답 사이클 도중 그 다음 미들웨어 함수에 대한 엑세스 권한을 갖는 함수다.
간단히 말하면 클라이언트에게 요청이 오고 그 요청을 보내기 위해 응답하기 전에 목적에 맞게 처리하는 거쳐가는 함수들 이다.
응답 하기전에 미들웨어를 먼저 실행 시키고 나서 응답하는 함수를 실행하는 것이다.
예시를 한번 살펴보면
app.use((req, res, next) => {
console.log(req);
next();
});
app.get('/', (req, res, next) => {
res.send('Welcome Home');
});
이것을 중간에 넣어준다. 전에 했던거에 넣는다면,
const express = require('express')
const app = express()
const port = 3000
const accountRouter = require('./routes/account');
app.use('/account', accountRouter)
const productRouter = require('./routes/product');
app.use('/product', productRouter)
app.use((req, res, next) => {
console.log(req);
next();
});
app.get('/', (req, res, next) => {
res.send('Welcome Home');
});
app.listen(port, () => {
console.log(`listening at http://localhost:${port}`)
})
index.js 파일이 이렇게 된다.
중간에 새롭게 추가된 app.use 부분이 미들웨어를 쓰겠다고 하는 부분이다.
저 코드를 실행 하게 되면 어떤 요청이 들어오던 간에 req를 console.log로 찍고 나서 실제 welcome Home 이 뜨는 페이지로 가게 된다.
express.json(), express.urlencoded
이 두개는 데이터 가공 용도로 쓰이는 미들웨어 이다.
웹서버에 요청할 때 단순히 url 외에 추가적인 정보를 전달 할 수 있다.
POST메소드의 body정보가 그것인데, 이것을 express에서 사용하려 하면 복잡한 절차가 필요하다.
이 데이터를 바로 사용하기 쉽게 가공해 주는 것이다.
app.use(express.urlencoded({extended: false}))
app.use(express.json())
이 두 코드를 추가해주면 쓸 준비가 완료 된것이다.
Express의 기본 제공 미들웨어 - static
Express 애플리케이션의 정적 자산을 제공하는 역할을 하는 static이다.
이것을 이용하면 express에서 이미지, 동영상 같은 정적파일을 제공할 수 있다.
app.use(express.static('static'));
일단 이 코드를 index.js에 추가해준다.
그리고 폴더에 static 이라는 폴더를 하나 만들어 준다.
그 안에 이미지를 하나 넣어준다.
전체 폴더를 한번 보면

이렇게 된다.
여기까지 완료 했으면 서버를 동작 시키고 url 맨 뒤에
/이미지파일이름.확장자이름
이렇게 넣어주면 이미지가 뜨는것을 확인 할 수 있을 것이다.
나 같은 경우는 /image.jpg 라고 넣으면 된다.
이로써 midleware에 대해 알아 보았고 다음은 템플릿엔진에 대해 알아보자.