[개발지식] express middleWare - app.use

1. express middleWare

기본적으로 middleWare는 처리과정 중간에서 간섭을 하여, 데이터나 요청 결과를 같이 공유하는 개념의 기능이다.

express는 url 요청(엔드포인트)에 대한 결과를 보내주는 promise의 일종이다.

express = require('express')

app = express()

app.get('/', (req, res)=> {
    res.send('INDEX')
})

express를 위와 같이 사용하면, localhost:3000/(※루트 디렉토리) 이런 식의 url 요청이 오면 'INDEX'라는 문자열을 화면에 표시해주는 방식이다.

2. app.use를 이용한 요청 분기처리

app.use를 활용하면 루트디렉토리를 시작으로, 각 요청에 대한 분기처리를 비교적 간편하게 진행할 수 있다.

Home화면(Home logic)에서 루트 디렉토리 요청, 세부 url 요청에 대한 분기처리를 app.use를 통해 진행할 수 있다(아래 내용 참조).

2-1. 어플리케이션 레벨의 분기처리

라우터를 이용하여 어플리케이션(Home logic) 레벨에서 요청처리를 분기해준다.

app.use('/', require('./routes/index'))
app.use('/tables', require('./routes/tables'))

여기서 routes는 요청에 따른 화면(component)을 분리하여 관리하는 디렉토리이다.

2-2. 라우터 레벨의 분기처리

어플리케이션의 분기처리에서 넘어온 요청을 세부적으로 구성해준다.

const router = express.Router()

app.use middleWare를 통해 라우팅 처리받은 것은 동일하게 Router를 통해 진행한다.

router.get('/', (req, res) => {
    //res.send('THIS IS entities')
    Model.findAll()
    .then(list=>{
        console.log(list)
        res.sendStatus(200)
    })
    .catch(err => console.error('ERROR FOUND : ', err))
}

위에서 미들웨어를 통해(=app.use) 받아온 요청에서 추가 url이 없을 경우 get('/')(*루트 디렉토리 요청으로 처리)하여 추가적인 미들웨어를 생성하지 않는다.

해당 요청에서 처리받은 결과를 res인자로 받아 최종적으로 화면을 구성하는 logic을 구성한다.

app.use를 통해 어플리케이션 레벨로부터 받은 요청을 Router 처리해주며, 이 처리과정이 라우터 레벨에서의 처리이다.

3. 참조링크

미들웨어 - app.use
https://morian-kim.tistory.com/3

좋은 웹페이지 즐겨찾기