332 lines
5.7 KiB
Markdown
332 lines
5.7 KiB
Markdown
|
|
# API接口文档
|
|||
|
|
|
|||
|
|
## 接口概述
|
|||
|
|
|
|||
|
|
本文档定义了微信小程序前端调用的API接口,包括认证、用户、数据等相关接口。
|
|||
|
|
|
|||
|
|
## 基础信息
|
|||
|
|
|
|||
|
|
- API基础路径: `http://localhost:3000/api`
|
|||
|
|
- 响应格式: JSON
|
|||
|
|
- 认证方式: JWT
|
|||
|
|
|
|||
|
|
## 认证接口
|
|||
|
|
|
|||
|
|
### 1. 用户登录
|
|||
|
|
|
|||
|
|
**接口地址**: `/auth/login`
|
|||
|
|
**请求方式**: POST
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| username | string | 是 | 用户名 |
|
|||
|
|
| password | string | 是 | 密码 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "登录成功",
|
|||
|
|
"data": {
|
|||
|
|
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|||
|
|
"user": {
|
|||
|
|
"id": "123",
|
|||
|
|
"username": "admin",
|
|||
|
|
"nickname": "管理员"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 用户注册
|
|||
|
|
|
|||
|
|
**接口地址**: `/auth/register`
|
|||
|
|
**请求方式**: POST
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| username | string | 是 | 用户名 |
|
|||
|
|
| password | string | 是 | 密码 |
|
|||
|
|
| nickname | string | 是 | 昵称 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "注册成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": "123",
|
|||
|
|
"username": "user1",
|
|||
|
|
"nickname": "新用户"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 用户接口
|
|||
|
|
|
|||
|
|
### 1. 获取用户信息
|
|||
|
|
|
|||
|
|
**接口地址**: `/user/info`
|
|||
|
|
**请求方式**: GET
|
|||
|
|
**请求头**:
|
|||
|
|
- Authorization: Bearer {token}
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": "123",
|
|||
|
|
"username": "admin",
|
|||
|
|
"nickname": "管理员",
|
|||
|
|
"avatar": "https://example.com/avatar.jpg",
|
|||
|
|
"createdAt": "2026-03-18T00:00:00Z"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 更新用户信息
|
|||
|
|
|
|||
|
|
**接口地址**: `/user/update`
|
|||
|
|
**请求方式**: PUT
|
|||
|
|
**请求头**:
|
|||
|
|
- Authorization: Bearer {token}
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| nickname | string | 否 | 昵称 |
|
|||
|
|
| avatar | string | 否 | 头像URL |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "更新成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": "123",
|
|||
|
|
"username": "admin",
|
|||
|
|
"nickname": "新昵称",
|
|||
|
|
"avatar": "https://example.com/new-avatar.jpg"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 数据接口
|
|||
|
|
|
|||
|
|
### 1. 获取数据列表
|
|||
|
|
|
|||
|
|
**接口地址**: `/data/list`
|
|||
|
|
**请求方式**: GET
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| page | number | 否 | 页码,默认1 |
|
|||
|
|
| size | number | 否 | 每页条数,默认10 |
|
|||
|
|
| keyword | string | 否 | 搜索关键词 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": "1",
|
|||
|
|
"title": "数据1",
|
|||
|
|
"content": "内容1",
|
|||
|
|
"createdAt": "2026-03-18T00:00:00Z"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"total": 1,
|
|||
|
|
"page": 1,
|
|||
|
|
"size": 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 获取数据详情
|
|||
|
|
|
|||
|
|
**接口地址**: `/data/detail/{id}`
|
|||
|
|
**请求方式**: GET
|
|||
|
|
**路径参数**:
|
|||
|
|
- id: 数据ID
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": "1",
|
|||
|
|
"title": "数据1",
|
|||
|
|
"content": "内容1",
|
|||
|
|
"createdAt": "2026-03-18T00:00:00Z",
|
|||
|
|
"updatedAt": "2026-03-18T00:00:00Z"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## AI接口
|
|||
|
|
|
|||
|
|
### 1. 智能问答
|
|||
|
|
|
|||
|
|
**接口地址**: `/ai/chat`
|
|||
|
|
**请求方式**: POST
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| question | string | 是 | 问题 |
|
|||
|
|
| context | string | 否 | 上下文 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"answer": "这是AI的回答",
|
|||
|
|
"thinking": "AI的思考过程",
|
|||
|
|
"tokens": 100
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 视频接口
|
|||
|
|
|
|||
|
|
### 1. 上传视频
|
|||
|
|
|
|||
|
|
**接口地址**: `/video/upload`
|
|||
|
|
**请求方式**: POST
|
|||
|
|
**请求头**:
|
|||
|
|
- Content-Type: multipart/form-data
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| video | file | 是 | 视频文件 |
|
|||
|
|
| title | string | 是 | 视频标题 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "上传成功",
|
|||
|
|
"data": {
|
|||
|
|
"id": "1",
|
|||
|
|
"title": "视频标题",
|
|||
|
|
"url": "https://example.com/video.mp4",
|
|||
|
|
"duration": 60
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 获取视频列表
|
|||
|
|
|
|||
|
|
**接口地址**: `/video/list`
|
|||
|
|
**请求方式**: GET
|
|||
|
|
**请求参数**:
|
|||
|
|
|
|||
|
|
| 参数名 | 类型 | 必选 | 描述 |
|
|||
|
|
|-------|------|------|------|
|
|||
|
|
| page | number | 否 | 页码,默认1 |
|
|||
|
|
| size | number | 否 | 每页条数,默认10 |
|
|||
|
|
|
|||
|
|
**响应示例**:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"message": "获取成功",
|
|||
|
|
"data": {
|
|||
|
|
"list": [
|
|||
|
|
{
|
|||
|
|
"id": "1",
|
|||
|
|
"title": "视频1",
|
|||
|
|
"url": "https://example.com/video1.mp4",
|
|||
|
|
"duration": 60,
|
|||
|
|
"createdAt": "2026-03-18T00:00:00Z"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"total": 1,
|
|||
|
|
"page": 1,
|
|||
|
|
"size": 10
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 错误码说明
|
|||
|
|
|
|||
|
|
| 错误码 | 描述 |
|
|||
|
|
|-------|------|
|
|||
|
|
| 400 | 请求参数错误 |
|
|||
|
|
| 401 | 未授权,请登录 |
|
|||
|
|
| 403 | 禁止访问 |
|
|||
|
|
| 404 | 资源不存在 |
|
|||
|
|
| 500 | 服务器内部错误 |
|
|||
|
|
|
|||
|
|
## 调用示例
|
|||
|
|
|
|||
|
|
### 使用axios调用
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 登录
|
|||
|
|
axios.post('/api/auth/login', {
|
|||
|
|
username: 'admin',
|
|||
|
|
password: '123456'
|
|||
|
|
}).then(response => {
|
|||
|
|
const token = response.data.data.token;
|
|||
|
|
// 存储token
|
|||
|
|
localStorage.setItem('token', token);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 带认证的请求
|
|||
|
|
axios.get('/api/user/info', {
|
|||
|
|
headers: {
|
|||
|
|
'Authorization': `Bearer ${localStorage.getItem('token')}`
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 使用fetch调用
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 登录
|
|||
|
|
fetch('/api/auth/login', {
|
|||
|
|
method: 'POST',
|
|||
|
|
headers: {
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
body: JSON.stringify({
|
|||
|
|
username: 'admin',
|
|||
|
|
password: '123456'
|
|||
|
|
})
|
|||
|
|
}).then(response => response.json())
|
|||
|
|
.then(data => {
|
|||
|
|
const token = data.data.token;
|
|||
|
|
// 存储token
|
|||
|
|
localStorage.setItem('token', token);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// 带认证的请求
|
|||
|
|
fetch('/api/user/info', {
|
|||
|
|
headers: {
|
|||
|
|
'Authorization': `Bearer ${localStorage.getItem('token')}`
|
|||
|
|
}
|
|||
|
|
}).then(response => response.json())
|
|||
|
|
.then(data => console.log(data));
|
|||
|
|
```
|