Files
Web_BAI_Manage_ApiServer/docs/api.md
XuJiacheng 6d713c22ed feat: 添加Docker部署配置和项目文档
添加前后端Dockerfile和docker-compose配置
创建部署脚本deploy.sh
完善项目文档结构包括前后端文档、API文档和部署文档
更新README提供项目概述和快速开始指南

文档包括详细的技术栈说明、功能模块介绍和部署指南
部署方案支持一键式容器化部署和宝塔面板集成
2026-03-18 14:29:41 +08:00

332 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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));
```