Express请求处理管线 随笔

const   exp = require('express'),
        app = exp()

function utf8(req, res, next){
    // res.set()设置响应头,
    // 还可以写成res.set({})批量设置响应头
    // 在Content-Type响应头中设置编码可以解决乱码问题
    res.set('Content-Type', 'text/html; charset=utf-8')
    
    console.log('设置字符编码')
    
    // 将请求交给下一个函数处理
    next()
}

function first(req, res, next){
    console.log('我是第一个处理请求的函数')
    next()
}

function second(req, res, next){
    console.log('我是第2个处理请求的函数')
    next()
}

function third(req, res, next){
    console.log('我是第3个处理请求的函数')
    next()
}

app.get('/', third, first, second, (req, res) => {
    res.end('我是最后一个处理请求函数')
})


// 中间部分还可以写成数组
// app.get('/', [utf8, first, second, third], (req, res) => {
//     res.end('我是最后一个处理请求函数')
// })

app.get('/hi/:age', utf8, first, second, third, (req, res) => {
    var name = req.query.name
    var age = req.params.age
    
    // 获取客户端数据:
    // 1、获取url中的querystring(?后面的name=value,通过GET方法发送)
    //     req.query.name
    // 2、获取请求体中的数据(通过POST方法发送,有多种编码方式)
    //     req.body.name
    //     如果是 urlencoded 编码需要使用 body-parser 模块
    //     如果是 multipart/form-data 需要使用 multer 模块
    // 3、获取cookie中的数据
    //     req.cookies.name
    //     需要使用 cookie-parser 模块
    // 4、获取请求头中的数据
    //     req.get('name')
    // 5、获取url路径Path中的数据
    //     req.params.age
    //     需要设置请求地址模式   '/hi/:age'
    
    // 将参数放入Path相对于将参数放入QueryString
    // 更加容易被人和搜索引擎识别
    // 因此被称为友好URL,friendly url   
    res.end(`你好${name}, ${age},很高兴认识你`)
})

app.listen(3000, () => console.log('正在运行...'))


Administrator@HJL MINGW64 ~/Desktop/Express请求处理管线和友好URL
$ node server
正在运行...
我是第3个处理请求的函数
我是第一个处理请求的函数
我是第2个处理请求的函数

原文地址:https://www.cnblogs.com/huangjinliang/p/5835486.html