📜  laravel 路由模式 - PHP (1)

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

Laravel 路由模式

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应用程序。