如何设置ThinkPHP的API路由规则?
- 内容介绍
- 文章标签
- 相关推荐
本文共计971个文字,预计阅读时间需要4分钟。
ThinkPHP的API开发,主要涉及以下步骤:
API 路由必须显式声明 HTTP 方法
写 Route::rule('api/login', 'Api/Login/login') 是危险的:它默认响应所有 method(GET/POST/PUT/DELETE),会跳过 CSRF 验证中间件的 method 检查逻辑,导致 POST 请求绕过防护直接进控制器。
- 正确做法是用语义化方法:
Route::post('api/login', 'Api/Login/login') - 若需同时支持 POST 和 PUT(如创建/更新共用接口),必须显式传入:
Route::rule('api/user', 'Api/User/save', 'POST|PUT') -
Route::any()仅用于调试或 WebHook 类极少数场景,线上 API 路由禁用
Route::get 和 Route::rule 的行为差异
Route::get 是快捷封装,自带 GET 限定 + 严格模式;Route::rule 是底层通用接口,不加 method 参数就等于 '*',且默认不启用正则约束能力。
本文共计971个文字,预计阅读时间需要4分钟。
ThinkPHP的API开发,主要涉及以下步骤:
API 路由必须显式声明 HTTP 方法
写 Route::rule('api/login', 'Api/Login/login') 是危险的:它默认响应所有 method(GET/POST/PUT/DELETE),会跳过 CSRF 验证中间件的 method 检查逻辑,导致 POST 请求绕过防护直接进控制器。
- 正确做法是用语义化方法:
Route::post('api/login', 'Api/Login/login') - 若需同时支持 POST 和 PUT(如创建/更新共用接口),必须显式传入:
Route::rule('api/user', 'Api/User/save', 'POST|PUT') -
Route::any()仅用于调试或 WebHook 类极少数场景,线上 API 路由禁用
Route::get 和 Route::rule 的行为差异
Route::get 是快捷封装,自带 GET 限定 + 严格模式;Route::rule 是底层通用接口,不加 method 参数就等于 '*',且默认不启用正则约束能力。

