用 ThinkPHP 8 构建 RESTful API 的几点实践

最近在一个酒店管理系统项目里,技术栈锁定为 PHP 8.2 + ThinkPHP 8。单人六周交付 MVP,需要在「快」和「稳」之间找到平衡。下面几点是我沉淀下来的做法。

1. 用资源路由收敛接口

与其手写一堆 Route::get/post,不如直接上资源路由:

Route::resource('rooms', RoomController::class);

控制器里只保留 index / show / store / update / destroy 五个动作,前端对接时心智模型非常清晰。

2. 统一响应结构

所有接口返回同一套信封:

{
  "code": 0,
  "msg": "ok",
  "data": { }
}

在中间件里把异常也收编成这个结构,前端就不需要为不同错误写多种分支。

3. 认证用双 Token

access_token 短时效(2h),refresh_token 长时效(14d),配合 Redis 做黑名单,登出即失效。

小经验:JWT 不要塞太多业务字段,只放 uid 和 jti,其余查库。

小结

分层清晰比炫技重要。下一期聊定价引擎 RateService 怎么在并发下单时防超卖。