AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 手动实现中间件 需求,记录请求时间,在控制台打印。 ``` // 版本 1,不单独抽出中间件 const express = require('express'); const app = express(); // 对 / 请求配置多个处理函数,注意第一个函数 next 参数,并调用 app.get('/', (req, res, next) => { console.log(Date.now()); next(); // 若这里不显示调用,下面那个函数就不会执行,也即不会响应。 }, (req, res) => { res.send('Hello World!') }); app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 2,单独抽出中间件 const express = require('express'); const app = express(); let myLogger = function (req, res, next) { // 中间件 console.log(Date.now()); next(); // 不能少了 } app.get('/', myLogger); // 应用中间 app.get('/', (req, res) => { res.send('Hello World!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 3,单独抽出中间件,针对多种请求方式 const express = require('express'); const app = express(); let myLogger = function (req, res, next) { // 中间件 console.log(Date.now()); next(); // 不能少了 } app.use(myLogger); // 省略路径,针对任意路径与请求方式 app.get('/', (req, res) => { res.send('Hello World Get!'); }) app.post('/', (req, res) => { res.send('Hello World Post!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ``` ``` // 版本 4,单独抽出中间模块 // 文件位置 myapp/mylogger.js let myLogger = function (req, res, next) { console.log(Date.now()); next(); } module.exports = myLogger; ``` ``` // 文件位置 myapp/app.js const myLogger = require('./mylogger.js'); const express = require('express'); const app = express(); app.use(myLogger); app.get('/', (req, res) => { res.send('Hello World Get!'); }) app.post('/', (req, res) => { res.send('Hello World Post!'); }) app.listen(8888, () => { console.log('8888 Running...'); }); ```