DOO API 参考

49 个扁平 PHP API 文件,各自独立处理 CORS 头和认证。每个文件手动设置 Access-Control-Allow-Origin: *,通过 PHP Session + Token 进行认证。所有响应统一 JSON 格式。

统一响应格式

{
  "code": 200,
  "message": "操作描述",
  "data": { ... }
}

鉴权方式

Session + Token 双机制:登录后 PHP $_SESSION 存储 user_idusernamenickname,同时生成 64 字符随机 Token(bin2hex(random_bytes(32)))返回前端。后续请求使用 Session Cookie 维持登录态,部分接口支持 Authorization: Bearer <token> 头。

管理员接口检查 $_SESSION['user_id']role === 'admin'


用户认证

POST /api/login.php — 登录

独立设置 CORS,无外部依赖。

请求(JSON)

{ "username": "string", "password": "string" }

处理password_verify() 验证 bcrypt 哈希,生成 64 字符 Token,记录登录日志。

响应

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "user": {
      "id": 1,
      "username": "admin",
      "nickname": "管理员",
      "avatar": "...",
      "background_image": "...",
      "followers": 10001,
      "following": 0,
      "likes": 0,
      "created_at": "2026-01-19 15:23:47"
    },
    "token": "64字符十六进制token"
  }
}
code 说明
200 登录成功
400 用户名或密码为空
401 用户名或密码错误

POST /api/register.php — 注册

逻辑

  1. 检查用户名唯一性
  2. password_hash($password, PASSWORD_DEFAULT) 加密
  3. INSERT users,nickname 默认为 username

响应

{ "code": 201, "message": "注册成功", "data": { "username": "newuser" } }

GET 模式返回健康检查信息(PHP 版本、upload 目录状态)。


内容获取

GET /api/feed.php — 视频 Feed 流

无需认证。

SELECT v.id, v.title, v.description, v.video_url,
       v.cover_url as cover, v.views, v.created_at,
       u.username as author
FROM videos v LEFT JOIN users u ON v.user_id = u.id
ORDER BY v.id DESC LIMIT 20

播放量格式化为 “X次播放”。

GET /api/content.php — 内容 API(完整 CRUD)

支持 GET/POST/PUT/DELETE,自动检查并创建 content 表。

方法 参数 说明
GET ?id=N 获取单个内容(含作者)
GET ?limit=20&offset=0&status=published 分页列表
POST JSON body 创建内容:user_id, title, content, image_url, video_url, tags, category, status
PUT ?id=N + JSON body 动态更新指定字段
DELETE ?id=N 删除内容

GET /api/get_images.php — 图片列表

无需认证。按 ID 降序返回,限制 20 条。

GET /api/get_users.php — 用户列表

无需认证。

SELECT id, username, nickname, avatar, followers, following, likes, created_at
FROM users ORDER BY id DESC

GET /api/get_carousels.php — 轮播图列表

无需认证。仅返回 is_active = 1 的记录,按 sort_order ASC 排序。

GET /api/get_articles.php — 文章列表

created_at DESC 排序。独立的 articles 表。

GET /api/announcements.php — 公告列表

返回启用的公告,按 created_at DESC 排序。

GET /api/get_versions.php — 版本列表

返回所有版本,按 created_at DESC,limit 30。


社交互动

GET/POST /api/follow.php — 关注管理

需要认证($_SESSION['user_id'])。

方法 参数 说明
GET ?action=following 获取当前用户关注列表
GET ?action=followers 获取当前用户粉丝列表
GET ?action=check&user_id=N 检查是否已关注
POST {"user_id": N} 关注用户(双向更新计数器)

关注逻辑:

  1. 检查是否已关注(联合唯一约束)
  2. INSERT into follows
  3. UPDATE users SET followers + 1(目标用户)
  4. UPDATE users SET following + 1(当前用户)

GET/POST/PUT/DELETE /api/messages.php — 私信管理

需要认证(支持 Session / Token / 请求参数三种方式)。

方法 参数 说明
GET ?action=get_messages 会话列表(按最新消息分组,含未读数)
GET (无 action) 全部消息(sender/receiver 各 50 条)
POST {"action":"send_message","receiver_id":N,"content":"..."} 发送消息
POST {"action":"get_messages"} 会话列表(POST 方式)
DELETE ?id=N 删除消息(必须为发送者或接收者)

GET /api/check_follow.php — 检查关注状态

检查当前用户是否关注了指定用户。


内容发布

POST /api/upload.php — 文件上传

使用 multipart/form-data,字段名 file

限制

类型 最大 MIME
图片 5MB image/jpeg, image/png, image/jpg, image/gif, image/webp
视频 50MB video/mp4, video/quicktime, video/x-msvideo, video/avi

命名md5(time() . filename) . extension

