express中间件

一、分类

1、局部使用中间件

const express = require('express');
const app = express();
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

app.get('/', (req, res, next) => {
    // 局部使用
    req.body = {
        name: "雷佳音",
        age: 45
    }
    next()
}, (req, res) => {
    console.log(req.body);
    res.send('这是一个根请求')
})

2、全局使用中间件

const express = require('express');
const app = express();
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

// 全局使用中间件
app.use(fn)
function fn(req, res, next) {
    req.body = {
        name: "雷佳音",
        age: 45
    }
    next()
}

app.get('/', (req, res) => {
    console.log(req.body);
    res.send('这是一个根请求')
})

二、自定义中间件

自定义中间件获取post请求提交的参数

const express = require('express');
const app = express()
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

const qs = require('querystring')
function getPostData(req, res, next) {
    let str = ''
    req.on('data', (chunk) => {
        str += chunk
    })

    req.on('end', () => {
        if (req.headers['content-type'] == 'application/json') {
            req.body1 = JSON.parse(str)
        } else {
            req.body1 = qs.parse(str)
        }
        next()
    })
}

app.use(getPostData)
app.post('/login2', (req, res) => {
    console.log(22, req.body1);
    res.send('登录成功')
})

三、使用第三方中间件

使用第三方中间件获取post请求参数

const express = require('express');
const app = express()
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

let bodyParser = require('body-parser');
app.use(bodyParser.json())
app.post('/login3', (req, res) => {
    console.log(req.body);
    res.send('响应成功')
})

四、异常处理中间件和404中间件

1、异常处理中间件

const express = require('express');
const app = express()
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

app.use(express.static('./static'))
app.get('/', (req, res) => {
    res.sendFile('./static/index.html')
})

app.use((err, req, res, next) => {
    res.redirect('/error.html')
})

2、404中间件(请求不存在时给前端一个友好的提示)

const express = require('express');
const app = express()
app.listen(3000, () => {
    console.log('服务器已启动!!!');
})

app.use(express.static('./static'))
app.get('/123', (req, res) => {
    res.send('123ok')
})

// 如果请求路径不存在,那么就返回404页面
app.use((req, res, next) => {
    res.redirect('/404.html')
    next()
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值