基本路由
构建最基本的路由只需要一个 URI 与一个 闭包,这里提供了一个非常简单优雅的定义路由的方法:
Route::get('foo', function () {
return 'Hello World';
});
默认路由文件
所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框架自动加载。
routes/web.php 文件用于定义 web 界面的路由。这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。
routes/api.php 文件中的路由都是无状态的,并且被分配了 api 中间件组。
大多数的应用构建,都是以在 routes/web.php 文件中定义路由开始的。可以通过在浏览器中输入定义的路由 URL 来访问 routes/web.php 中定义的路由。例如,你可以在浏览器中输入 http://your-app.dev/user 来访问以下路由:
Route::get('/user', 'UsersController@index');
routes/api.php 文件中定义的路由通过 RouteServiceProvider 被嵌套到一个路由组里面。在这个路由组中,会自动添加 URL 前缀 /api 到此文件中的每个路由,这样你就无需再手动添加了。你可以在 RouteServiceProvider 类中修改此前缀以及其他路由组选项。
可用的路由方法
允许注册能响应任何 HTTP 请求的路由:
- Route::get($uri, $callback);
- Route::post($uri, $callback);
- Route::put($uri, $callback);
- Route::patch($uri, $callback);
- Route::delete($uri, $callback);
- Route::options($uri, $callback);
有的时候你可能需要注册一个可响应多个 HTTP 请求的路由,这时你可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 请求的路由:
- Route::match(['get', 'post'], $uri, $callback);
- Route::any($uri, $callback);
CSRF 保护
web.php 路由文件中定义的 POST、PUT 或 DELETE 路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。
<form method="POST" action="/profile">
{
{ csrf_field() }}
...
</form>
重定向路由
如果要定义重定向到另一个 URI 的路由,可以使用 Route::redirect 方法。这个方法可以快速地实现重定向,而不再需要去定义完整的路由或者控制器。
Route::redirect('/here', '/there', 301);
视图路由
如果你的路由只需要返回一个视图,可以使用 Route::view 方法。它和 redirect 一样方便,不需要定义完整的路由或控制器。view 方法有三个参数,其中前两个是必填参数,分别是 URL 和视图名称。第三个参数选填,可以传入一个数组,数组中的数据会被传递给视图。
Route::view('/welcome', 'welcome');
Route::view(&