一,路由简介
路由器主要用于描述请求URL
和具体采取执行动作的对应Controller
关系,框架约定了app/router.js
文件用于统一所有路由规则。通过统一的配置,我们可以避免路由规则逻辑散落在多个地方,从而出现未知的冲突,集中在一起我们可以更方便的来查看分段的路由规则。
二,定义路由器
app/controller
目录下面实现
app/router.js
里面定义URL路由规则
这样就完成了一个最简单的Router定义,当用户执行 GET /
,home.js这个里面的index
方法就会执行。
三,修改路由
- 以下代码可以抛光定义了一个新的方法叫学生,
1 “严格使用” ; 2 3 const Controller = require ('egg' )。控制器; 4 5 类 HomeController 扩展 控制器 { 6 异步 索引() { 7 const { ctx } = this ; 8 ctx 。身体 = “嗨,蛋” ; 9 } 10 11 异步 学生() { 12 这个。ctx 。body = “嗨,学生们” 13 } 14 } 15 16 模块。出口 = HomeController ;
- 路由的修改为新的方法设置一个路由器,可以发现当路径访问/ students时,页面显示
hi,students
。
1 “严格使用” ; 2 3 / ** 4 * @param { Egg.Application } app-egg应用程序 5 * / 6 //app/router.js 7 模块。出口 = 应用 => { 8 常量 {路由器,控制器} = 应用; 9 路由器。得到('/' , 控制器,家庭。指数); // get方法,伸缩至controller / home.js文件中的index方法 10 router 。得到('/学生, 控制器。回家。学生); // get方法,加速至controller / home.js文件中的students方法 11 } ;
四,设置路由参数
参数获取
查询字符串方式
1 // app / router.js 2 模块。出口 = 应用 => { 3 应用。路由器。得到('/搜索' , 应用程序。控制器。搜索。指数); 4 } ; 5 6 // app / controller / search.js 7 导出。index = 异步 ctx => { 8 ctx 。body = `search:$ { ctx 。查询。名字} ` ; 9 } ; 10 11 //卷曲http://127.0.0.1:7001/search?name=egg
参数命名方式
1 // app / router.js 2 模块。出口 = 应用 => { 3 应用。路由器。得到(“/用户/:ID /:名称” , 应用程序,控制器,用户,信息); 4 } ; 5 6 // app / controller / user.js 7 导出。信息 = 异步 ctx => { 8 ctx 。body = `user:$ { ctx 。参数。id },$ { ctx 。参数。名字} ` ; 9 } ; 10 11 //卷曲http://127.0.0.1:7001/user/123/xiaoming
复杂参数的获取
路由里面也支持定义正则,可以更加灵活的获取参数:
1 // app / router.js 2 模块。出口 = 应用 => { 3 应用。路由器。得到(/ ^ \ /包\ / ([ \ W - 。] + \ / [ \ W - 。] + )$ / , 应用。控制器。包。细节); 4 } ; 5 6 // app / controller / package.js 7 导出。detail = async ctx => { 8 //如果请求URL被正则匹配,则可以按照顺序分组的顺序,从ctx.params中获取。// 9 按照下面的用户请求,`ctx.params [0]`的内容就是` egg / 1.0.0` 10 ctx 。body = `package:$ { ctx 。参数[ 0 ] } ` ; 11 } ; 12 13 //卷曲http://127.0.0.1:7001/package/egg/1.0.0