기본적으로 middleWare는 처리과정 중간에서 간섭을 하여, 데이터나 요청 결과를 같이 공유하는 개념의 기능이다.
express는 url 요청(엔드포인트)에 대한 결과를 보내주는 promise의 일종이다.
express = require('express')
app = express()
app.get('/', (req, res)=> {
res.send('INDEX')
})
express를 위와 같이 사용하면, localhost:3000/(※루트 디렉토리) 이런 식의 url 요청이 오면 'INDEX'라는 문자열을 화면에 표시해주는 방식이다.
app.use를 활용하면 루트디렉토리를 시작으로, 각 요청에 대한 분기처리를 비교적 간편하게 진행할 수 있다.
Home화면(Home logic)에서 루트 디렉토리 요청, 세부 url 요청에 대한 분기처리를 app.use를 통해 진행할 수 있다(아래 내용 참조).
라우터를 이용하여 어플리케이션(Home logic) 레벨에서 요청처리를 분기해준다.
app.use('/', require('./routes/index'))
app.use('/tables', require('./routes/tables'))
여기서 routes는 요청에 따른 화면(component)을 분리하여 관리하는 디렉토리이다.
어플리케이션의 분기처리에서 넘어온 요청을 세부적으로 구성해준다.
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 처리해주며, 이 처리과정이 라우터 레벨에서의 처리이다.
미들웨어 - app.use
https://morian-kim.tistory.com/3