📅  最后修改于: 2023-12-03 14:43:49.971000             🧑  作者: Mango
Laravel是一个流行的PHP Web开发框架,其中路由是框架中的一个重要组成部分之一。本文将介绍Laravel中的路由模式,包括基本路由、路由参数、命名路由、路由组、中间件、控制器路由等内容。
Laravel支持GET、POST、PUT、PATCH、DELETE、OPTIONS这六种HTTP请求方式。下面是它们的基本路由用法:
Route::get('/', function () {
return 'Hello World';
});
Route::post('user/profile', function () {
// 处理POST请求
});
Route::put('user/{id}', function ($id) {
// 处理PUT请求
});
Route::patch('user/{id}', function ($id) {
// 处理PATCH请求
});
Route::delete('user/{id}', function ($id) {
// 处理DELETE请求
});
Route::options('user/{id}', function ($id) {
// 处理OPTIONS请求
});
在路由中使用参数,以便对不同用户展示不同内容:
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
你还可以使用正则表达式约束参数:
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
为路由指定名称,以便在应用程序的其他地方引用它:
Route::get('user/profile', function () {
//
})->name('profile');
你可以使用route
辅助函数在应用程序中生成URL链接:
$url = route('profile');
将相关路由放在同一组中,以便在多个路由中共享属性:
Route::middleware(['first', 'second'])->group(function () {
Route::get('/', function () {
// 处理请求
});
Route::get('user/profile', function () {
// 处理请求
});
});
中间件提供了一种方便的方式来过滤进入应用程序的HTTP请求:
Route::get('admin/profile', function () {
//
})->middleware('auth');
你可以使用middleware
方法为组中的所有路由指定中间件:
Route::middleware(['auth'])->group(function () {
Route::get('/', function () {
// 处理请求
});
Route::get('user/profile', function () {
// 处理请求
});
});
在中间件中操作请求和响应,例如验证用户是否有权限访问:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
将控制器动作指定为路由的处理程序:
Route::get('user/{id}', 'UserController@show');
在控制器方法中操作数据:
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
以上就是Laravel的路由模式。Laravel不仅支持常规的HTTP请求路由,还支持WebSocket路由以及API路由。它的路由模式使开发人员能够快速开发出功能强大的Web应用程序。