目录
生活中有一个设备,叫路由器:用户把请求数据发送给了路由器,路由器根据用户的需求,连接不同的服务器。
路由:指不同的网址去执行不同的分支或者程序。
router.get('/ajax1',controller.user.ajax1); //注册路由
分析:用户把请求的网址 /ajax1 发送给路由器,路由器根据用户请求的网址执行其对应的程序 controller.user.ajax1,然后返回对应的结果。
1.当用户输入 网址 后,先看下静态托管目录(public文件夹)里面有没有所需要的资源,有就读取静态文件然后发给用户,如果没有就再去 router.js 文件夹里面 有没有匹配的 注册网址 ,有就调取对应的函数执行,没有就返回 404 Not Found
注意点:注册路由时,路由名不要跟静态文件名冲突,不然会优先访问静态资源。
2.当注册的路由有相同的,只会匹配第一个,后面相同的就不会再匹配了:
分析:当用户输入 ip:port/ajax1 时,只会匹配 第一个/ajax1然后执行 controller.user.ajax1,这里相当于是 res.end(),一次请求只会运行一次。
3. router.get('/*',controller.home.all); 这段代码的含义是:
router.get('/*',controller.home.all);
分析:'/*' 表示浏览器输入的任何网址都能匹配上
如果:
- //代码顺序是这样的:
- router.get("/*",controller.home.all);
- router.get('/', controller.home.index);
- router.get('/ajax1',controller.user.ajax1);
- async all() {
- this.ctx.body = '返回一个前端接口' //返回给前端的
- }
浏览器输入网址:127.0.0.1:7001/ajax1 就访问不到 /ajax1 ,因为访问到了 '/*'
总结:egg中路由网络请求时,后端的处理属性:静态文件 > 路由匹配(按照顺序匹配)
'/*' 信号路由 代表所有网址都能匹配