目录列表
本节主要记录基础的几种请求方式
基础的GET/POST/PUT/DELETE表现形式
- 带单个参数
- 带多个参数
- 可选参数
- 正则表达式限定参数(全局限制)
- 命名路由
带单个参数
Route::get('doumao/{id}', function ($id) {
return 'Doumao '.$id;
});
访问链接:
http://localhost/doumao/888
带多个参数
Route::get('doumao/{doumao_name}/comments/{comment}', function ($doumaoName, $commentId) {
return 'Doumao name is '.$doumaoName.'|----comment id is '.$commentId;
});
访问链接:
http://localhost/doumao/liyujie/comments/helloword
可变参数
Route::get('doumao/{doumao_name}/comments/{comment?}', function ($doumaoName, $commentId = 'default') {
return 'Doumao name is '.$doumaoName.'|----comment id is '.$commentId;
});
访问链接如下:
http://localhost/doumao/liyujie/comments
如上举例,通过在参数名称后面加上 ? 来实现可选参数。
但是会存在如下的问题
http://localhost/doumao/comments/helloword
在设置doumao_name为可变参数的情况下,服务器仍旧会报错如下:
NotFoundHttpException in RouteCollection.php line 161
因此针对可选路由,都是选择最后一个参数为可选,不然会引起诸多问题。 当然为了更灵活的解决这类问题,就要依赖后面的内容介绍,本节先mark下。
正则表达式限定参数
Route::get('doumaoname/{name}', function ($name) {
return 'Doumao name '.$name;
})
->where('name', '[A-Za-z]+');
访问链接如下:
http://localhost/doumaoname/abc
如果输入1,会报错如下,默认无法找到路由
NotFoundHttpException in RouteCollection.php line 161
全局限制
全局限制的使用场景,假如当你需要对所有的id做一个整数限制时,可以走全局限制。
具体请参照app/Providers/RouteServiceProvider.php中的boot方法,如laravel官方给出的方法说明,boot用于定义路由模型绑定,全局限制过滤等。
/**
* Define your route model bindings, pattern filters, etc.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function boot(Router $router)
{
parent::boot($router);
//
}
假如我希望整个框架中涉及到的id都为整数,则在boot方法中添加如下:
public function boot(Router $router)
{
$router->pattern('id', '[0-9]+');
parent::boot($router);
}
在boot中定义之后,这个检测将会应用到所有使用该参数名称的路由上。
命名路由
这边贴一个官方介绍的命名路由的意义:
命名路由让你可以更方便的为特定路由生成 URL 或进行重定向。你可以使用 as 数组键指定名称到路由上
一旦你在指定的路由中分配了名称,则可通过 route 函数来使用路由名称生成 URLs 或进行重定位。
Route::get('doumaomao/profile', ['as' => 'dm', function () {
return 'come on';
}]);
//Route::get('doumaomao/profile', 'UserController@showProfile')->name('dm');
Route::get('a', function () {
$url = route('dm');
return $url;
});
执行链接如下:
http://localhost/a
返回结果如下:
http://localhost/doumaomao/profile
同理如需重定向,同官方文档给出
$redirect = redirect()->route('dm');