yl-backend/docs/api/video-api.txt

218 lines
4.5 KiB
Plaintext
Raw Normal View History

2024-12-08 15:28:12 +08:00
# 视频模块接口文档
## 基础信息
- 基础路径: `/api/videos`
2024-12-08 18:42:46 +08:00
- 请求头: 需要携带 `Authorization: Bearer {token}` (除了获取视频列表和视频详情)
2024-12-08 15:28:12 +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; // 当前用户是否已点赞
}