使用 Turso PHP SDK 构建 RESTful API:PHP + SQLite 实战教程

作者:API传播员 · 2025-10-12 · 阅读时间:6分钟
本教程详细介绍了如何使用PHP和SQLite构建RESTful API,包括用户CRUD操作的实现步骤。通过Turso HTTP PHP SDK,您将学习如何设置项目、创建数据库、定义路由以及测试API。教程还涵盖了环境配置、依赖安装和敏感信息管理等关键环节。

一. 教程概述

在本教程中,我们将使用 Turso HTTP PHP SDK 逐步完成 RESTful API 的搭建过程。通过本文,你将学习如何使用 PHPSQLite 实现一个简单 API,包括用户的创建、读取、更新和删除(CRUD)操作。


二. 前置条件

在开始之前,请确保开发环境满足以下要求:

  • PHP 版本:PHP 8.3 或更高
  • Composer:用于管理 PHP 依赖项

三. 初始化项目

  1. 创建新项目目录并初始化 Composer:
mkdir my-turso-php-api
cd my-turso-php-api
composer init
  1. 按提示配置 composer.json 文件。
  2. 安装主要依赖:
composer require darkterminal/turso-client-http notrab/dumbo

提示darkterminal/turso-client-http 是 Turso 提供的 HTTP PHP SDK,用于与 Turso 数据库交互;notrab/dumbo 用于快速创建 HTTP 路由。


四. 创建数据库

接下来创建一个 SQLite 数据库来存储用户信息。可以使用 Turso 提供的工具生成带有必要表结构的数据库:

创建数据库

  1. 完成数据库创建后,生成 数据库令牌
  2. 构造数据库连接字符串:
dbname=libsql://...&authToken=...

建议将敏感信息存储为环境变量,以便在生产环境安全使用。


五. 构建 RESTful API

在项目根目录创建 index.php 文件,并依次实现用户 CRUD 操作。

1. 读取所有用户

定义 GET /users 端点:

$app->get('/users', function ($context) use ($db) {
    $result = $db->query('SELECT * FROM users')->fetchArray(LibSQL::LIB_ASSOC);
    return $result;
});

fetchArray 会将查询结果以关联数组返回。

2. 读取单个用户

定义 GET /users/:id 端点:

$app->get('/users/:id', function ($context, $id) use ($db) {
    $result = $db->query('SELECT * FROM users WHERE id = ?', [$id])->fetchArray(LibSQL::LIB_ASSOC);
    return $result[0] ?? null;
});

如果用户不存在,返回 null

3. 创建用户

定义 POST /users 端点:

$app->post('/users', function ($context) use ($db) {
    $data = $context->getBody();
    if (!isset($data['name'], $data['email'])) {
        return ['error' => 'Name and email are required'];
    }
    $db->query('INSERT INTO users (name, email) VALUES (?, ?)', [$data['name'], $data['email']]);
    return ['id' => $db->lastInsertId()];
});

包含基本输入验证,确保 nameemail 字段必填。

4. 更新用户

定义 PUT /users/:id 端点:

$app->put('/users/:id', function ($context, $id) use ($db) {
    $data = $context->getBody();
    $fields = [];
    foreach ($data as $key => $value) {
        $fields[] = "$key = ?";
    }
    $query = 'UPDATE users SET ' . implode(', ', $fields) . ' WHERE id = ?';
    $db->query($query, array_merge(array_values($data), [$id]));
    return ['id' => $id];
});

根据传入字段动态构建 SQL 更新语句。

5. 删除用户

定义 DELETE /users/:id 端点:

$app->delete('/users/:id', function ($context, $id) use ($db) {
    $db->query('DELETE FROM users WHERE id = ?', [$id]);
    return ['id' => $id];
});

删除成功后返回删除的用户 ID。


六. 运行 API

index.php 文件末尾添加:

$app->run();

使用 PHP 内置服务器运行:

php -S localhost:8000

七. 测试 API

可以使用 cURLPostman 测试 API 功能:

  1. 创建新用户
curl -X POST http://localhost:8000/users \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john@example.com"}'
  1. 获取所有用户
curl http://localhost:8000/users
  1. 获取单个用户
curl http://localhost:8000/users/1
  1. 更新用户
curl -X PUT http://localhost:8000/users/1 \
-H "Content-Type: application/json" \
-d '{"name": "Anonymous"}'
  1. 删除用户
curl -X DELETE http://localhost:8000/users/1

八. 注意事项

在生产环境中,需要进一步增强 API 的安全性和可维护性:

  • 添加错误处理机制
  • 使用库进行输入验证
  • 实现身份验证和授权
  • 配置 CORS 支持跨域请求
  • 防止 SQL 注入等安全风险

随着项目增长,建议将路由、数据库操作和业务逻辑拆分到不同文件,以提升代码可维护性。


原文链接: https://turso.tech/blog/building-a-restful-api-with-php-and-sqlite