PHP Academy · 课时

在 Laravel 中定义路由

在 web.php 和 api.php 中注册 GET、POST 及资源路由。

第 2 / 4 课13 个步骤

在 Laravel 中定义路由 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。

基本路由

定义一个返回字符串响应的 GET 路由。

<?php
use Illuminate\Support\Facades\Route;

Route::get("/hello", function () {
    return "Hello, Laravel!";
});

HTTP 动词方法

Laravel 提供 get、post、put、patch、delete、options 路由方法。

<?php
Route::post("/users", [UserController::class, "store"]);
Route::put("/users/{id}", [UserController::class, "update"]);
Route::delete("/users/{id}", [UserController::class, "destroy"]);

路由参数

使用 {param} 捕获 URI 片段。可选片段使用 {param?}。

<?php
Route::get("/users/{id}", function (int $id) {
    return "User ID: $id";
});
// Optional:
Route::get("/posts/{slug?}", function (?string $slug = null) { });

命名路由

为路由命名,以便在重定向和生成 URL 时使用。

<?php
Route::get("/dashboard", [DashboardController::class, "index"])->name("dashboard");

// Elsewhere:
return redirect()->route("dashboard");
$url = route("dashboard");

路由组

将共享中间件、前缀或命名空间的路由分组。

<?php
Route::middleware("auth")->prefix("admin")->group(function () {
    Route::get("/dashboard", [AdminController::class, "index"]);
    Route::get("/users",     [AdminController::class, "users"]);
});

资源路由

Route::resource() 只需一行代码,就能为控制器注册 7 个 RESTful 路由(index、create、store、show、edit、update、destroy)。

<?php
Route::resource("posts", PostController::class);
// GET /posts, GET /posts/create, POST /posts, GET /posts/{post}
// GET /posts/{post}/edit, PUT/PATCH /posts/{post}, DELETE /posts/{post}

API 资源路由

Route::apiResource() 会注册 5 个路由(跳过用于返回表单的 create 和 edit)。

<?php
Route::apiResource("users", UserController::class);

路由模型绑定

在路由闭包或控制器方法中为模型添加类型提示,Laravel 会根据主键自动获取该模型。

<?php
Route::get("/users/{user}", function (User $user) {
    return $user; // Laravel fetches User::findOrFail($user)
});

路由约束

使用正则表达式约束路由参数的格式。

<?php
Route::get("/users/{id}", handler)->where("id", "[0-9]+");
Route::get("/users/{slug}", handler)->where("slug", "[a-z-]+");

any() 与 match()

Route::any() 会响应任何 HTTP 方法。Route::match() 会响应指定方法列表中的方法。

<?php
Route::match(["get", "post"], "/contact", ContactController::class);

查看已注册的路由

列出所有已注册路由及其方法、名称和操作。

$ php artisan route:list

总结

Laravel 路由位于 routes/web.php 和 routes/api.php 中。请将资源路由用于 CRUD,将路由模型绑定用于自动注入模型,并使用命名路由生成 URL。

快速检查

哪个命令可以一次注册 7 个 RESTful 路由?

免费开始

用 AI 导师学习 PHP — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
49
课程
195

常见问题解答

「在 Laravel 中定义路由」课时是免费的吗?

是的 — 「在 Laravel 中定义路由」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。

「在 Laravel 中定义路由」这节课中我会学到什么?

在 web.php 和 api.php 中注册 GET、POST 及资源路由。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 PHP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「在 Laravel 中定义路由」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 PHP Academy 课中编写并运行代码吗?

能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Laravel 项目结构
  2. 在 Laravel 中定义路由
  3. 控制器与操作
  4. Blade 模板与视图
← 返回 PHP Academy