用 ThinkPHP 快速构建 API 的实操指南
一 环境准备与项目初始化
二 路由设计与版本管理
三 控制器与模型示例
namespace app\api\controller;
use think\Controller;
use app\api\model\User as UserModel;
use think\Request;
class UserController extends Controller
{
public function index()
{
$users = UserModel::select();
return json(['status' => 'success', 'data' => $users]);
}
public function read($id)
{
$user = UserModel::get($id);
if (!$user) {
return json(['status' => 'error', 'message' => 'User not found'], 404);
}
return json(['status' => 'success', 'data' => $user]);
}
public function create(Request $request)
{
$data = $request->post();
$validate = new \app\api\validate\UserValidate();
if (!$validate->check($data)) {
return json(['status' => 'error', 'message' => $validate->getError()], 400);
}
$user = UserModel::create($data);
return json($user, 201);
}
public function update(Request $request, $id)
{
$user = UserModel::get($id);
if (!$user) {
return json(['status' => 'error', 'message' => 'User not found'], 404);
}
$data = $request->put();
$user->save($data);
return json(['status' => 'success', 'data' => $user]);
}
public function delete($id)
{
$user = UserModel::get($id);
if (!$user) {
return json(['status' => 'error', 'message' => 'User not found'], 404);
}
$user->delete();
return json(['status' => 'success', 'message' => 'Deleted']);
}
}
namespace app\api\model;
use think\Model;
class User extends Model
{
// 可定义 $table、自动时间戳、字段白名单等
}
namespace app\api\validate;
use think\Validate;
class UserValidate extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'email' => 'require|email',
];
protected $message = [
'name.require' => '姓名必填',
'name.max' => '姓名最多25个字符',
'email.require' => '邮箱必填',
'email.email' => '邮箱格式不正确',
];
}
四 安全、异常处理与日志
namespace app\exception;
use think\exception\Handle;
use think\Response;
use Throwable;
class Http extends Handle
{
public function render($request, Throwable $e): Response
{
return json(['status' => 'error', 'message' => $e->getMessage()], 500);
}
}
五 测试、部署与性能优化