路由

路由

  • 路由的定义

    • 用于和终端用户进行交互

    • 可以在routes/web.php中定义web路由,用于终端用户进行访问,也可以在routes/api.php中定义API路由,用于提供API服务

    • routes/web.php中路由的定义

      • 基本定义

        // routes/web.php
        Route::get('/', function () {
            return 'Hello, World!';
        });
        

        本样例采用了最简单的方法,将路径(‘/’)与闭包结合起来使用

        • 闭包是PHP版本的匿名函数。闭包是一个函数,可以将它作为一个对象传递,并赋值给一个变量,将其作为参数传递给其他函数和方法
        • 现在,定义好路由后,如果有人访问 / (域名的根路径),路由就会运行定义好的闭包,同时会返回结果
      • 继续给出一些例子

      • Route::get('/', function() {
            return view('welcome');
        });
        
        Route::get('/help', function() {
            return view('help'); 
        });
        
        Route::get('/about', function() {
            return view('about');
        });
        
  • 路由动词

    • 当http使用不同的方法进行请求时,就要使用对应的路由定义

    • Route::get('/', function() {
          return 0; 
      });
      
      Route::post('/', function() {});
      
      Route::put('/', function() {});
      
      Route::delete('/', function() {});
      
      Route::any('/', function() {});
      
      Route::match(['get', 'post'], '/', function() {});
      
  • 路由处理

    • 将控制器名称和方法作为字符串传给闭包

      Route::get('/', 'StaticPagesController@home');
      

      将请求传递到静态页面控制器中的home()方法处理

  • 路由参数

    • 如果定义的路由有参数,那么可以在路由中定义它们,并将它们传递给闭包

      Route::get('users/{id}/friends', function ($id){
         // 
      });
      
  • 路由名称

    • 要在应用程序的其他位置引用路由,可以通过路径,也可以通过对每一个路由命名,这样就可以不通过URL直接引用路由

      //在web.php中定义路由
      Route::get('members/{id}', 'MemberControllers@show')->name('member.show');
      
      //使用route助手在视图中链接路由
      
      
    • 路由的一般命名格式

      复数的资源名称 + 相应的动作

      photos.index
      photos.create
      photos.store
      photos.show
      photos.edit
      photos.update
      photos.destory
      
    • 将路由参数传递给route()助手

      //定义路由
      Route::get('users/{userId}/commennts/{commentId}, usersControllers@show')->name('users.comments.show');
      //传入参数, http://myapp.com/users/1/comments/2
      route('users.comments.show', [1,2])
      route('users.comments.show', ['userId' => 1, 'commentId' => 2])
      route('users.comments.show', ['commentId' => 2, 'userId' => 1])
      

      不是关联数组里面的值会按顺序分配,关联数组里的值会按照相应的键名进行匹配,数组里面其他剩下的数据都会作为查询参数进行添加并使用

你可能感兴趣的:(路由)