574 lines
11 KiB
Markdown
574 lines
11 KiB
Markdown
# 后端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"
|
||
}
|
||
}
|
||
``` |