中间件

1.中间件就是匹配路由之前和匹配路由之后做的一系列操作

2.应用级中间件

使用app.use() 和 app.methods(get、post、put等)将应用级中间件绑定到app实例上
如果当前的中间件功能没有结束请求-响应周期,则必须调用next()将控制权传递给下一个中间件功能。否则,该请求将被挂起。

匹配所有路由

app.use(function(req,res,next){//匹配所有路由
    console.log(new Date())  //每次匹配路由之前都会打印当前日期
    next()   //路由继续向下匹配
})

匹配单个路由

app.use('/news',function(req,res,next){
    console.log('匹配的单个路由,只匹配news路由')
    next()
})
app.get('/news',function(req,res){
   res.send('news路由')
})

此示例显示了/user/:id路径上安装的中间件功能。该函数针对/user/:id路径上的任何类型的HTTP请求执行。

app.use('/user/:id', function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
})

3.路由中间件

app.get('/test',function(req,res){
    console.log('路由中间件')
})
app.get('/test',function(req,res){
    res.send('test')
})

上面的代码在打印test之后不会继续向下匹配,这时就需要路由中间件

app.get('/test',function(req,res.next){
    console.log('路由中间件')
    next()
})
app.get('/test',function(req,res){
    res.send('test')
})

4.错误处理中间件(需要写在最下面,即其它路由匹配之后)

app.use((req,res)=>{
    res.status(404).send('这时404表示路由没有匹配到')
})

5.内置中间件

托管静态页面

app.use(express.static('public'))

配置虚拟目录

app.use('/static',express.static('public'))

6.第三方中间件

body-parser中间件(处理post请求)
1.安装

npm install body-parser --save

2.引入模块

const bodyParser = require('body-parser')

3.配置

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
 
// parse application/json
app.use(bodyParser.json())

例:

app.get('/login',function(req,res){
    res.render('login')
})

app.post('/dologin',function(req,res){
    console.log(req.body)  //{ username: 'jiangwei', pwd: '123456' }
})

login.ejs

    
用户名:
密 码:

你可能感兴趣的:(中间件)