day07

137 阅读1分钟

中间件

全局中间件

function logger(req, resp, next) {
    console.log(`${req.method},${req.path},${req.headers['user-agent']}`)
    next()
}
app.use(logger)
app.get('/', (req, resp) => {
    resp.send('welcome+node')
})
app.get('/user/login', (req, resp) => {
    resp.send({name: 'guohua'})
})

GET,/,Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36

路由中间件

function logger(req, resp, next) {
    console.log(`${req.method},${req.path},${req.headers['user-agent']}`)
    next()
}
app.get('/', logger, (req, resp) => {
    resp.send('welcome+node')
})
app.get('/user/login', (req, resp) => {
    resp.send({name: 'guohua'})
})

/路由下使用了logger user/login不会输出日志


cookie parser

// cookieparser cookie 解析 中间件
function cookieparser() {
    return function(req, resp, next) {
        req.cookies = {}
        const headerCookie = req.headers.cookie
        if(headerCookie) {
            const cookies= headerCookie.split(';')
            cookies.forEach((item) => {
                const pairs = item.split('=')
                req.cookies[pairs[0]] = pairs[1]
            })
            next()
        }
    }
}
app.use(cookieparser())
app.get('/', (req, resp) => {
    // resp.send('welcome+node')
    resp.send(req.cookies)
})

响应时长中间件

function responseTime() {
    return function(req, resp, next) {
        var now = Date.now()
        resp.once('finish', function() {
            console.log(Date.now() - now)
        })
        next()
    }
}

静态资源

|———— app.js

|———— public

    |-- style

    |-- app.css
express.static(root, [options])
app.use(express.static('./public'))
// 访问路径 localhost:8080/style/app.css
app.use('./public', express.static('./public'))
// 访问路径 localhost:8080/public/style/app.css