Laravel 基本路由
路由是Laravel中的一个基本概念。路由的主要功能是将应用的所有请求路由到相应的控制器。
默认路由文件
所有Laravel路由都定义在位于 路由 目录内的路由文件中。当我们创建一个项目时,项目内会创建一个路由目录。位于 route/web.php 目录中的路由文件定义了你的Web界面的路由。web.php中定义的路由被分配到web中间件组,该组提供了会话状态和CSRF保护等功能。位于 routes/api.php 中的路由被分配给 API 中间件组,它们是无状态的。
我们将从在 routes/web.api 文件中定义路由开始。在浏览器中输入定义的URL即可访问routes/web.php中定义的路由。让我们通过一个例子来理解这个过程。
默认路由文件的定义。
<?php
Route::get('/', function ()
{
return view ('welcome');
});
在上面的情况中,Route是定义静态方法get()的类。get()方法包含’/’和function()闭包两个参数。’/’定义了根目录,而function()定义了get()方法的功能。
在上面的路由中,url为’/’; 因此,我们在网页浏览器中输入了 localhost/laravelproject/public URL 。
输出:
如同这个方法返回 view(‘welcome’) 一样, 所以上面的输出显示了Laravel的welcome视图。
让我们看另一个例子。
现在,在这个例子中我们提供了另一个URL。
<?php
Route::get('/example', function ()
{
return "Hello javaTpoint";
});
在上面的示例中,定义了URL为’/example’的路由,因此我们需要在Web浏览器中输入URL ” localhost/laravelproject/public/example “。
输出:
CSRF保护
指向在web路由文件中定义的Post、Put或Delete路由的HTML表单应包括CSRF令牌字段。如果未包括CSRF令牌字段,则请求将被拒绝。
<form method="POST" action="/profile">
@csrf
...
</form>
路由器定义了可以响应以下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()方法来实现。有时候需要注册一个可以响应所有http请求方法的路由,可以使用any()方法。
Route::match(['get', 'post'], '/', function () {
//
});
Route::any('/', function ()
{
//
})
两种最常用的路由方法是:
- Redirect() 方法 Redirect() 方法用于从一个URL导航到另一个URL。此方法提供了一种方便或快捷的方式,以从一个URI移动到另一个URI。借助此方法,您不需要定义完整的路由。 有两种使用 redirect() 方法的方式: 第一种方式是在 get() 方法中声明 redirect() 方法:
<?php
Route::get('hello', function () {
return redirect('/');
})
第二种方式是直接访问redirect()方法。
<?php
Route::redirect('hello','/');
在上述情况中,两个路由都是从/hello导航到根目录,即’/’。
- View()方法 View()方法用于返回另一个URL的视图。
<?php
Route::get('/', function () {
return view('welcome');
});
<?php
Route::view('/','welcome');