📜  Laravel-路由(1)

📅  最后修改于: 2023-12-03 14:43:51.265000             🧑  作者: Mango

Laravel-路由

Laravel是一个优秀的php框架,其中最重要的组件之一就是路由。在Laravel中,路由定义了请求URI如何响应应用程序的动作。简单来说,路由负责将请求映射到应用程序中相应的部分。

路由定义

Laravel路由定义的主要方式是通过routes/web.php文件。这个文件包含了所有应用程序Web路由的入口。

我们可以使用Route类的静态方法来定义路由:

Route::get('/hello', function () {
    return 'Hello World!';
});

上述代码会创建GET请求的路由,当请求/hello时,会调用该匿名函数返回“Hello World!”。

请求方法

Route类支持多种请求方法,包括GET,POST,PUT,DELETE和PATCH。我们可以使用与上述示例相似的语法来定义这些路由:

Route::post('/user', function () {
    // create new user
});

Route::put('/user/{id}', function ($id) {
    // update user
});

Route::delete('/user/{id}', function ($id) {
    // delete user
});

Route::patch('/user/{id}', function ($id) {
    // update user
});
命名路由

为了方便,Laravel支持给路由命名。我们可以使用name方法来为路由指定一个名称,这个名称可以在应用程序中引用这个路由。

Route::get('/user/{id}', function ($id) {
    // user profile
})->name('user.profile');

我们可以使用route函数来生成路由URL:

$url = route('user.profile', ['id' => 1]);
路由参数

在Laravel中,我们可以向路由传递参数。例如,在下面的示例中,我们通过{id}参数来定义一个动态路由:

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

这个路由将匹配/user/1,/user/2,/user/3等URI。Laravel将动态部分的值作为函数参数传递,因此$id参数的值将分别为1、2、3等。

正则约束

Laravel路由支持正则约束,可以通过where方法指定。例如,我们可以将{username}参数限制为只包含字母:

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

在上面的示例中,请求/user/john将被匹配,但请求/user/john123将不会被匹配。

控制器

尽管可以在路由中定义匿名函数,但通常我们更倾向于将请求分派给控制器中的动作。这可以通过使用controller方法来实现。

Route::get('/user/{id}', 'UserController@show');

这个路由将调用UserController中的show方法。

路由组

最后,如果我们需要在多个路由上注册相同的中间件或其他共享属性,我们可以使用路由组。例如,这里是一个实际的示例:

Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', 'DashboardController@index')->name('dashboard');
    Route::get('/profile', 'ProfileController@index')->name('profile');
});

在上面的示例中,我们使用middleware方法为两个路由注册了“auth”中间件,并使用group方法将它们分组在一起。

总结

在Laravel中,路由定义了我们应用程序的URL结构以及响应这些URL的动作。本文介绍了路由的基本使用方法,包括定义路由、请求方法、命名路由、动态参数、正则约束、控制器和路由组。通过这些方法,我们可以轻松地为我们的应用程序定义友好的URL结构,并将请求映射到应用程序中相应的部分。