1.在框架和插件中使用中間件
編寫中間件
我們先來通過編寫一個簡單的中間件,來看看中間件的寫法。
// app/middleware/middlewareOne.js
// app/middleware/middlewareOne.js
module.exports = (options, app) => {
return async function middlewarreone(ctx, next) {
const url = ctx.request.url;
await next();
ctx.body = `獲取到的ip是:${url}`;
}
};
配置
// config/config.default.js exports.middleware = ['middlewareOne']; // 數組的順序為中間件執行的順序
請求會執行 : 獲取到的ip是:/data
router 中使用中間件
以上方式配置的中間件是全局的,會處理每一次請求。 如果你只想針對單個路由生效,可以直接在 app/router.js
中實例化和掛載,如下:
'use strict'; /** * @param {Egg.Application} app - egg application */ module.exports = app => { const { router, controller } = app; const isUrl = app.middleware.middlewarreone({params: '888',}); router.get('/', controller.home.index); router.post('/login', controller.home.login); router.post('/data',isUrl, controller.data.index); router.post('/upload', controller.upload.upload); router.get('/search', controller.data.search); };
發送請求 同樣會執行 結果:/data