前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Egg 获取路由传参

Egg 获取路由传参

作者头像
越陌度阡
发布2020-11-26 12:35:01
1.2K0
发布2020-11-26 12:35:01
举报

Egg中获取路由传参与Koa差不多,主要的区别在于Egg中的控制器继承于Controller,所以在获取传参的时候要修改 this 的指向,下面用一个实例来说明如何获取路由传参。

首先在app文件夹下的 router.js 中添加路由。

代码语言:javascript
复制
'use strict';
module.exports = app => {
    const { router, controller } = app;
    // 配置静态路由,指向controller文件夹下news.js文件里的index方法
    router.get('/news', controller.news.index);
    // 配置动态路由,指向controller文件夹下的news.js文件里的detail方法
    router.get('/detail/:id', controller.news.detail);
};

然后在 controller 中新建路由所对应的控制器文件 news.js,并在文件中添加路由所对应的方法 index 与 detail。

代码语言:javascript
复制
'use strict';
const Controller = require('egg').Controller;
class NewsController extends Controller {
    async index() {
        this.ctx.body = '新闻首页';
        // Koa中获取get传值 ctx.query
        // Egg中获取get传值 this.ctx.query

        // 在浏览器中输入 http://127.0.0.1:7001/news?page=1
        var query = this.ctx.query;
        // 打印获取的路由参数
        console.log(query);
        // { page: '1' }
    }

    async detail() {
        this.ctx.body = '新闻详情';

        // Koa中获取动态路由传值 ctx.params
        // Egg中获取动态路由传值 this.ctx.params

        // 在浏览器中输入 http://127.0.0.1:7001/detail/123
        var params = this.ctx.params;
        // 打印获取的路由参数
        console.log(params);
        // { id: '123' }
    }
}

module.exports = NewsController;

以上就是在 Egg 中获取路由传参的方法,分别是 this.ctx.query 和 this.ctx.params。

有一个小技巧,值得提一下,如果安装了 vscode-eggjs 这个插件,当在控制器文件中输入 egg 后会出现 egg controller 这个提示选项,选择确认该选项,就会自动生成与控制器文件名相关联的继承控制器,这样一来,就省去了我们给控制器命名的烦恼。

参考:

https://eggjs.org/zh-cn/basics/router.html

https://eggjs.org/zh-cn/basics/controller.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档