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

4.3 KiB
Raw Permalink Blame History

# 视频模块接口文档

## 基础信息

  • 基础路径: /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 // 视频列表

}

### 9. 获取相似视频

GET /api/videos/{id}/similar?limit=10

// 请求参数 (query)

{

limit?: number // 返回数量默认10

}

// 响应

{

code: number,

message: string,

data: Array // 视频列表

}

## 错误码说明

{

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; // 当前用户是否已点赞

}