一、eggjs學習記錄 - middleware


eggjs的中間件分為全局中間件和router中間件。

全局中間件用法:

// app/middleware/requestTime.js
module.exports = () => {

    return async (ctx: any, next: any) => {

        ctx.requestBeginTime = +new Date();
        await next();
       

    };
};
//中間件寫法一致,都是返回一個async函數,然后async函數的參數包括: ctx、next。

 全局中間件調用和配置方法:

// app/config/config_base.js
import { join } from 'path';
module.exports = {
    
    // 中間件
    //可以在配文件中按順序寫需要調用的中間件,參考洋蔥圈模型 
    middleware: ['requestTime', 'errorHandler', 'koaStatic'],
    //如果中間件需要參數可以在這里配置,比如:
    koaStatic: join(__dirname, 'dist')
    
};

router中間件

// app/middleware/headerParse.js
module.exports = () => {
    return async (ctx: any, next: any) => {
        
        // 獲取 params ,只能在router中才有這個數據,全局中間件是沒有這個的
        let activityId = ctx.params.activityId;

        const requestParams = {
            activityId
        };
        ctx.request.requestParams = requestParams;
        await next();
    };
};

router中間件調用:

// app/router.ts
import { Application } from 'egg';

export default (app: Application) => {
    const {
        router,
        controller,
        middlewares,
    } = app;

    
    router.get('/promotion/babelpc/:activityId', middlewares.headerParser(), controller.activity.render);
    
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM