ThinkPHP 8.0 搭建基础 API 项目需完成四步闭环:一、确保 PHP 8.0+ 及 fileinfo、openssl、pdo、mbstring、json 扩展启用;二、用 composer create-project 创建完整项目骨架;三、配置 app.php 返回类型为 json、移除视图目录、启用调试模式;四、在 route/app.php 定义 JSON 响应路由并用 php think run 启动测试。

ThinkPHP 8.0 搭建基础 API 接口项目,核心是“环境配齐 + 项目初始化 + 路由定义 + 响应规范”,不是装完框架就直接写接口,而是走对四步闭环。
一、确保 PHP 8.0+ 和必要扩展已启用
TP8 严格依赖 PHP 8.0 或更高版本(推荐 8.1/8.2),且以下扩展必须启用:
- fileinfo:文件类型识别,API 文件上传、图片验证等场景必需
- openssl:JWT、HTTPS 请求、加密解密功能的基础支撑
- pdo 与 pdo_mysql(或对应数据库驱动):哪怕暂时不用数据库,框架启动和部分命令也依赖 PDO
- mbstring 和 json:字符串处理与 API 数据序列化刚需
执行 php -m | grep -E "(fileinfo|openssl|pdo|mbstring|json)" 确认输出完整。Windows 用户若用 phpstudy_pro 或 XAMPP,请检查面板中是否勾选;Linux/macOS 可编辑 php.ini 解除对应 extension= 行的注释。
二、用 create-project 创建纯净项目骨架
切勿使用 composer require topthink/think —— 它只拉核心包,缺失 public/ 入口、think 命令行脚本和默认路由,后续必报错。
立即学习“PHP免费学习笔记(深入)”;
在空目录下执行:
composer create-project topthink/think api-demo
安装完成后,确认目录含 app/、config/、public/、runtime/ 和根目录的 .env、think 文件。这是可运行 API 项目的最小合法结构。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
三、配置为纯 API 模式(无视图、无模板)
TP8 默认支持 MVC,但 API 项目应关闭视图渲染,统一返回 JSON:
- 打开
config/app.php,将'default_return_type' => 'html'改为'json' - 删除或重命名
app/view/目录(若存在),避免误触发模板渲染 - 在
.env中设APP_DEBUG=true,方便调试接口异常;数据库配置如暂不使用,可留空或注释掉DB_*行
此时所有控制器方法只要 return 数组或对象,框架会自动以 application/json 响应,无需手动 json_encode() 或 header()。
四、定义一个标准 API 路由并测试
在 app/route/app.php 中添加:
use think\facade\Route;
Route::get('api/hello', function () {
return ['code' => 0, 'msg' => 'success', 'data' => ['time' => date('Y-m-d H:i:s')]];
});
然后启动内置服务:
cd api-demo php think run
访问 https://www.php.cn/link/19c9103e4dff12924fa76c64b07874df,应看到格式化 JSON 响应。若遇 404,请确认 URL 是 /api/hello(不是 /index.php/api/hello),且 Web 服务器根目录已指向 public/(开发时 php think run 已自动处理)。
不复杂但容易忽略


















