使用 Laravel 构建 RESTful API 时,应通过 apiResource 定义标准 CRUD 路由,结合版本前缀(如 v1)、中间件分组(auth:sanctum、throttle)和浅层嵌套路由(shallow),实现清晰、可维护的路由结构。

在使用 Laravel 构建 RESTful API 时,合理设计路由不仅能提升代码可维护性,还能让接口更清晰、易用。Laravel 提供了强大的路由功能,结合 REST 的语义化规范,可以高效组织 API 接口。
使用资源路由(Resource Routes)
Laravel 的资源路由能自动生成符合 REST 规范的七个动作对应的路由,适用于标准的 CRUD 操作。通过 Route::apiResource() 可以快速定义一组 API 路由。
Route::apiResource('posts', PostController::class);
这会自动注册以下路由:
- GET /posts → index
- POST /posts → store
- GET /posts/{post} → show
- PUT/PATCH /posts/{post} → update
- DELETE /posts/{post} → destroy
相比手动定义每条路由,资源路由更简洁,且符合 REST 原则。
为 API 添加版本控制
API 通常需要版本管理,避免升级影响旧客户端。建议在路由中包含版本号,例如使用 v1 作为前缀。
Route::prefix('v1')->group(function () {- Route::apiResource('posts', PostController::class);
- });
这样所有 API 路由都以 /api/v1/posts 的形式访问,便于未来扩展 v2 版本。
合理分组与命名中间件
API 路由通常需要身份验证和限流,Laravel 提供了内置中间件如 auth:sanctum 和 throttle。将这些中间件集中应用到 API 分组中。
Route::middleware(['auth:sanctum', 'throttle:60,1'])->group(function () {- Route::apiResource('posts', PostController::class);
- });
也可以为某些公开接口排除认证,比如文章列表或详情页支持游客访问,只需单独设置中间件。
处理嵌套路由与关系资源
当资源存在层级关系时,如评论属于文章,可使用嵌套路由。
Route::apiResource('posts.comments', CommentController::class)->shallow();
使用 shallow() 方法可避免深层嵌套,仅在必要操作(如创建评论)时包含父级 ID,查看或更新单个评论时只需 comment ID,提高 URL 可读性。
基本上就这些。遵循资源化、版本隔离、中间件统一和适度嵌套的原则,能让 Laravel API 路由结构清晰、易于维护。不复杂但容易忽略。