POST /api/upload_image.php — 图片上传(内容发布)

上传后自动 INSERT 到 images 表,返回图片 ID 和 URL。

POST /api/upload_article.php — 文章发布

创建文章记录,支持标题、内容、标签、分类。

POST /api/upload_version.php — 版本发布

上传 APK 文件(最大 100MB),记录版本信息。


文件管理

GET /api/files.php — 文件列表

需要认证,按 created_at DESC 分页返回用户文件。

GET /api/files_preview.php — 文件预览

通过 ?id=N 根据文件 ID 获取预览 URL。

POST /api/files_upload.php — 文件上传

需要认证,支持进度追踪,记录到 files 表(含 OSS key 字段预留)。


推荐系统

GET/POST /api/recommend.php — 智能推荐引擎

完整的推荐系统,包含 50KB+ 业务逻辑。

GET:获取推荐内容

  • 参数:?limit=20&offset=0
  • 检查 A/B 测试 → 流量分配 → 选择算法 → 个性化推荐
  • 5 分钟文件缓存
  • 返回算法标识 + A/B 测试 ID

POST:记录推荐点击

{
  "action": "click",
  "content_id": 115,
  "algorithm": "hybrid",
  "ab_test_id": null,
  "recommend_id": "rec_xxx"
}

4 种推荐算法: | 算法 | 权重 | 说明 | |——|——|——| | collaborative_filtering | 0.3 | 协同过滤,按点赞数排序 | | content_based | 0.2 | 基于内容,按发布时间排序 | | popularity | 0.25 | 流行度,按点赞+评论加权排序 | | hybrid | 0.1 | 混合推荐,综合热度+时间 |

用户画像:统计用户行为类型和频次 → 分析标签偏好 → 分析分类偏好 → 个性化推荐。


用户管理

POST /api/update_user.php — 更新资料

动态 BUILD UPDATE,只更新传入的非空字段。

POST /api/change_password.php — 修改密码

password_verify() 验证旧密码 → password_hash() 更新。

GET /api/user_profile.php — 用户主页

需要认证(Session),返回当前用户完整信息。

POST /api/delete_account.php — 注销账号

删除用户及其相关内容。


用户行为追踪

POST /api/user_behavior.php — 行为数据同步

前端批量上报用户行为数据(page_view, content_click, recommend_show, recommend_click, page_stay 等),后端批量插入 user_behaviors 表,用于推荐算法训练。


工具/诊断接口

端点 说明
test_connection.php 数据库连接测试
check_database.php 检查数据库和关键表
check_admin.php 检查当前会话管理员状态
check_admin_setup.php 检查管理员配置
check_app_data.php 检查应用数据
check_users_table.php 检查 users 表结构
check_created_at_format.php 检查 created_at 格式
check_update.php 检查更新状态
follow_test.php 关注功能测试
test_articles.php 文章功能测试
test_content_system.php 内容系统测试
simple_articles.php 简化文章查询
create_content_table.php 创建 content 表
create_logs_table.php 创建 logs 表
init_database.php 初始化数据库
init_images_table.php 初始化 images 表
import_images.php 批量导入图片
setup_admin_role.php 设置管理员角色
update_users_created_at.php 修复用户创建时间
reset_admin.php 重置管理员密码
index.php API 入口/目录
log_helper.php 日志辅助函数
.htaccess Apache 重写规则

管理接口

所有 admin_*.php 需要管理员权限。

POST /api/admin_login.php — 管理员登录

验证密码后检查 role === 'admin',非管理员返回 403。

GET /api/admin_logout.php — 管理员登出

session_unset() + session_destroy()

admin_content.php — 内容管理 (CRUD)

管理员对所有内容的完整 CRUD 操作。

admin_users.php — 用户管理 (CRUD)

创建用户时 password_hash() 加密,支持角色分配 (user/admin)。

admin_carousels.php — 轮播图管理 (CRUD)

支持排序、启用/禁用,关联用户表查询作者信息。

admin_follows.php — 关注管理

管理员查看所有关注关系。

admin_messages.php — 消息管理

管理员查看所有私信记录。

admin_recommendations.php — 推荐系统管理

管理推荐算法配置(启用/禁用、权重调整),查看推荐日志和指标。支持版本回滚。

admin_stats.php — 统计面板

系统统计数据。

admin_logs.php — 日志管理

查看系统操作日志。

admin_articles.php — 文章管理

文章 CRUD。


爬虫接口

端点 说明
crawl_images.php 爬取外部图片导入
crawl_hotsearch.php 爬取热搜数据
crawl_douyin_hotsearch.php 爬取抖音热搜

错误码汇总

code 说明
200 成功
201 创建成功
400 参数错误
401 未登录
403 非管理员
404 资源不存在
405 方法不允许
500 服务器错误
501 功能未实现
📝 本文由AI生成