路由
- 闭包路由
//闭包函数路由 Route::get('/home', function () { return view('welcome'); });
- 控制器路由
//控制器路由 Route::get('/home/hello','HomeController@hello');
- 永久重定向路由
Route::get('here',function (){ return '重定向前'; }); Route::get('there',function (){ return '重定向后'; }); //永久重定向路由 Route::permanentRedirect('here','there');
- 临时重定向路由
//临时重定向路由 Route::redirect('here','there');
- 路由传参一:http://laravel.test/getOrder?id=1&name=菜狗
//路由传参 Route::any('getOrder','HomeController@getOrder'); //控制器getOrder方法 public function getOrder(Request $request): array { //$request->input();可以直接获取到get和post传递的参数 //query()是获取get方式传递的参数 //post()是获取post方式传递的参数 $query = $request->query(); $post = $request->post(); return ['query'=>$query,'post'=>$post]; } //结果 { "query": { "id": "1", "name": "菜狗" }, "post": { "id": "1", "name": "菜狗" } }
- 路由传参二:http://laravel.test/getOrder/1/菜狗
//参数传递方式: Route::get('getOrder/{id?}/{name?}','HomeController@getOrder'); //控制器getOrder方法 public function getOrder($id = null, $name = 'gzh') { return ['id'=>$id,'name'=>$name]; } //结果 { "id": "1", "name": "菜狗" }
- 使用正则限制路由参数的类型
//正则限制参数的类型 //id:只能是0到9的数字 //name:只能是英文字母字符串 Route::get('getOrder/{id}/{name}',function ($id, $name){ return ['Test_id'=>$id, 'Test_name'=>$name]; })->where('id','[0-9]+')->where('name','[a-zA-Z]+'); //参数有误就会 404|Not Found
- 命名路由
//定义get.user路由 Route::get('getUser',function (){ return 'gzh'; })->name('get.user'); //测试路由 Route::get('getUrl',function (){ //获取get.user路由的绝对地址 结果:http://laravel.test/getUser //return \route('get.user'); //相对地址 结果:/getUser //return \route('get.user',[],false); //跳转到get.user路由 结果:gzh return redirect()->route('get.user'); });
- 路由分组可以对某个模块的路由进行统一管理、如添加中间件
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); } protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); } protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api.php')); }