-
express 문서 - 미들웨어 코드백엔드/express.js 2024. 4. 15. 15:18728x90
const express = require('express') const app = express() const port = 3000 const myLogger = function(req, res, next){ console.log('LOGGED') next() } const requestTime = function(req, res, next){ req.requestTime = new Date() next() } app.use(myLogger) app.use(requestTime) app.get('/', (req, res) => { let responseText = 'Hello World!' responseText += 'Requested at: ' + req.requestTime res.send(responseText) }) app.post('/', (req, res) => { res.send('Got a POST request') }) app.put('/user', (req, res) => { res.send('Got a PUT request at /user') }) app.delete('/user', (req, res) => { res.send('Got a DELETE request at /user') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
* 애플리케이션 레벨 미들웨어
const express = require('express') const app = express() const port = 3000 const myLogger = function(req, res, next){ console.log('LOGGED') next() } const requestTime = function(req, res, next){ req.requestTime = new Date() console.log('Time:', new Date().toLocaleTimeString()) next() } app.use(myLogger) app.use(requestTime) app.use('/user/:id', function(req, res, next){ console.log('Request URL: ', req.originalUrl) next() }, function(req, res, next){ console.log('Request Type: ', req.method) next() }) app.get('/user/:id', function(req, res, next){ if(req.params.id == 0) next('route') else next() },function(req, res, next){ res.send('regular') }) app.get('/user/:id', function(req, res, next){ res.send('special') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
* 라우터 레벨 미들웨어
const express = require('express') const app = express() const router = express.Router() const port = 3000 const myLogger = function(req, res, next){ console.log('LOGGED') next() } const requestTime = function(req, res, next){ req.requestTime = new Date() console.log('Time:', new Date().toLocaleTimeString()) next() } router.use(myLogger) router.use(requestTime) router.use('/user/:id', function(req, res, next){ console.log('Request URL: ', req.originalUrl) next() }, function(req, res, next){ console.log('Request Type: ', req.method) next() }) router.get('/user/:id', function(req, res, next){ if(req.params.id == 0) next('route') else next() },function(req, res, next){ res.send('regular') }) router.get('/user/:id', function(req, res, next){ res.send('special') }) app.use('/', router) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
/sub 의 하위 URL
const express = require('express') const app = express() const router = express.Router() const port = 3000 const myLogger = function(req, res, next){ console.log('LOGGED') next() } const requestTime = function(req, res, next){ req.requestTime = new Date() console.log('Time:', new Date().toLocaleTimeString()) next() } router.use(myLogger) router.use(requestTime) router.use('/user/:id', function(req, res, next){ console.log('Request URL: ', req.originalUrl) next() }, function(req, res, next){ console.log('Request Type: ', req.method) next() }) router.get('/user/:id', function(req, res, next){ if(req.params.id == 0) next('route') else next() },function(req, res, next){ res.send('regular') }) router.get('/user/:id', function(req, res, next){ res.send('special') }) app.use('/sub', router) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
* 오류처리 미들웨어
에러 객체를 오류 처리 미들웨어의 첫번째 인자인 err 에 전달한다. 또한, next() 함수로 어떠한 내용을 전달하는 경우('route'라는 문자열 제외), Express는 현재의 요청에 오류가 있는 것으로 간주하며, 오류 처리와 관련되지 않은 나머지 라우팅 및 미들웨어 함수를 건너뛴다.
const express = require('express') const app = express() const router = express.Router() const port = 3000 const myLogger = function(req, res, next){ console.log('LOGGED') next() } const requestTime = function(req, res, next){ req.requestTime = new Date() console.log('Time:', new Date().toLocaleTimeString()) next() } router.use(myLogger) router.use(requestTime) router.use('/user/:id', function(req, res, next){ console.log('Request URL: ', req.originalUrl) next() }, function(req, res, next){ console.log('Request Type: ', req.method) next() }) router.get('/user/:id', function(req, res, next){ if(req.params.id == 0) next('route') else next() },function(req, res, next){ res.send('regular') }) router.get('/user/:id', function(req, res, next){ throw new Error("서버에러!") res.send('special') }) app.use('/sub', router) app.use(function(err, req, res, next){ console.error(err.stack) res.status(500).send('Something broke!') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
728x90'백엔드 > express.js' 카테고리의 다른 글
조건쿼리 (conditional query) (0) 2024.05.20 ESModule 로 express 작성하기 (0) 2024.05.17 이미지 업로드 - multer (0) 2024.05.16 노드 cors 에러 해결하기 - Error: unable to verify the first certificate (0) 2024.05.16 express 프레임워크 기본이론 (0) 2021.10.12