API 文档
完整的登录系统 RESTful API 接口文档,支持用户注册、登录、Token认证等功能。
Base URL
http://uzaoai.com
接口汇总
点击接口可跳转到详细说明
| 方法 | 接口 | 说明 | 认证 |
|---|---|---|---|
| 安全接口 | |||
| GET | /api/auth/captcha | 获取图形验证码 | 无需 |
| POST | /api/auth/send-email-code | 发送邮箱验证码 | 无需 |
| 认证接口 | |||
| POST | /api/auth/register | 用户注册 | 无需 |
| POST | /api/auth/login | 用户登录 | 无需 |
| GET | /api/auth/profile | 获取用户信息 | 需要Token |
| POST | /api/auth/change-password | 修改密码 | 需要Token |
| POST | /api/auth/change-username | 修改用户名 | 需要Token |
| 管理员接口 | |||
| GET | /api/admin/users | 获取用户列表 | 管理员 |
| GET | /api/admin/users/{id} | 获取用户详情 | 管理员 |
| DELETE | /api/admin/users/{id} | 删除用户 | 管理员 |
| POST | /api/admin/users/{id}/toggle-status | 启用/禁用用户 | 管理员 |
| POST | /api/admin/users/{id}/reset-password | 重置用户密码 | 管理员 |
| POST | /api/admin/users/{id}/adjust-balance | 调整用户积分 | 管理员 |
| GET | /api/admin/stats | 获取统计数据 | 管理员 |
| VIP管理接口 | |||
| POST | /api/admin/users/{id}/adjust-vip | 调整VIP时间 | 管理员 |
| POST | /api/admin/users/{id}/set-vip | 设置VIP到期时间 | 管理员 |
| POST | /api/admin/users/{id}/cancel-vip | 取消用户VIP | 管理员 |
| GET | /api/admin/users/{id}/vip-logs | VIP变动记录 | 管理员 |
| GET | /api/admin/vip-stats | VIP统计数据 | 管理员 |
| 脚本管理接口 | |||
| GET | /api/scripts | 获取脚本列表 | 需要Token |
| POST | /api/scripts | 创建/保存脚本 | 需要Token |
| PUT | /api/scripts/{id} | 更新脚本 | 需要Token |
| DELETE | /api/scripts/{id} | 删除脚本 | 需要Token |
| POST | /api/scripts/sync | 批量同步脚本 | 需要Token |
| 运行记录接口 | |||
| GET | /api/records | 获取运行记录 | 需要Token |
| POST | /api/records | 上传运行记录 | 需要Token |
| DELETE | /api/records/{id} | 删除运行记录 | 需要Token |
| DELETE | /api/records/clear | 清空运行记录 | 需要Token |
| GET | /api/records/stats | 记录统计数据 | 需要Token |
| 积分/充值接口 | |||
| GET | /api/balance/info | 获取积分余额 | 需要Token |
| POST | /api/balance/recharge | 创建充值订单 | 需要Token |
| POST | /api/balance/recharge/{order_no}/pay | 支付订单 | 需要Token |
| GET | /api/balance/orders | 充值订单列表 | 需要Token |
| GET | /api/balance/logs | 积分变动记录 | 需要Token |
| AI服务接口 | |||
| POST | /api/image/generate | AI图片生成 | 需要Token |
认证方式
部分接口需要在请求头中携带 JWT Token:
HTTP Header
Authorization: Bearer <your_access_token>
安全接口
图形验证码和邮箱验证码接口,用于增强注册安全性
GET
/api/auth/captcha
获取图形验证码(SVG格式),用于注册时的人机验证
请求参数
无需参数
响应示例
JSON
{
"captcha_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"captcha_svg": "<svg ...>验证码图片</svg>"
}
使用说明
- 返回的
captcha_svg是 SVG 格式的图片,可直接嵌入页面 - 返回的
captcha_id需要在注册时一起提交 - 验证码有效期为 5 分钟
- 每分钟最多请求 30 次
200 成功
429 请求过于频繁
POST
/api/auth/send-email-code
发送邮箱验证码(需要先通过图形验证码)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 必填 | 邮箱地址 | |
| captcha_id | string | 必填 | 图形验证码ID(从 /captcha 获取) |
| captcha_code | string | 必填 | 用户输入的图形验证码 |
请求示例
JSON
{
"email": "user@example.com",
"captcha_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"captcha_code": "X7K2"
}
响应示例
JSON
{
"message": "验证码已发送,请查收邮件"
}
使用说明
- 邮箱验证码有效期为 10 分钟
- 同一邮箱 60 秒内只能发送一次
- 每分钟最多请求 5 次
200 发送成功
400 图形验证码错误
409 邮箱已注册
429 请求过于频繁
500 发送失败
认证接口
POST
/api/auth/register
注册新用户账户
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| username | string | 必填 | 用户名,2-80字符 |
| phone | string | 必填 | 手机号(11位) |
| password | string | 必填 | 密码,至少6个字符 |
| captcha_id | string | 可选 | 图形验证码ID(部分前端需要) |
| captcha_code | string | 可选 | 用户输入的图形验证码 |
请求示例(带验证码)
JSON
{
"username": "张三",
"phone": "13800138000",
"password": "123456",
"captcha_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"captcha_code": "X7K2"
}
响应示例
JSON
{
"message": "注册成功",
"user": {
"id": 1,
"username": "张三",
"phone": "13800138000",
"created_at": "2026-01-22T10:30:00",
"is_active": true
}
}
状态码
201 注册成功
400 参数错误
409 用户已存在
POST
/api/auth/login
用户登录(手机号+密码),获取访问令牌
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| phone | string | 必填 | 手机号 |
| password | string | 必填 | 密码 |
请求示例
JSON
{
"phone": "13800138000",
"password": "123456"
}
响应示例
JSON
{
"message": "登录成功",
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": 1,
"username": "张三",
"phone": "13800138000"
}
}
状态码
200 登录成功
400 参数错误
401 密码错误
GET
/api/auth/profile
需要认证
获取当前登录用户的详细信息
请求头
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 必填 | Bearer {access_token} |
响应示例
JSON
{
"user": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"created_at": "2026-01-22T10:30:00",
"is_active": true
}
}
状态码
200 成功
401 未认证
POST
/api/auth/change-password
需要认证
修改当前用户的密码
请求头
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 必填 | Bearer {access_token} |
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| old_password | string | 必填 | 原密码 |
| new_password | string | 必填 | 新密码,至少6个字符 |
请求示例
JSON
{
"old_password": "123456",
"new_password": "newpass123"
}
响应示例
JSON
{
"message": "密码修改成功"
}
状态码
200 修改成功
400 参数错误
401 原密码错误
POST
/api/auth/change-username
需要认证
修改当前用户的用户名
请求头
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 必填 | Bearer {access_token} |
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| new_username | string | 必填 | 新用户名,2-80字符 |
请求示例
JSON
{
"new_username": "新用户名"
}
响应示例
JSON
{
"message": "用户名修改成功",
"user": {
"id": 1,
"username": "新用户名",
"phone": "13800138000"
}
}
状态码
200 修改成功
400 参数错误/长度不符
401 未认证
409 用户名已被使用
管理员接口
以下接口需要管理员权限(第一个注册的用户为管理员)
GET
/api/admin/users
管理员
获取所有用户列表,支持分页和搜索
Query参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 可选 | 页码,默认1 |
| per_page | int | 可选 | 每页数量,默认20 |
| search | string | 可选 | 搜索用户名或邮箱 |
响应示例
JSON
{
"users": [
{"id": 1, "username": "admin", ...}
],
"total": 50,
"page": 1,
"per_page": 20,
"pages": 3
}
GET
/api/admin/users/{user_id}
管理员
获取指定用户的详细信息
Path参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 必填 | 用户ID |
状态码
200 成功
404 用户不存在
DELETE
/api/admin/users/{user_id}
管理员
删除指定用户(不能删除管理员)
Path参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 必填 | 用户ID |
响应示例
JSON
{
"message": "用户 testuser 已删除"
}
POST
/api/admin/users/{user_id}/toggle-status
管理员
切换用户状态(启用↔禁用)
Path参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 必填 | 用户ID |
响应示例
JSON
{
"message": "用户 testuser 已禁用",
"user": {"is_active": false, ...}
}
POST
/api/admin/users/{user_id}/reset-password
管理员
重置用户密码
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| new_password | string | 可选 | 新密码,默认123456 |
响应示例
JSON
{
"message": "用户 testuser 密码已重置"
}
POST
/api/admin/users/{user_id}/adjust-balance
管理员
调整用户积分余额(增加或减少)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| change | int | 必填 | 变动数量(正数增加,负数减少) |
| reason | string | 可选 | 变动原因,默认"管理员调整" |
响应示例
JSON
{
"message": "已增加 100 积分",
"old_balance": 50,
"new_balance": 150
}
GET
/api/admin/stats
管理员
获取用户统计数据
响应示例
JSON
{
"total_users": 100,
"active_users": 95,
"inactive_users": 5,
"total_balance": 15000
}
VIP管理接口
管理用户VIP会员状态(需要管理员权限)
POST
/api/admin/users/{user_id}/adjust-vip
管理员
按天数调整用户VIP时间(增加或减少)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| days | int | 必填 | 变动天数(正数增加,负数减少) |
| reason | string | 可选 | 变动原因 |
响应示例
JSON
{
"message": "已增加 30 天VIP时间",
"expire_before": null,
"expire_after": "2026-02-25T10:30:00",
"user": {...}
}
POST
/api/admin/users/{user_id}/set-vip
管理员
直接设置VIP到期时间(精确日期)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| expire_at | string | 必填 | ISO格式日期,如 2026-12-31T23:59:59 |
| reason | string | 可选 | 设置原因 |
POST
/api/admin/users/{user_id}/cancel-vip
管理员
取消用户VIP会员资格
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| reason | string | 可选 | 取消原因 |
GET
/api/admin/users/{user_id}/vip-logs
管理员
获取用户VIP变动历史记录
响应示例
JSON
{
"logs": [{
"id": 1,
"days_change": 30,
"expire_before": null,
"expire_after": "2026-02-25T10:30:00",
"reason": "充值赠送",
"created_at": "2026-01-26T10:30:00"
}],
"total": 1
}
GET
/api/admin/vip-stats
管理员
获取VIP用户统计数据
响应示例
JSON
{
"total_vip": 100,
"expiring_soon": 15
}
脚本管理接口(数据采集助手)
用户脚本的云端存储和同步
GET
/api/scripts
需要认证
获取当前用户的所有脚本
响应示例
JSON
{
"scripts": [{
"id": "1706234567890",
"name": "采集商品数据",
"url": "https://example.com",
"steps": [...],
"enabled": true,
"lastRun": "2026/1/26 10:30:00",
"createdAt": "2026-01-20T08:00:00Z",
"updatedAt": "2026-01-26T10:30:00Z"
}]
}
POST
/api/scripts
需要认证
创建或保存脚本(如ID已存在则更新)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 必填 | 客户端生成的唯一ID |
| name | string | 必填 | 脚本名称 |
| url | string | 可选 | 目标网址 |
| steps | array | 可选 | 操作步骤数组 |
| enabled | boolean | 可选 | 是否启用,默认true |
请求示例
JSON
{
"id": "1706234567890",
"name": "采集商品数据",
"url": "https://example.com",
"steps": [
{"type": "click", "selector": ".btn"},
{"type": "extract", "coords": {...}}
],
"enabled": true
}
PUT
/api/scripts/{script_id}
需要认证
部分更新脚本(只传需要更新的字段)
请求示例
JSON
{
"name": "新名称",
"enabled": false,
"lastRun": "2026/1/26 15:00:00"
}
DELETE
/api/scripts/{script_id}
需要认证
删除指定脚本
POST
/api/scripts/sync
需要认证
批量同步本地脚本到云端(合并策略:以更新时间较新的为准)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scripts | array | 必填 | 本地所有脚本数组 |
| lastSyncTime | string | 可选 | 上次同步时间(ISO格式) |
响应示例
JSON
{
"scripts": [...],
"syncTime": "2026-01-26T10:30:00Z"
}
运行记录接口(数据采集助手)
脚本运行记录的云端存储(每用户最多500条,超出自动删除最旧的)
GET
/api/records
需要认证
获取运行记录列表,支持筛选和分页
Query参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| days | int | 可选 | 最近多少天,默认30 |
| scriptId | string | 可选 | 筛选特定脚本 |
| page | int | 可选 | 页码,默认1 |
| per_page | int | 可选 | 每页数量,默认50,最大100 |
响应示例
JSON
{
"records": [{
"id": "123",
"scriptId": "1706234567000",
"scriptName": "采集商品数据",
"status": "success",
"result": "提取15条数据",
"duration": "12秒",
"count": 15,
"data": [...],
"createdAt": "2026-01-26T10:30:00Z"
}],
"total": 100,
"page": 1,
"pages": 2
}
POST
/api/records
需要认证
上传运行记录
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scriptId | string | 必填 | 脚本ID |
| scriptName | string | 必填 | 脚本名称 |
| status | string | 可选 | success 或 error |
| result | string | 可选 | 运行结果描述 |
| duration | string | 可选 | 耗时 |
| count | int | 可选 | 数据条数 |
| data | array | 可选 | 提取的数据数组 |
DELETE
/api/records/{record_id}
需要认证
删除指定运行记录
DELETE
/api/records/clear
需要认证
清空运行记录(可指定脚本)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scriptId | string | 可选 | 指定脚本ID,不传则清空所有 |
GET
/api/records/stats
需要认证
获取运行记录统计数据
响应示例
JSON
{
"total": 150,
"success": 140,
"error": 10,
"today": 5,
"totalDataCount": 2500
}
积分/充值接口
积分价格:0.99元 = 1积分
GET
/api/balance/info
需要认证
获取当前用户的积分余额
响应示例
JSON
{
"balance": 100,
"price_per_point": 0.99
}
POST
/api/balance/recharge
需要认证
创建充值订单
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| points | int | 必填 | 充值积分数量(1-10000) |
请求示例
JSON
{
"points": 100
}
响应示例
JSON
{
"message": "订单创建成功",
"order": {
"order_no": "20260122143052ABCD1234",
"amount": 99.0,
"points": 100,
"status": "pending"
}
}
POST
/api/balance/recharge/{order_no}/pay
需要认证
支付充值订单(模拟支付)
Path参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| order_no | string | 必填 | 订单号 |
响应示例
JSON
{
"message": "支付成功",
"new_balance": 200
}
GET
/api/balance/orders
需要认证
获取当前用户的充值订单列表
Query参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 可选 | 页码,默认1 |
| per_page | int | 可选 | 每页数量,默认10 |
GET
/api/balance/logs
需要认证
获取当前用户的积分变动记录
响应示例
JSON
{
"logs": [
{
"change": 100,
"balance_after": 200,
"reason": "充值 - 订单号:xxx",
"created_at": "2026-01-22T14:30:00"
}
],
"total": 5
}
AI服务接口
AI图片生成服务(后端代理,API Key安全存储)
POST
/api/image/generate
需要认证
调用AI生成图片(火山引擎doubao-seedream模型)
请求参数 (Body - JSON)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| prompt | string | 必填 | 图片描述文字 |
| size | string | 可选 | 图片尺寸,默认1920x1080 |
| n | int | 可选 | 生成数量,默认1,最多4 |
请求示例
JSON
{
"prompt": "一只可爱的橘猫在阳光下睡觉",
"size": "1920x1080",
"n": 1
}
响应示例
JSON
{
"created": 1706000000,
"data": [
{
"url": "https://..."
}
]
}
状态码
200 成功
400 参数错误
401 未认证