一、Route路由技术入门
1.路由定义文件
统一定义在route目录下,默认为route.php;
可以在该目录下设置多个路由文件,最终一起合并加载;
例如根据模块定义路由: route.php,index.php,admin.php,api.php…;
建议添加:use think\facade\Route;,不使用别名:Route,以获取IDE的代码提示;
2.路由定义的基本语法
Route::rule('路由表达式','路由地址','请求类型','路由参数','变量规则');
- 路由表达式: 用户输入的url地址,即自定义的路由规则;
- 路由地址: 实际转向的url地址;
- 请求类型: get/post/put/delete…,推荐直接使用快捷方法;
- 路由参数: 主要检测路由规则,推荐使用方法设置;
- 变量规则: url中的变量参数须遵守的规则,默认为:’\w+’,推荐使用方法设置;
3.路由定义的快捷方式
GET:
Route::get('路由表达式','路由地址');
Route::rule('路由表达式','路由地址')->method('get');
POST:
Route::post('路由表达式','路由地址');
Route::rule('路由表达式','路由地址')->method('post');
PUT:用于更新资源(不常用)
Route::put('路由表达式','路由地址');
Route::rule('路由表达式','路由地址')->method('put');
DELETE:用于删除资源(不常用)
Route::delete('路由表达式','路由地址');
Route::rule('路由表达式','路由地址')->method('delete');
4.路由表达式
静态表达式: 没有参数,例如: user;
动态表达式: 有参数,V5.1.6+ 推荐使用组合变量规则来定义;
user/hello: /分隔符可自定义,例如 user-hello 或者 user_hello都可以;
user/hello/<name>: ,<name>是必选变量;
user/hello/<name?>: <name?>是可选变量;
5.路由参数
路由参数很多,这里仅介绍几个常用的
method(): 请求类型;
ext(‘html’): url扩展名;
更多参数请访问: 路由参数
实例:
Route::rule('hello/<name?>', 'index/hello')
->method('get') // 请求类型
->ext('html'); // url后缀
6.变量规则
方法: pattern()
参数说明:
单个变量规则可用字符串: pattern('name', '\w+');
多个变量规则可用数组: pattern(['name' => '\w+','id' => '\d']);
实例:
Route::rule('hello/<name?>', 'index/hello')
->pattern('name','[a-z]{2,5}$') // 必须是小字字母且必须在2到5个之间
->method('get') // 请求类型