379 lines
4.3 KiB
Markdown
379 lines
4.3 KiB
Markdown
\# 视频模块接口文档
|
||
|
||
\## 基础信息
|
||
|
||
- 基础路径: `/api/videos`
|
||
- 请求头: 需要携带 `Authorization: Bearer {token}` (除了获取视频列表和视频详情)
|
||
|
||
\## 接口列表
|
||
|
||
\### 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; // 当前用户是否已点赞
|
||
|
||
}
|