Egg 中的路由

1. 路由的写法

1. 路由 + 控制器,最常用的写法。

router.get('/admin/user',controller.admin.user.index);

2. 路由别名 + 路由 + 控制器。

router.get('adminUser', '/admin/user', controller.admin.user.index);

3. 路由 + 中间件 + 控制器。

var adminAuth = app.middleware.adminAuth({ password: 'secret' });
router.get('/admin/user', adminAuth, controller.admin.user.index);

4. 路由别名 + 路由 + 中间件 + 控制器。

var adminAuth = app.middleware.adminAuth({ password: 'secret' });
router.get('adminUser', '/admin/user', adminAuth, controller.admin.user.index);

上面的路由写的用的都是GET请求,其实可以支持所有的HTTP方法,如下所示。

在上面的路由中只插入了一个中间件,业务复杂时,还可以插入多个中间件,前提是要把用到的中间件全部引入。

router.get('/admin/user', middleware1, middleware2, ..., middlewareN, controller.admin.user.index);

控制器的在路由中的写法除了上面直接指定一个控制器以外,还可以简写为字符串。

// 直接指定控制器的写法
router.get('/admin/user', app.controller.admin.user.index);

// 将控制器简写为字符串的形式
router.get('/admin/user', 'admin.user.index');

 

2.路由的重定向

1. 内部重定向,即在同一个域名之间的重定向。

// app/router.js
module.exports = app => {
    // 302为指定临时重定向,有利于SEO优化。
    app.router.redirect('/', '/home/index', 302);
};

2. 外部重定向,即不同域名之间的重定向。

// app/controller/new.js
'use strict';
const Controller = require('egg').Controller;
class NewsController extends Controller {
    async index() {
        // 默认为临时重定向302
        // 改为永久重定向301
        this.ctx.status=301; 
        // 跳转到外部域名                          
        this.ctx.redirect(`https://www.baidu.com`);    
    } 
}

module.exports = NewsController;

 

3.路由模块化

当项目较大,路由太多时,可以对路由进行模块化管理。

与news有关的路由模块。

// app/router/news.js
module.exports = app => {
    app.router.get('/news/list', app.controller.news.list);
    app.router.get('/news/detail', app.controller.news.detail);
};

与admin有关的路由模块。

// app/router/admin.js
module.exports = app => {
    app.router.get('/admin/user', app.controller.admin.user);
    app.router.get('/admin/log', app.controller.admin.log);
};

在router.js中引入多个路由子模块。

// app/router.js
module.exports = app => {
    require('./router/news')(app);
    require('./router/admin')(app);
};

对路由进行模块化管理时,通常也会将控制器进行模块化管理。

发布了291 篇原创文章 · 获赞 237 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览