08. next函数
于2022-11-01 17:23:10发布
45
const express = require('express');
const server = express();
server.listen(8080);
console.log('server is runing...');
server.use('/', (req, res, next) => {
req.body = { a: 1, b: 2 };
next(); // 执行next
});
server.get('/abc', (req, res) => {
res.send(req.body); // 这里可以访问到上面的use里面的req.body
});
分析
1. 在use函数内,给req对象自定义一个body变量,在下一个get请求中我们也可以获取到这个body变量
2. 在use函数内,只有使用了next,程序才可以继续执下面的请求,不然就卡死这use这里了。
3. 结合上面2个特性,我们可以自己来写一个中间件,例如上一章说的body-parser
自己编写body-parser
myBodyParser.js
const qs = require('querystring');
module.exports = (req, res, next) => {
let str = '';
req.on('data', (data) => {
str += data;
});
req.on('end', () => {
req.body = qs.parse(str);
next();
});
}
使用
const express = require('express');
const myBodyParser = require('./myBodyParser'); // 引入
const server = express();
server.listen(8080);
server.use(myBodyParser); // 使用
server.post('/', (req, res) => {
res.send(req.body);
});
console.log('server is runing...');