281 lines
5.9 KiB
Plaintext
281 lines
5.9 KiB
Plaintext
|
视频观看模块接口文档
|
|||
|
=================
|
|||
|
|
|||
|
基础信息
|
|||
|
-------
|
|||
|
- 基础路径: /api/v1/videos
|
|||
|
- 请求方式: REST
|
|||
|
- 数据格式: JSON
|
|||
|
- 认证方式: Bearer Token
|
|||
|
|
|||
|
数据结构
|
|||
|
-------
|
|||
|
|
|||
|
Video 视频对象:
|
|||
|
{
|
|||
|
id: number, // 视频ID
|
|||
|
title: string, // 视频标题
|
|||
|
description: string, // 视频描述
|
|||
|
url: string, // 视频URL
|
|||
|
thumbnail: string, // 缩略图URL
|
|||
|
duration: string, // 视频时长
|
|||
|
category: string, // 视频分类
|
|||
|
views: number, // 观看次数
|
|||
|
likes: number, // 点赞数
|
|||
|
comments: number, // 评论数
|
|||
|
tags: string[], // 标签
|
|||
|
uploadTime: string, // 上传时间
|
|||
|
status: string // 视频状态(active/disabled)
|
|||
|
}
|
|||
|
|
|||
|
API 接口
|
|||
|
-------
|
|||
|
|
|||
|
1. 获取视频列表
|
|||
|
GET /api/v1/videos
|
|||
|
|
|||
|
请求参数:
|
|||
|
| 参数名 | 类型 | 必填 | 说明 |
|
|||
|
| category | string | 否 | 视频分类 |
|
|||
|
| page | number | 否 | 页码,默认1 |
|
|||
|
| size | number | 否 | 每页数量,默认10 |
|
|||
|
| sort | string | 否 | 排序字段(uploadTime/views/likes) |
|
|||
|
| order | string | 否 | 排序方式(asc/desc) |
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"total": 100,
|
|||
|
"pages": 10,
|
|||
|
"current": 1,
|
|||
|
"records": [
|
|||
|
{
|
|||
|
"id": 1,
|
|||
|
"title": "每日健康操",
|
|||
|
"description": "适合老年人的健康运动视频",
|
|||
|
"url": "http://example.com/video1.mp4",
|
|||
|
"thumbnail": "http://example.com/thumb1.jpg",
|
|||
|
"duration": "10:00",
|
|||
|
"category": "health",
|
|||
|
"views": 1234,
|
|||
|
"likes": 256,
|
|||
|
"comments": 45,
|
|||
|
"tags": ["健康", "运动", "教学"],
|
|||
|
"uploadTime": "2024-03-20 10:00:00",
|
|||
|
"status": "active"
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
2. 获取视频详情
|
|||
|
GET /api/v1/videos/{id}
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"id": 1,
|
|||
|
"title": "每日健康操",
|
|||
|
"description": "适合老年人的健康运动视频",
|
|||
|
"url": "http://example.com/video1.mp4",
|
|||
|
"thumbnail": "http://example.com/thumb1.jpg",
|
|||
|
"duration": "10:00",
|
|||
|
"category": "health",
|
|||
|
"views": 1234,
|
|||
|
"likes": 256,
|
|||
|
"comments": 45,
|
|||
|
"tags": ["健康", "运动", "教学"],
|
|||
|
"uploadTime": "2024-03-20 10:00:00",
|
|||
|
"status": "active"
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
3. 更新观看次数
|
|||
|
POST /api/v1/videos/{id}/view
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"views": 1235
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
4. 点赞视频
|
|||
|
POST /api/v1/videos/{id}/like
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"likes": 257
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
5. 获取推荐视频
|
|||
|
GET /api/v1/videos/recommended
|
|||
|
|
|||
|
请求参数:
|
|||
|
| 参数名 | 类型 | 必填 | 说明 |
|
|||
|
| currentId | number | 否 | 当前视频ID |
|
|||
|
| limit | number | 否 | 返回数量,默认3 |
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": [
|
|||
|
{
|
|||
|
"id": 2,
|
|||
|
"title": "太极拳教学",
|
|||
|
"description": "专业老师讲解太极拳基本动作",
|
|||
|
"url": "http://example.com/video2.mp4",
|
|||
|
"thumbnail": "http://example.com/thumb2.jpg",
|
|||
|
"duration": "15:00",
|
|||
|
"category": "health",
|
|||
|
"views": 890,
|
|||
|
"likes": 156,
|
|||
|
"comments": 23,
|
|||
|
"tags": ["太极拳", "运动", "教学"],
|
|||
|
"uploadTime": "2024-03-19 15:00:00",
|
|||
|
"status": "active"
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
|
|||
|
6. 获取热门视频
|
|||
|
GET /api/v1/videos/hot
|
|||
|
|
|||
|
请求参数:
|
|||
|
| 参数名 | 类型 | 必填 | 说明 |
|
|||
|
| limit | number | 否 | 返回数量,默认5 |
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": [
|
|||
|
{
|
|||
|
"id": 3,
|
|||
|
"title": "广场舞教学",
|
|||
|
"description": "广场舞基础动作教学",
|
|||
|
"url": "http://example.com/video3.mp4",
|
|||
|
"thumbnail": "http://example.com/thumb3.jpg",
|
|||
|
"duration": "20:00",
|
|||
|
"category": "entertainment",
|
|||
|
"views": 2345,
|
|||
|
"likes": 456,
|
|||
|
"comments": 78,
|
|||
|
"tags": ["广场舞", "运动", "教学"],
|
|||
|
"uploadTime": "2024-03-18 14:00:00",
|
|||
|
"status": "active"
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
|
|||
|
7. 获取视频分类
|
|||
|
GET /api/v1/videos/categories
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": [
|
|||
|
{
|
|||
|
"value": "health",
|
|||
|
"label": "健康讲座",
|
|||
|
"count": 25
|
|||
|
},
|
|||
|
{
|
|||
|
"value": "entertainment",
|
|||
|
"label": "娱乐节目",
|
|||
|
"count": 18
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
|
|||
|
8. 添加视频评论
|
|||
|
POST /api/v1/videos/{id}/comments
|
|||
|
|
|||
|
请求参数:
|
|||
|
{
|
|||
|
"content": "视频很有帮助",
|
|||
|
"parentId": null // 回复其他评论时设置
|
|||
|
}
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"id": 1,
|
|||
|
"content": "视频很有帮助",
|
|||
|
"userId": 10001,
|
|||
|
"userName": "张三",
|
|||
|
"createTime": "2024-03-20 15:30:00",
|
|||
|
"parentId": null,
|
|||
|
"likes": 0
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
9. 获取视频评论列表
|
|||
|
GET /api/v1/videos/{id}/comments
|
|||
|
|
|||
|
请求参数:
|
|||
|
| 参数名 | 类型 | 必填 | 说明 |
|
|||
|
| page | number | 否 | 页码,默认1 |
|
|||
|
| size | number | 否 | 每页数量,默认10 |
|
|||
|
|
|||
|
响应示例:
|
|||
|
{
|
|||
|
"code": 200,
|
|||
|
"message": "success",
|
|||
|
"data": {
|
|||
|
"total": 45,
|
|||
|
"pages": 5,
|
|||
|
"current": 1,
|
|||
|
"records": [
|
|||
|
{
|
|||
|
"id": 1,
|
|||
|
"content": "视频很有帮助",
|
|||
|
"userId": 10001,
|
|||
|
"userName": "张三",
|
|||
|
"createTime": "2024-03-20 15:30:00",
|
|||
|
"parentId": null,
|
|||
|
"likes": 5,
|
|||
|
"replies": []
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
错误码说明
|
|||
|
--------
|
|||
|
| 错误码 | 说明 |
|
|||
|
| 200 | 成功 |
|
|||
|
| 400 | 请求参数错误 |
|
|||
|
| 401 | 未授权 |
|
|||
|
| 403 | 禁止访问 |
|
|||
|
| 404 | 资源不存在 |
|
|||
|
| 500 | 服务器内部错误 |
|
|||
|
|
|||
|
注意事项
|
|||
|
-------
|
|||
|
1. 视频文件上传需要单独处理,建议使用分片上传:
|
|||
|
POST /api/v1/videos/upload
|
|||
|
Content-Type: multipart/form-data
|
|||
|
|
|||
|
2. 视频URL需要进行加密和有效期控制,防止视频泄露。
|
|||
|
|
|||
|
3. 视频播放建议使用 HLS 或 DASH 协议,支持多码率自适应。
|
|||
|
|
|||
|
4. 缓存策略:
|
|||
|
- 视频元数据缓存:5分钟
|
|||
|
- 视频分类缓存:1小时
|
|||
|
- 热门视频缓存:10分钟
|