路由配置

参考:Laravel HTTP 路由功能

路由配置

请先浏览顶部的官方链接的参考文档。这里只是简单的实例。

5.4的路由位置进行了改变

  • routes/web.php 定义状态路由

  • routes/api.php 定义无状态路由

有状态和无状态区别可以参考文章:http协议和web应用有状态和无状态浅析

基础路由

对应可以使用的方法有get、post、put、delete等

Route::get('basic1', function() {
    return 'Hello World';
});

Route::post('basic2', function() {
    return 'Baisc2';
});

多请求路由

对于多种请求的路由定义可以通过match和any方法实现,match需要设置请求方法数组、URL地址和请求处理函数三个参数,第一个参数要以数组的方式设置允许的请求方法,而any方法则对应所有HTTP请求方法。

Route::match(['get', 'post'], 'multy1', function() {
   return 'multy1';
});

Route::any('multy2', function() {
   return 'multy2';
});

路由参数

通常情况下,GET请求可以通过URL地址(QueryString)的方式向服务器传递参数,在Laravel框架中有更优雅的形式传递参数,即通过路由参数进行传递。路由参数主要针对是GET请求的情况。

以下示例,其中?代表是一个可选参数,所以当参数值存在时,函数参数会正常接收,如果不存在,则会使用定义好的闭包函数的参数默认值。

where 可以选择添加对路由参数 正则表达式的验证,只有满足正则表达式的路由参数才能匹配路由,否则无法找到对应路由。

Route::get('user/{id}', function($id) {
    return 'User-id-' . $id;
});

Route::get('user/{name?}', function($name = null) {
    return 'User-name-' . $name;
});

Route::get('user/{name?}', function($name = 'sean') {
    return 'User-name-' . $name;
});

Route::get('user/{name?}', function($name = 'sean') {
    return 'User-name-' . $name;
})->where('name', '[A-Za-z]+');


Route::get('user/{id}/{name?}', function($id, $name = 'sean') {
    return 'User-id-' . $id . '-name-' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);

路由别名

路由别名相当于在在路由定义的时候,为路由起了一个别名,在以后的程序中可以通过这个别名来获取路由信息。

Route::get('user/center', ['as' => 'center', function() {
   return route('center');
}]);

这里起 了一个路由别名,以后可以使用这个路由名称产生URL地址或者重定向,如果$url=route('center');

路由群组

当一个项目很大时,会定义很多的路由,对路由进行分组将使得程序更加规范易读,而路由群组就是给某一类路由进行分组,同时给这个路由组添加中间件、前缀、子域名等,使路由定义更加简洁。

Route::group(['prefix' => 'member'], function() {


   Route::get('user/center', ['as' => 'center', function() {
       return route('center');
   }]);

   Route::any('multy2', function() {
       return 'member-multy2';
   });
});

路由中输出视图

Route::get('view', function () {
   return view('welcome');
});

路由与控制器关联

Route::get('member/info', 'MemberController@info');

Route::any('member/info', ['uses' => 'MemberController@info']);

Route::any('member/info', [
   'uses' => 'MemberController@info',
   'as' => 'memberinfo'
]);

Route::any('member/{id}', ['uses' => 'MemberController@info'])
->where('id', '[0-9]+');

Route::controller('member', 'MemberController');

资料

路由文档

Last updated

Was this helpful?