2024-12-08 18:42:46 +08:00
|
|
|
|
\# 视频模块接口文档
|
|
|
|
|
|
|
|
|
|
\## 基础信息
|
2024-12-08 15:28:12 +08:00
|
|
|
|
|
|
|
|
|
- 基础路径: `/api/videos`
|
|
|
|
|
- 请求头: 需要携带 `Authorization: Bearer {token}` (除了获取视频列表和视频详情)
|
|
|
|
|
|
2024-12-08 18:42:46 +08:00
|
|
|
|
\## 接口列表
|
|
|
|
|
|
|
|
|
|
\### 1. 上传视频
|
|
|
|
|
|
|
|
|
|
POST /api/videos/upload
|
|
|
|
|
|
|
|
|
|
// 请求参数 (multipart/form-data)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
file: File, // 视频文件
|
|
|
|
|
|
|
|
|
|
title: string, // 视频标题
|
|
|
|
|
|
|
|
|
|
description: string, // 视频描述
|
|
|
|
|
|
|
|
|
|
tags?: string // 视频标签,可选,多个标签用逗号分隔
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number, // 200表示成功
|
|
|
|
|
|
|
|
|
|
message: string, // 响应消息
|
|
|
|
|
|
|
|
|
|
data: {
|
|
|
|
|
|
|
|
|
|
id: number, // 视频ID
|
|
|
|
|
|
|
|
|
|
title: string, // 视频标题
|
|
|
|
|
|
|
|
|
|
description: string, // 视频描述
|
|
|
|
|
|
|
|
|
|
url: string, // 视频URL
|
|
|
|
|
|
|
|
|
|
coverUrl: string, // 封面URL
|
|
|
|
|
|
|
|
|
|
duration: number, // 视频时长(秒)
|
|
|
|
|
|
|
|
|
|
size: number, // 文件大小(字节)
|
|
|
|
|
|
|
|
|
|
status: string, // 状态:DRAFT-草稿,PUBLISHED-已发布,DELETED-已删除
|
|
|
|
|
|
|
|
|
|
userId: number, // 上传用户ID
|
|
|
|
|
|
|
|
|
|
username: string, // 上传用户名
|
|
|
|
|
|
|
|
|
|
createdTime: string, // 创建时间
|
|
|
|
|
|
|
|
|
|
updatedTime: string, // 更新时间
|
|
|
|
|
|
|
|
|
|
viewCount: number, // 观看次数
|
|
|
|
|
|
|
|
|
|
likeCount: number, // 点赞次数
|
|
|
|
|
|
|
|
|
|
tags: string, // 标签
|
|
|
|
|
|
|
|
|
|
hasLiked: boolean // 当前用户是否已点赞
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 2. 获取视频列表
|
|
|
|
|
|
|
|
|
|
GET /api/videos?pageNum=1&pageSize=10&keyword=xxx
|
|
|
|
|
|
|
|
|
|
// 请求参数 (query)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
pageNum?: number, // 页码,默认1
|
|
|
|
|
|
|
|
|
|
pageSize?: number, // 每页条数,默认10
|
|
|
|
|
|
|
|
|
|
keyword?: string // 搜索关键词,可选
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: {
|
|
|
|
|
|
|
|
|
|
records: Array<{ // 视频列表
|
|
|
|
|
|
|
|
|
|
id: number,
|
|
|
|
|
|
|
|
|
|
title: string,
|
|
|
|
|
|
|
|
|
|
description: string,
|
|
|
|
|
|
|
|
|
|
url: string,
|
|
|
|
|
|
|
|
|
|
coverUrl: string,
|
|
|
|
|
|
|
|
|
|
duration: number,
|
|
|
|
|
|
|
|
|
|
size: number,
|
|
|
|
|
|
|
|
|
|
status: string,
|
|
|
|
|
|
|
|
|
|
userId: number,
|
|
|
|
|
|
|
|
|
|
username: string,
|
|
|
|
|
|
|
|
|
|
createdTime: string,
|
|
|
|
|
|
|
|
|
|
updatedTime: string,
|
|
|
|
|
|
|
|
|
|
viewCount: number,
|
|
|
|
|
|
|
|
|
|
likeCount: number,
|
|
|
|
|
|
|
|
|
|
tags: string,
|
|
|
|
|
|
|
|
|
|
hasLiked: boolean
|
|
|
|
|
|
|
|
|
|
}>,
|
|
|
|
|
|
|
|
|
|
total: number, // 总记录数
|
|
|
|
|
|
|
|
|
|
size: number, // 每页条数
|
|
|
|
|
|
|
|
|
|
current: number, // 当前页码
|
|
|
|
|
|
|
|
|
|
pages: number // 总页数
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 3. 获取视频详情
|
|
|
|
|
|
|
|
|
|
GET /api/videos/{id}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: {
|
|
|
|
|
|
|
|
|
|
id: number,
|
|
|
|
|
|
|
|
|
|
title: string,
|
|
|
|
|
|
|
|
|
|
description: string,
|
|
|
|
|
|
|
|
|
|
url: string,
|
|
|
|
|
|
|
|
|
|
coverUrl: string,
|
|
|
|
|
|
|
|
|
|
duration: number,
|
|
|
|
|
|
|
|
|
|
size: number,
|
|
|
|
|
|
|
|
|
|
status: string,
|
|
|
|
|
|
|
|
|
|
userId: number,
|
|
|
|
|
|
|
|
|
|
username: string,
|
|
|
|
|
|
|
|
|
|
createdTime: string,
|
|
|
|
|
|
|
|
|
|
updatedTime: string,
|
|
|
|
|
|
|
|
|
|
viewCount: number,
|
|
|
|
|
|
|
|
|
|
likeCount: number,
|
|
|
|
|
|
|
|
|
|
tags: string,
|
|
|
|
|
|
|
|
|
|
hasLiked: boolean
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 4. 更新视频信息
|
|
|
|
|
|
|
|
|
|
PUT /api/videos/{id}
|
|
|
|
|
|
|
|
|
|
// 请求体
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
title: string,
|
|
|
|
|
|
|
|
|
|
description: string,
|
|
|
|
|
|
|
|
|
|
tags?: string
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: VideoDTO // 同上面的视频详情
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 5. 删除视频
|
|
|
|
|
|
|
|
|
|
DELETE /api/videos/{id}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: null
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 6. 视频点赞/取消点赞
|
|
|
|
|
|
|
|
|
|
POST /api/videos/{id}/like
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: null
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 7. 增加观看次数
|
|
|
|
|
|
|
|
|
|
POST /api/videos/{id}/view
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: null
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 8. 获取推荐视频
|
|
|
|
|
|
|
|
|
|
GET /api/videos/recommend?limit=10
|
|
|
|
|
|
|
|
|
|
// 请求参数 (query)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
limit?: number // 返回数量,默认10
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: Array<VideoDTO> // 视频列表
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\### 9. 获取相似视频
|
|
|
|
|
|
|
|
|
|
GET /api/videos/{id}/similar?limit=10
|
|
|
|
|
|
|
|
|
|
// 请求参数 (query)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
limit?: number // 返回数量,默认10
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 响应
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
code: number,
|
|
|
|
|
|
|
|
|
|
message: string,
|
|
|
|
|
|
|
|
|
|
data: Array<VideoDTO> // 视频列表
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\## 错误码说明
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
200: "操作成功",
|
|
|
|
|
|
|
|
|
|
400: "请求参数错误",
|
|
|
|
|
|
|
|
|
|
401: "未登录或token已过期",
|
|
|
|
|
|
|
|
|
|
403: "无权限执行此操作",
|
|
|
|
|
|
|
|
|
|
404: "资源不存在",
|
|
|
|
|
|
|
|
|
|
500: "服务器内部错误"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\## 数据结构
|
|
|
|
|
|
|
|
|
|
\### VideoDTO
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
id: number; // 视频ID
|
|
|
|
|
|
|
|
|
|
title: string; // 视频标题
|
|
|
|
|
|
|
|
|
|
description: string; // 视频描述
|
|
|
|
|
|
|
|
|
|
url: string; // 视频URL
|
|
|
|
|
|
|
|
|
|
coverUrl: string; // 封面URL
|
|
|
|
|
|
|
|
|
|
duration: number; // 视频时长(秒)
|
|
|
|
|
|
|
|
|
|
size: number; // 文件大小(字节)
|
|
|
|
|
|
|
|
|
|
status: string; // 状态:DRAFT-草稿,PUBLISHED-已发布,DELETED-已删除
|
|
|
|
|
|
|
|
|
|
userId: number; // 上传用户ID
|
|
|
|
|
|
|
|
|
|
username: string; // 上传用户名
|
|
|
|
|
|
|
|
|
|
createdTime: string; // 创建时间
|
|
|
|
|
|
|
|
|
|
updatedTime: string; // 更新时间
|
|
|
|
|
|
|
|
|
|
viewCount: number; // 观看次数
|
|
|
|
|
|
|
|
|
|
likeCount: number; // 点赞次数
|
|
|
|
|
|
|
|
|
|
tags: string; // 标签,多个用逗号分隔
|
|
|
|
|
|
|
|
|
|
hasLiked: boolean; // 当前用户是否已点赞
|
2024-12-08 15:28:12 +08:00
|
|
|
|
|
2024-12-08 18:42:46 +08:00
|
|
|
|
}
|