路由是各种框架中比较重要的环节。
use think\facade\Route;
Route::rule('new/:id','News/read','GET|POST');
|类型| 描述 |快捷方法|
|:----:|:----:|:----:|:----:|
|GET| GET请求| get|
|POST| POST请求| post|
|PUT| PUT请求| put|
|DELETE| DELETE请求| delete|
|PATCH| PATCH请求| patch|
|*| 任何请求类型| any|
Route::get('new/<id>','News/read'); // 定义GET请求路由规则
Route::post('new/<id>','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则
Route::rule('/', 'index'); // 首页访问路由
Route::rule('my', 'Member/myinfo'); // 静态地址路由
Route::rule('blog/:id', 'Blog/read'); // 静态地址和动态地址结合
Route::rule('new/:year/:month/:day', 'News/read'); // 静态地址和动态地址结合
Route::rule(':user/:blog_id', 'Blog/read'); // 全动态地址
Route::get('blog/:year/[:month]','Blog/archive');
// 或者
Route::get('blog/<year>/<month?>','Blog/archive');
// 重定向路由
Route::redirect('blog/:id', 'http://blog.thinkphp.cn/read/:id', 302);
// 对于不存在的static目录下的资源文件设置404访问
Route::get('static', response()->code(404));
每个参数中可以包括动态变量,例如:变量或者<变量>都表示动态变量(新版推荐使用第二种方式,更利于混合变量定义),并且会自动绑定到操作方法的对应参数。可选参数只能放到路由规则的最后,如果在中间使用了可选参数的话,后面的变量都会变成可选参数。
Route::view('hello/:name', 'index/hello', ['city'=>'shanghai']);
在模板中可以输出name和city两个变量。
Hello,{$name}--{$city}!
跨域请求,公司系统与系统之间的调用会产生跨域
Route::get('new/:id', 'News/read')
->ext('html')
->allowCrossDomain();
跨域请求一般会发送一条OPTIONS的请求,一旦设置了跨域请求的话,不需要自己定义OPTIONS请求的路由,系统会自动加上。
Access-Control-Allow-Origin:*
Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE
Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With