thinkphp 5.1 中路由分组是组织 api 接口最常用也最有效的方式,通过 route::group() 统一前缀、共享中间件、集中管理路径;支持命名空间绑定、中间件注入及 restful resource 路由。

ThinkPHP 5.1 中路由分组是组织 API 接口最常用也最有效的方式,核心目标是统一前缀、共享中间件、集中管理资源路径,避免重复定义和逻辑散落。
定义基础 API 路由分组
在 route/route.php 中使用 Route::group() 创建分组,推荐以 /api 或带版本号(如 /api/v1)开头:
- 用闭包方式定义一组接口,路径自动拼接前缀
- 控制器方法名保持语义清晰,例如
index对应列表,save对应创建 - 避免在分组内写死完整 URL,让框架自动解析模块/控制器/操作
示例:
use think\Route;
Route::group('api/v1', function () {
Route::rule('users', 'api/User/index'); // GET /api/v1/users
Route::rule('users/:id', 'api/User/read'); // GET /api/v1/users/123
Route::rule('users', 'api/User/save', 'POST'); // POST /api/v1/users
});
绑定命名空间与模块化结构
TP5.1 默认控制器位于 app\index\controller,但 API 接口建议单独建 app\api\controller 模块,并通过命名空间绑定提升可读性:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 在分组闭包中调用
Route::bind('api', 'api')可将api前缀映射到app\api\controller目录 - 控制器类需声明正确命名空间:
namespace app\api\controller; - 若使用多模块,确保
app.php中开启'app_multi' => true
为分组添加中间件和参数过滤
API 分组通常需要统一鉴权、跨域、参数校验等处理,直接在分组定义时传入中间件数组即可:
- 中间件按执行顺序排列,例如先
CheckToken再Cors - 支持闭包中间件或类名字符串,类名需符合 PSR-4 自动加载规则
- 可在中间件中统一拦截非法请求、注入用户信息、设置响应头
示例:
Route::group('api/v1', ['middleware' => ['CheckToken', 'Cors']])->rule([
'posts' => ['api/Post/index', ['method' => 'GET']],
'posts/:id' => ['api/Post/read', ['method' => 'GET']],
'posts' => ['api/Post/save', ['method' => 'POST']],
]);
配合 RESTful 风格简化定义
TP5.1 支持 resource 路由,适合标准 CRUD 场景,自动生成 7 个常用接口:
- 调用
Route::resource('users', 'api/User');即生成GET /users、POST /users、GET /users/:id等 - 生成的路由自动绑定对应 HTTP 方法,无需手动指定
- 如需禁用某几个动作(如删除),可用
'except' => ['delete', 'destroy']
注意:resource 路由默认不带版本前缀,需嵌套在分组中使用:
Route::group('api/v1', ['middleware' => ['CheckToken']])
->resource('users', 'api/User');php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










