Files
webUI/API接口文档.md
2025-05-29 14:25:13 +08:00

574 lines
11 KiB
Markdown
Raw Permalink 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接口。
## 目录
1. [用户认证接口](#用户认证接口)
2. [剧本管理接口](#剧本管理接口)
3. [声音克隆接口](#声音克隆接口)
4. [首页内容接口](#首页内容接口)
## 用户认证接口
### 1.1 微信登录接口
**接口说明**: 用于小程序环境下,通过微信授权登录
**请求URL**: `/api/login/wechat`
**请求方式**: POST
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| code | string | 是 | 微信登录返回的code |
| userInfo | object | 是 | 用户信息对象 |
| userInfo.nickName | string | 是 | 用户昵称 |
| userInfo.avatarUrl | string | 是 | 用户头像地址 |
**响应结果**:
```json
{
"code": 200,
"msg": "登录成功",
"data": {
"token": "xxxxxxx",
"openid": "xxxxxxx"
}
}
```
### 1.2 用户信息获取接口
**接口说明**: 获取当前登录用户的详细信息
**请求URL**: `/api/user/info`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"nickName": "用户昵称",
"avatarUrl": "头像URL",
"openid": "用户openid",
"balance": 100,
"vipStatus": true,
"vipExpireDate": "2024-12-31"
}
}
```
### 1.3 退出登录接口
**接口说明**: 用户退出登录
**请求URL**: `/api/user/logout`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**响应结果**:
```json
{
"code": 200,
"msg": "退出成功",
"data": null
}
```
## 剧本管理接口
### 2.1 保存剧本接口
**接口说明**: 创建或更新用户剧本
**请求URL**: `/api/script/save`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| id | number | 否 | 剧本ID不传则为新建 |
| title | string | 是 | 剧本标题 |
| type | string | 是 | 剧本类型 |
| content | string | 是 | 剧本内容 |
**响应结果**:
```json
{
"code": 200,
"msg": "保存成功",
"data": {
"id": 1,
"title": "剧本标题",
"type": "剧本类型",
"createTime": "2023-01-01 12:00:00"
}
}
```
### 2.2 获取剧本列表接口
**接口说明**: 获取用户创建的剧本列表
**请求URL**: `/api/script/list`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认10 |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"total": 100,
"list": [
{
"id": 1,
"title": "剧本标题1",
"type": "台词腔",
"createTime": "2023-01-01 12:00:00"
},
{
"id": 2,
"title": "剧本标题2",
"type": "人妻",
"createTime": "2023-01-02 12:00:00"
}
]
}
}
```
### 2.3 获取剧本详情接口
**接口说明**: 获取单个剧本的详细信息
**请求URL**: `/api/script/detail`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| id | number | 是 | 剧本ID |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"id": 1,
"title": "剧本标题",
"type": "剧本类型",
"content": "剧本内容",
"createTime": "2023-01-01 12:00:00",
"updateTime": "2023-01-01 12:00:00"
}
}
```
### 2.4 删除剧本接口
**接口说明**: 删除用户创建的剧本
**请求URL**: `/api/script/delete`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| id | number | 是 | 剧本ID |
**响应结果**:
```json
{
"code": 200,
"msg": "删除成功",
"data": null
}
```
## 声音克隆接口
### 3.1 上传声音样本接口
**接口说明**: 上传用户录制的声音样本
**请求URL**: `/api/voice/upload`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
| Content-Type | string | 是 | multipart/form-data |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| file | file | 是 | 声音文件支持mp3、wav格式 |
| duration | number | 是 | 音频时长(秒) |
**响应结果**:
```json
{
"code": 200,
"msg": "上传成功",
"data": {
"sampleId": "sample123",
"url": "https://example.com/samples/sample123.mp3",
"duration": 25
}
}
```
### 3.2 开始声音克隆接口
**接口说明**: 根据上传的样本开始声音克隆
**请求URL**: `/api/voice/clone`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| sampleIds | array | 是 | 样本ID数组 |
| name | string | 是 | 克隆声音名称 |
**响应结果**:
```json
{
"code": 200,
"msg": "克隆任务已提交",
"data": {
"taskId": "task123",
"status": "processing",
"estimatedTime": 300
}
}
```
### 3.3 获取声音克隆状态接口
**接口说明**: 查询声音克隆任务状态
**请求URL**: `/api/voice/status`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| taskId | string | 是 | 克隆任务ID |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"taskId": "task123",
"status": "completed", // processing, completed, failed
"progress": 100,
"result": {
"voiceId": "voice123",
"name": "我的声音",
"previewUrl": "https://example.com/preview/voice123.mp3"
}
}
}
```
### 3.4 获取克隆声音列表接口
**接口说明**: 获取用户的声音克隆列表
**请求URL**: `/api/voice/list`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认10 |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"total": 5,
"list": [
{
"voiceId": "voice123",
"name": "我的声音1",
"previewUrl": "https://example.com/preview/voice123.mp3",
"createTime": "2023-01-01 12:00:00"
},
{
"voiceId": "voice124",
"name": "我的声音2",
"previewUrl": "https://example.com/preview/voice124.mp3",
"createTime": "2023-01-02 12:00:00"
}
]
}
}
```
## 首页内容接口
### 4.1 获取剧情角色列表接口
**接口说明**: 获取首页剧情角色列表
**请求URL**: `/api/home/drama`
**请求方式**: GET
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认10 |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"total": 10,
"list": [
{
"id": 1,
"title": "白领女友的温柔早安",
"tag": "台词腔",
"cover": "https://example.com/images/drama1.jpg"
},
{
"id": 2,
"title": "豪门女主的秘密生活",
"tag": "人妻",
"cover": "https://example.com/images/drama2.jpg"
}
]
}
}
```
### 4.2 获取AI声音列表接口
**接口说明**: 获取首页AI声音列表
**请求URL**: `/api/home/voice`
**请求方式**: GET
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认10 |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"total": 8,
"list": [
{
"id": 1,
"title": "甜美少女音",
"tag": "少女",
"cover": "https://example.com/images/voice1.jpg"
},
{
"id": 2,
"title": "性感成熟音",
"tag": "成熟",
"cover": "https://example.com/images/voice2.jpg"
}
]
}
}
```
### 4.3 获取角色详情接口
**接口说明**: 获取角色详细信息
**请求URL**: `/api/role/detail`
**请求方式**: GET
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| id | number | 是 | 角色ID |
**响应结果**:
```json
{
"code": 200,
"msg": "获取成功",
"data": {
"id": 1,
"title": "白领女友的温柔早安",
"tag": "台词腔",
"cover": "https://example.com/images/drama1.jpg",
"description": "角色描述信息",
"previewUrl": "https://example.com/preview/drama1.mp3",
"scripts": [
{
"id": 101,
"title": "脚本1"
},
{
"id": 102,
"title": "脚本2"
}
]
}
}
```
### 4.4 使用角色接口
**接口说明**: 用户使用特定角色
**请求URL**: `/api/role/use`
**请求方式**: POST
**请求头**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| Authorization | string | 是 | 用户token格式为"Bearer {token}" |
**请求参数**:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| roleId | number | 是 | 角色ID |
| scriptId | number | 是 | 脚本ID |
**响应结果**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"taskId": "task456",
"status": "processing"
}
}
```