在这里下载文档 ↓
- 数据库25张表细致考虑保证满足你的起步需要!点我获取设计图
- 文档对应枚举码
result
结果集包 点我去复制
博主很努力很认真的写出来了!真心希望能帮到你!如果帮到你的话, 希望能点个关注!如果不想的话那那那点赞或收藏也行鸭 ~(。•̀ᴗ-)✧
title: bilibili
language_tabs:
- shell: Shell
- http: HTTP
- javascript: JavaScript
- ruby: Ruby
- python: Python
- php: PHP
- java: Java
- go: Go
toc_footers: []
includes: []
search: true
code_clipboard: true
highlight_theme: darkula
headingLevel: 2
generator: “@tarslib/widdershins v4.0.23”
bilibili
.
用户/用户帐号
POST 用户登录
POST /user-accounts/login
用户登录时, 成功则拦截下发JWT令牌, 失败则退回页面
Body 请求参数
{
"account": "zs123123",
"pwd": "123456"
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
body | body | object | 否 | none |
» account | body | string | 是 | none |
» pwd | body | string | 是 | none |
返回示例
200-OK、500-INTERNAL_ERROR 、401-NOT_AUTH
{
"code": 200,
"msg": "登录成功",
"data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOm51bGwsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTczMzIxMDE3OX0.2Fs3N-iT0dFue4zZcO1GL90cW5ZHNjkPPtQEeJJaIS8"
}
{
"code": 500,
"msg": "服务器出现错误!",
"data": null
}
{
"code": 401,
"msg": "账号或密码不正确",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR 、401-NOT_AUTH | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | string | true | none | none |
GET 查询账号是否被占用
GET /user-accounts/{account}
根据账号检查是否被占用
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
account | path | string | 是 | none |
返回示例
200-OK、500-INTERNAL_ERROR、409-CONFLICT
{
"code": 200,
"msg": "账号可用",
"data": true
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 409,
"msg": "该账号已被占用",
"data": false
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR、409-CONFLICT | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | boolean | true | none | 被占用false 可用true 异常null |
POST 用户注册
POST /user-accounts/register
用户注册
- 注册成功后自动跳转登录, 返回token令牌
- 后端应该做事务处理
Body 请求参数
{
"account": "zs123123",
"pwd": "123123"
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
body | body | object | 否 | none |
» account | body | string | 是 | none |
» pwd | body | string | 是 | none |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "注册成功",
"data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTczNDIyNTM2MH0.uR1D84PDU39RuP7a6XZWDDveg1qWXCEMSibEunvWLOY"
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | string | true | none | jwt |
PUT 更改密码
PUT /user-accounts/pwd-update
更改密码
根据用户编号更改用户账号密码
- 后端应该做事务处理
Body 请求参数
{
"uId": 1,
"pwd": "123123"
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | none |
» pwd | body | string | 是 | 要更改的密码 | none |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "修改成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
PUT 账号注销
PUT /user-accounts/cancel
账号注销
根据用户id, 后端处理改变账号状态
- 后端应该做事务处理
Body 请求参数
{
"uId": 1
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
status | query | string | 否 | 前端无需传递,该值由后端自动设置,表示账号是否正常。 | |
body | body | object | 否 | none | |
» uId | body | integer | 是 | none |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "账号注销成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
用户/用户
GET 个人资料
GET /users/{u-id}
- 以当前用户编号 {u-id}
- 获取用户基本信息 {user}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | integer | 是 | 用户ID |
返回示例
200-OK、500-INTERNAL_ERROR、401-NOT_AUTH
{
"code": 200,
"msg": "success",
"data": {
"uId": 123,
"name": "张三",
"picture": "http://xxx.jpg",
"phone": "13812345678",
"email": "zhangsan@example.com",
"gender": 1,
"remark": "这是一个简介",
"fansNum": 100,
"concernsNum": 50,
"likeNum": 200,
"collectNum": 100,
"issueNum": 50,
"commentNum": 100
}
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR、401-NOT_AUTH | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | object | true | none | none | |
»» uId | integer | true | none | none | |
»» name | string | true | none | none | |
»» picture | string | true | none | none | |
»» phone | string | true | none | none | |
string | true | none | none | ||
»» gender | integer | true | none | none | |
»» remark | string | true | none | none | |
»» fansNum | integer | true | none | none | |
»» concernsNum | integer | true | none | none | |
»» likeNum | integer | true | none | none | |
»» collectNum | integer | true | none | none | |
»» issueNum | integer | true | none | none | |
»» commentNum | integer | true | none | none | |
»» acId | integer | true | none | none |
GET 模糊匹配所有用户
GET /users/{name}
模糊查询
- 根据姓名对用户进行模糊匹配
- 返回所有账号状态 0(注销) 和 1(正常) 的用户
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
name | path | string | 是 | none |
返回示例
OK
{
"code": 200,
"msg": "success",
"data": [
{
"uId": 123,
"name": "张三",
"picture": "http://xxx.jpg",
"phone": "13812345678",
"email": "zhangsan@example.com",
"gender": 1,
"remark": "你好我是张三",
"fansNum": 100,
"concernsNum": 50,
"likeNum": 200,
"collectNum": 100,
"issueNum": 50,
"commentNum": 100,
"userAccount": {
"acId": 1,
"status": "1"
}
},
"..."
]
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | OK | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» uId | integer | false | none | none | |
»» name | string | false | none | none | |
»» picture | string | false | none | none | |
»» phone | string | false | none | none | |
string | false | none | none | ||
»» gender | integer | false | none | none | |
»» remark | string | false | none | none | |
»» fansNum | integer | false | none | none | |
»» concernsNum | integer | false | none | none | |
»» likeNum | integer | false | none | none | |
»» collectNum | integer | false | none | none | |
»» issueNum | integer | false | none | none | |
»» commentNum | integer | false | none | none | |
»» userAccount | object | false | none | none | |
»»» acId | integer | true | none | none | |
»»» status | string | true | none | none |
PUT 更新用户资料
PUT /users
- 当前用户 {uId}
- 正在更改自己的信息 {user}
Body 请求参数
{
"uId": 1,
"name": "张三",
"phone": "18967123781",
"email": "zhangsan@qq.com",
"gender": 0,
"remark": "这个人很懒"
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» name | body | string | 是 | none | |
» phone | body | string | 是 | none | |
body | string | 是 | none | ||
» gender | body | integer | 是 | none | |
» remark | body | string | 是 | none |
返回示例
NOT_CONTENT
{
"code": 204,
"msg": "更新成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | NOT_CONTENT | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
POST 头像上传
POST /users/picture-upload
Body 请求参数
picture: file://C:\Users\贤\Pictures\86097313_p0.jpg
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» picture | body | string(binary) | 否 | 用户头像 |
返回示例
201-CREATED、500-INTERNAL_ERROR、400-BAD_REQUEST、401-NOT_AUTH
{
"code": 201,
"msg": "上传成功",
"data": "localhost:8080//xxx.jpg"
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 400,
"msg": "上传文件过大",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR、400-BAD_REQUEST、401-NOT_AUTH | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | string | true | none | none |
用户/用户/用户关注
GET 获取关注列表
GET /users-concerns/{u-id}/concerns
- 当前用户 {u-id}
- 关注列表 {user_concern}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | integer | 是 | 我的编号 |
返回示例
200-OK、500-INTERNAL_ERROR
{
"code": 200,
"msg": "success",
"data": [
{
"id": 1,
"user": {
"uId": 2,
"name": "卓卓脑婆",
"picture": "xxx.jpg",
"remark": "无团队纯个人..."
},
"concernTime": "2021-12-23 06:10:22"
}
]
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | 返回的是当前用户的关注对象 | |
»» id | integer | false | none | none | |
»» user | object | false | none | none |
DELETE 取消关注
DELETE /user-concerns/cancel/{id}
取消关注
- 根据关注列表编号 {id} 进行删除
- 后端应该做事务处理
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
id | path | integer | 是 | 关注列表编号 |
返回示例
OK
{
"code": 204,
"msg": "已取消关注",
"data": null
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | OK | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
POST 关注某人
POST /user-concerns/concern
- 获取当前用户 {uId}
- 获取被关注的用户 {concernId}
- 放入用户关注列表 {userConcern}
后端应该做事务处理
Body 请求参数
{
"uId": 1,
"concernId": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | ID | 我 |
» concernId | body | integer | 是 | ID | 被关注的人 |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "关注成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
用户/用户收藏
GET 用户收藏夹列表
GET /user-collects/{u-id}/folders
后端
- 统计每个收藏夹的收藏总量
- 按格式返回当前用户的所有收藏夹
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | integer | 是 | 当前用户编号 |
返回示例
200-OK、500-INTERNAL_ERROR
{
"code": 200,
"msg": "success",
"data": [
{
"cfId": 1,
"name": "收藏夹A",
"collectCounts": 12
}
]
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» cfId | integer | false | none | 类型编号 | |
»» name | string | false | none | 收藏夹名字 | |
»» collectCounts | integer | true | none | 收藏的总数 |
POST 收藏作品
POST /user-collects/collect
收藏某个作品, 并放进选择的收藏夹
前端
- isChose : 是否选择收藏夹,false 则放入默认收藏夹
后端
- 通过当前用户①{uId}、收藏的作品②{issId}、选择的收藏夹③{cf_id}进行收藏
- 后端应该做事务处理
Body 请求参数
{
"uId": 1,
"issId": 1,
"cfId": 1
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | 当前用户 |
» issId | body | integer | 是 | 作品编号 | 收藏的作品编号 |
» cfId | body | integer | 是 | 收藏夹编号 | 放进那个收藏夹 |
返回示例
CREATED
{
"code": 201,
"msg": "收藏成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现错误",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 取消收藏
DELETE /user-collects/{iss-id}/cancel
取消收藏
用户对已收藏做取消收藏
- 通过用户编号①(u_id) 和 收藏编号②(uc_id) 在用户收藏列表③(user_collect)中删除
- 后端做事务处理
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
iss-id | path | string | 是 | none |
返回示例
{
"code": 201,
"msg": "删除成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | none | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 打开收藏夹
GET /user-collects/folders
- 打开用户{u_id}
- 点击的收藏夹{cf_id},
- 显示里面包含的收藏内容{user_collect}
前端
视频发布时间格式说明:
- 当天内:显示为 “X 分钟前” 或 “X 小时前”
- 昨天:显示为 “昨天”
- 今年内:显示为 “MM-dd”
- 今年外:显示为 “yyyy-MM-dd”
Body 请求参数
{
"uId": 1,
"cfId": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | 当前用户 |
» cfId | body | integer | 是 | 收藏夹编号 | 点击的收藏夹 |
返回示例
200-OK、500-INTERNAL_ERROR
{
"code": 200,
"msg": "success",
"data": [
{
"ucId": 1,
"video": {
"id": 2,
"cover": "https://xxx.jpg",
"title": "一键三连变成女孩子是坠可爱的",
"creTime": "2020-10-20 12:06:12",
"collectNum": 999999,
"watchNum": 100000000000,
"author": {
"id": 3,
"name": "略nb"
},
"duration": 122
},
"creTime": "2020年10月20日 12:06:12"
}
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR | Inline |
500 | Internal Server Error | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» ucId | integer | false | none | 收藏编号 | none |
»» video | object | false | none | 视频对象 | none |
»»» id | integer | true | none | 视频编号 | none |
»»» cover | string | true | none | 封面 | none |
»»» title | string | true | none | 标题 | none |
»»» creTime | string | true | none | 发布时间 | none |
»»» collectNum | integer | true | none | 收藏量 | none |
»»» watchNum | integer | true | none | 观看量 | none |
»»» author | object | true | none | 作者对象 | none |
»»»» id | integer | true | none | 作者编号 | none |
»»»» name | string | true | none | 作者昵称 | none |
»»» duration | integer | true | none | 视频时长 | none |
»» creTime | string | false | none | 收藏时间 | none |
状态码 500
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
PUT 更新收藏夹
PUT /user-collects/folders
对收藏夹信息进行更改
Body 请求参数
{
"uId": 1,
"cover": "xxx02.jpg",
"name": "精选收藏夹02",
"creTime": "2020-12-03",
"remark": ""
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "更新成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 删除收藏夹
DELETE /user-collects/folders
- 删除收藏夹 (collect-folder)
- 同时批量删除包含的收藏 (collect) (类似于
部门解散
) - 后端应该做事务管理
Body 请求参数
{
"uId": 1,
"cfId": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | 获取当前操作的用户 |
» cfId | body | integer | 是 | 收藏夹编号 | 传递操作的收藏夹 |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "删除成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
POST 创建收藏夹
POST /user-collects/folders/create-1
两种方式创建收藏夹
第一种方式 : “直接在收藏页面中创建收藏夹”
- 获取当前的用户编号
Body 请求参数
"{\r\n \"collectFolder\":{\r\n \"cover\":\"xxx.jpg\",\r\n \"name\":\"精选收藏夹\",\r\n // \"creTime\":\"2020-12-02\",\r\n \"remark\":\"在这里输入描述\",\r\n \"uId\":1\r\n }\r\n}"
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» collectFolder | body | object | 是 | none | |
»» cover | body | string | 是 | none | |
»» name | body | string | 是 | none | |
»» remark | body | string | 是 | none | |
»» uId | body | integer | 是 | none |
返回示例
CREATED
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
POST 创建收藏夹2
POST /user-collects/folders/create-2
两种方式创建收藏夹
第二种方式 : “收藏作品的同时创建收藏夹”
- 先创建收藏夹, 主键回显
- 将作品放入该收藏夹
Body 请求参数
"{\r\n \"collectFolders\":{\r\n //\"cfId\" 等待回显\r\n \"uId\":1,\r\n \"cover\":\"xxx.jpg\",\r\n \"name\":\"精选收藏夹\",\r\n \"creTime\":\"2020-12-02\",\r\n \"remark\":\"在这里输入描述\"\r\n },\r\n \"userCollect\":{\r\n \"uId\": 1,\r\n \"issId\": 1,\r\n \"cfId\": -1 // 回显后替换\r\n }\r\n}\r\n"
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» collectFolders | body | object | 是 | 收藏夹 | none |
»» uId | body | integer | 是 | none | |
»» cover | body | string | 是 | none | |
»» name | body | string | 是 | none | |
»» creTime | body | string | 是 | none | |
»» remark | body | string | 是 | none | |
» userCollect | body | object | 是 | 用户收藏列表 | none |
»» uId | body | integer | 是 | none | |
»» issId | body | integer | 是 | none | |
»» cfId | body | integer | 是 | none |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "创建并收藏成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
评论
POST 发送评论
POST /comments/send
- 当前用户 {u_id}
- 在某个作品 {iss_id}
- 中
创建
评论 CREATE > comment
Body 请求参数
{
"comment": {
"content": "大佬好厉害",
"isSubcomment": false,
"uId": 1,
"issId": 2
}
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» comment | body | object | 是 | 评论对象 | none |
»» content | body | string | 是 | 内容 | none |
»» isSubcomment | body | boolean | 是 | 是否为字评论 | none |
»» uId | body | integer | 是 | 发评论的人 | none |
»» issId | body | integer | 是 | 评论的作品 | none |
返回示例
201-CREATED
{
"code": 201,
"msg": "success",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 评论撤回
DELETE /comment
- 当前用户{uId}
- 对自己的评论 {cmId}
- 进行撤回操作 Delete > comment
Body 请求参数
{
"uId": 0,
"cmId": 0
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | 当前用户编号 |
» cmId | body | integer | 是 | 评论编号 | 要撤回的评论编号 |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "撤回成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none | |
» anonymous | string | false | none | none |
POST 评论点赞
POST /comments/comment-likes
后端
步骤
当前用户 {uId}
对某个评论 {cmId}
进行点赞:
UPDATE > comment > like_num
CREATE > comment_like权重计算公式 : score = like_num / (time_now - create_time + 1) ^ 0.5
sql语句:
SET score = like_num / POW(TIMESTAMPDIFF(SECOND, create_time, NOW()) + 1, 0.5);
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
uId | query | integer | 否 | 当前用户 | |
cmId | query | integer | 否 | 点赞的评论 |
返回示例
201-CREATED
{
"code": 201,
"msg": "点赞成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 我的评论点赞列表
GET /comments/{u-id}/comment-likes
后端
- 时间应为当前DTO对象最新的点赞时间
前端
- 若点赞用户 >= 两个, 显示两个用户
- 若点赞时间在1分钟内, 显示为 ‘刚刚’
- 评论时间若在当天内则由分、小时顺序显示, 当天外则用 ‘yyyy-MM-dd’ 格式, 今年内的评论 格式为MM-dd, 昨天的评论显示 昨天
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | string | 是 | none |
返回示例
OK-200
{
"code": 200,
"msg": "success",
"data": [
{
"creTime": "2024年8月12日 11:49",
"users": [
{
"uId": 1,
"picture": "xx.jpg",
"name": "无聊"
},
{
"uId": 2,
"picture": "xx.jpg",
"name": "冉冉猫"
}
],
"comment": {
"cmId": 1,
"content": "好可爱",
"likeNum": 12
}
}
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | OK-200 | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» creTime | string | false | none | 最近的点赞时间 | none |
»» users | [object] | false | none | 点赞的前两个用户 | none |
»»» uId | integer | true | none | none | |
»»» name | string | true | none | none | |
»» comment | object | false | none | 我的评论 | none |
»»» cmId | integer | true | none | none | |
»»» content | string | true | none | none | |
»»» likeNum | integer | true | none | 点赞总数 | none |
GET 作品热门评论
GET /comments/{iss-id}/hot
通过视频编号获取属于该视频的所有评论
后端
- 额外过滤条件状态为1
- 若子评论数量 >=2 则显示两个子评论
- 若 2< 子评论数量, 则显示一个或零个
- 根据算力分 (score) 进行倒序排序
前端
- 根据是否为子评论给予不同样式
- 评论时间若在当天内则由分、小时顺序显示, 当天外则用 ‘yyyy-MM-dd’ 格式, 今年内的评论 格式为MM-dd, 昨天的评论显示 昨天
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
iss-id | path | integer | 是 | 作品编号 |
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"cmId": 1,
"content": "阿米诺斯",
"creTime": "2020年9月11日",
"status": 1,
"likeNum": 1200,
"replyNum": 29,
"isSubcomment": false,
"replies": [
{
"user": {
"uId": 3,
"picture": "https://丁真之笑.jpg",
"name": "钉珍"
},
"cmId": 2,
"content": "你怎么能说藏话"
},
{
"user": {
"uId": 3,
"picture": "https://丁之笑.jpg",
"name": "钉珍"
},
"cmId": 3,
"content": "藏话怎么能说你"
}
],
"user": {
"uId": 3,
"picture": "https://丁之笑.jpg",
"name": "钉珍"
}
},
"..."
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» cmId | integer | false | none | none | |
»» content | string | false | none | none | |
»» creTime | string | false | none | none | |
»» status | integer | false | none | 状态{ 0-撤回; 1-正常; 2-违规; 3-待审核 } | |
»» likeNum | integer | false | none | 点赞数 | |
»» replyNum | integer | false | none | 回复数 | |
»» isSubcomment | boolean | false | none | 是否为子评论 | |
»» replies | [object] | false | none | 回复的评论 | 回复 |
»»» user | object | true | none | 子评论的用户信息 | 回复的用户信息 |
»»»» uId | integer | true | none | none | |
»»»» picture | string | true | none | none | |
»»»» name | string | true | none | none | |
»»» cmId | integer | true | none | 评论编号 | |
»»» content | string | true | none | 子评论内容 | 内容 |
»» user | object | false | none | 父评论的用户信息 | 父评论用户信息 |
»»» uId | integer | true | none | none | |
»»» picture | string | true | none | none | |
»»» name | string | true | none | none |
DELETE 取消点赞评论
DELETE /comments/comment-likes/cancel
对评论取消点赞
后端
对该评论点赞数量更新 UPDATE > comment
并且进行算力分计算 sql语句:
SET score = (likes - 1) / POW(TIMESTAMPDIFF(SECOND, create_time, NOW()) + 1, 0.5);再通过
评论编号{cmId}
和
我{uId}
做为条件
到点赞列表进行删除操作
Body 请求参数
{
"uId": 1,
"cmId": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 当前用户编号 | none |
» cmId | body | integer | 是 | 评论编号 | 取消对评论的点赞 |
返回示例
204-NOT_CONTENT
{
"code": 204,
"msg": "已取消点赞",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 作品最新评论
GET /comments/{iss-id}/new
通过视频编号获取属于该视频的所有评论
后端
额外过滤条件状态为1
若子评论数量 >=2 则显示两个子评论
若 2< 子评论数量, 则显示一个或零个
根据评论创建时间 进行倒序排序
前端
根据是否为子评论给予不同样式
评论时间若为当天由分、小时优先级显示, 当天范围外则用 ‘yyyy年MM月dd日’ 格式
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
iss-id | path | string | 是 | none |
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"cmId": 1,
"content": "阿米诺斯",
"creTime": "2020年9月11日",
"status": 1,
"likeNum": 1200,
"replyNum": 29,
"isSubcomment": false,
"replies": [
{
"user": {
"uId": 3,
"picture": "https://丁真之笑.jpg",
"name": "钉珍"
},
"cmId": 2,
"content": "你怎么能说藏话"
},
{
"user": {
"uId": 3,
"picture": "https://丁之笑.jpg",
"name": "钉珍"
},
"cmId": 3,
"content": "藏话怎么能说你"
}
],
"user": {
"uId": 3,
"picture": "https://丁之笑.jpg",
"name": "钉珍"
}
},
"..."
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» cmId | integer | false | none | none | |
»» content | string | false | none | none | |
»» creTime | string | false | none | none | |
»» status | integer | false | none | none | |
»» likeNum | integer | false | none | none | |
»» replyNum | integer | false | none | none | |
»» isSubcomment | boolean | false | none | none | |
»» replies | [object] | false | none | none | |
»»» user | object | true | none | none | |
»»»» uId | integer | true | none | none | |
»»»» picture | string | true | none | none | |
»»»» name | string | true | none | none | |
»»» cmId | integer | true | none | none | |
»»» content | string | true | none | none | |
»» user | object | false | none | none | |
»»» uId | integer | true | none | none | |
»»» picture | string | true | none | none | |
»»» name | string | true | none | none |
评论/评论回复
GET 用户回复列表
GET /comments/comment-replies/{u-id}/user
我的回复列表 select id, name ,content
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | string | 是 | 当前用户的编号 |
返回示例
OK-200
{
"code": 200,
"msg": "success",
"data": [
{
"id": 1,
"comment": {
"cmId": 1,
"content": "你说的对, 但",
"status": "1"
},
"replay": {
"cmId": 2,
"content": "但什么",
"creTime": "2020-10-01 10:00:00",
"likeNum": 12,
"user": {
"uId": 3,
"picture": "https://xxx.jpg",
"name": "唉五花肉"
}
}
},
"..."
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | OK-200 | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | 回复列表, 根据回复时间排序 | |
»» id | integer | false | none | 列表编号 | |
»» comment | object | false | none | 当前用户的评论对象 | |
»»» cmId | integer | true | none | 评论编号 | |
»»» content | string | true | none | 评论内容 | |
»»» status | string | true | none | 状态 | |
»» replay | object | false | none | 当前用户评论的回复对象 | |
»»» cmId | integer | true | none | 回复编号 | |
»»» content | string | true | none | 回复内容 | |
»»» creTime | string | true | none | 回复时间 | |
»»» likeNum | integer | true | none | 点赞量 | |
»»» user | object | true | none | 回复的用户的信息 | |
»»»» uId | integer | true | none | 用户编号 | |
»»»» pircture | string | true | none | 用户头像 | |
»»»» name | string | true | none | 用户昵称 |
POST 回复评论
POST /comments/comment-replies
后端 (两次添加)
- 根据楼主评论{cm_id} 找 评论的作品编号{iss_id}
- 创建回复 {comment/reply} 记录, 主键回显, 并且开启子评论列{is_subcomment}
- 将回显的主键和 楼主评论 {cmId} 一并插入到评论回复列表 {comment_reply} 中
Body 请求参数
{
"cmId": 1,
"reply": {
"uId": 1,
"content": "那我问你"
}
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» cmId | body | integer | 是 | 评论编号 | none |
» reply | body | object | 是 | 回复 | none |
»» uId | body | integer | 是 | 我的编号 | none |
»» content | body | string | 是 | 回复内容 | none |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "回复成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
弹幕
POST 发送弹幕
POST /danmus/send
后端
- 对弹幕信息表(danmu)发起创建请求, 主键回显(dm_id)
- 根据视频编号(iss_id)和回显的主键(dm_id) 对视频弹幕列表资源 发起创建请求
Body 请求参数
{
"danmu": {
"time": 12,
"content": "我只是个怪物怪物你们知道什么是怪物吗",
"color": "#ffffff",
"dtId": 1,
"uId": 1
},
"isd_id": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» danmu | body | object | 是 | 弹幕 | 弹幕信息 |
»» time | body | integer | 是 | 时间戳 | none |
»» content | body | string | 是 | 弹幕内容 | none |
»» color | body | string | 是 | 颜色 | none |
»» dtId | body | integer | 是 | 弹幕类型 | 详情参考数据库 |
»» status | body | integer | 是 | 状态 | status |
»» likeNum | body | integer | 是 | 点赞人数 | none |
»» uId | body | integer | 是 | none | |
» isd_id | body | integer | 是 | 视频编号 | 视频编号 |
返回示例
201-CREATED
{
"code": 201,
"msg": "弹幕发送成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 弹幕撤回
DELETE /danmus/cancel
后端 - 两次删除 (硬删除)
- 通过弹幕编号 对视频弹幕列表(danmu_to_video)资源做删除操作
- 通过弹幕编号 对弹幕资源(danmu)做删除操作
- 按该顺序进行删除
Body 请求参数
{
"dmId": 1,
"isdId": 2
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» dmId | body | integer | 是 | 弹幕编号 | 弹幕编号 |
» isdId | body | integer | 是 | 视频编号 | 视频编号 |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "弹幕删除成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 我的视角 - 视频弹幕列表
GET /danmus/{isd-id}/danmus-to-video
根据视频编号查询视频弹幕列表
后端
- 使用 状态(status)为1作为过滤条件, 代表只查询正常的审核
Body 请求参数
{
"uId": 1,
"shields": [
1001,
1002,
1003
]
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
isd-id | path | integer | 是 | 视频编号 | |
body | body | object | 否 | none | |
» uId | body | integer | 是 | 当前用户 | 用于过滤出当前用户的屏蔽列表 |
» shields | body | [integer] | 是 | 屏蔽的弹幕数组 | none |
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"time": 12,
"content": "这是一个弹幕",
"color": "#ffffff",
"dtId": 1,
"status": 0,
"likeNum": 120,
"uId": 1001
},
"..."
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» time | integer | false | none | none | |
»» content | string | false | none | none | |
»» color | string | false | none | none | |
»» dtId | integer | false | none | none | |
»» status | integer | false | none | none | |
»» likeNum | integer | false | none | none | |
»» uId | integer | false | none | none |
POST 弹幕点赞
POST /danmus/danmu_likes/add
当前用户对某个弹幕进行点赞
后端
- 更新弹幕资源(danmu)的点赞量, set like_num = like_num + 1
- 创建新的视频弹幕列表资源(danmu_like)
- 后端对弹幕资源进行属性补充, 例点赞时间(cre_time)
Body 请求参数
{
"uId": 1,
"dmId": 3
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» uId | body | integer | 是 | 用户编号 | 当前点赞的用户 |
» dmId | body | integer | 是 | 弹幕编号 | 被点赞的弹幕 |
返回示例
201-CREATED
{
"code": 201,
"msg": "点赞成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 取消点赞弹幕
DELETE /danmus/danmu_likes/cancel
当前用户{uId}对已经点赞的弹幕{dmId}取消点赞 -> danmu_like
后端
- 通过
用户编号
和弹幕编号
对弹幕点赞列表资源(danmu_like)进行硬删除 - 通过弹幕编号对弹幕资源(danmu)进行硬删除
返回示例
{
"code": 204,
"msg": "已取消点赞",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 弹幕点赞列表
GET /danmus/{u-id}danmu_likes
当前用户的评论点赞列表
后端
- 应该根据格式封装返回一个DTO对象
- 时间应为当前DTO 对象最新的点赞时间
前端
- 若点赞用户大于等于两个, 显示两个头像和昵称
- 若最新点赞时间在1分钟内, 显示为 ‘刚刚’
- 弹幕时间若在当天内则由分、小时顺序显示, 当天外则用 ‘yyyy-MM-dd’ 格式, 今年内的弹幕 格式为MM-dd, 昨天的弹幕显示 昨天
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | path | integer | 是 | 用户编号 |
返回示例
200-OK、500-INTERNAL_ERROR
{
"code": 200,
"msg": "success",
"data": [
{
"creTime": "2024年8月12日 11:49",
"users": [
{
"uId": 1,
"picture": "xx.jpg",
"name": "无聊"
},
{
"uId": 2,
"picture": "xx.jpg",
"name": "冉冉猫"
}
],
"danmu": {
"dmId": 1,
"content": "好可爱",
"likeNum": 12
}
}
]
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [object] | true | none | none | |
»» creTime | string | false | none | none | |
»» users | [object] | false | none | none | |
»»» uId | integer | true | none | none | |
»»» picture | string | true | none | none | |
»»» name | string | true | none | none | |
»» danmu | object | false | none | none | |
»»» dmId | integer | true | none | none | |
»»» content | string | true | none | none | |
»»» likeNum | integer | true | none | none |
POST 弹幕屏蔽
POST /danmus/danmu-shields/shield
当前用户的弹幕屏蔽列表
两种屏蔽方式
- 屏蔽单条弹幕
- 屏蔽该弹幕的发送者的所有发送弹幕
后端
- 如果屏蔽的是单条弹幕, 则直接在弹幕屏蔽列表资源(danmu_sheild)做创建操作
- 如果屏蔽的是一个用户, 则先获取该用户的编号去查询返回其所发送的所有弹幕编号, 再将这些编号在屏蔽列表资源(danmu_sheild)中做创建操作
- 弹幕编号应该采用数组, 进行装载
Body 请求参数
{
"shield-user": 1,
"uId": 2,
"dmId": 3
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» shield-user | body | integer | 是 | 屏蔽的用户 | 屏蔽的是某个用户的所有弹幕 |
» uId | body | integer | 是 | 当前用户编号 | 谁屏蔽的 |
» dmId | body | integer | 是 | 弹幕编号 | 屏蔽的弹幕 |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "已成功屏蔽",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 查询屏蔽列表
GET /danmus/danmu-shields/list
查询当前用户的屏蔽列表中当前视频屏蔽的弹幕
后端
- 通过用户编号(u_id) 在弹幕屏蔽列表资源(danmu_shield)中 查询其屏蔽的所有弹幕
- 另外通过视频编号(iss_id) 配合视频弹幕列表 (danmu_to_video), 减小扫描范围
- 应对 弹幕屏蔽列表资源(danmu_shield)中的弹幕(dm_id) 和视频弹幕列表中的包含弹幕(dm_id)进行连接
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
u-id | query | integer | 否 | 用户的编号 | |
iss-id | query | integer | 否 | 弹幕所在视频 |
返回示例
200-OK、500-INTERNAL_ERROR
{
"code": 200,
"msg": "success",
"data": [
1,
2,
3,
4,
5
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 200-OK、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | [integer] | true | none | 屏蔽的弹幕 |
发布
GET 所有已投稿视频
GET /issues/issue-videos/list
当前用户 {u_id} 查看所投稿的所有视频 {issue_video}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
uId | query | integer | 否 | 当前用户 |
返回示例
200 Response
{}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
发布/视频
POST 视频投稿
POST /issues/issue-videos/publish
后端 (两次添加)
- 先补充基础信息 (issue), 主键回显
- 再填充视频信息 (issue_video), 关联回显
Body 请求参数
"{\r\n \"issue\":{\r\n \"issId\":1,// 等待回显\r\n \"cover\":\"xxx.jpg\",\r\n \"title\":\"视频标题\",\r\n \"baseType\": \"转载\",\r\n \"authorId\":1\r\n // \"itId\":1 后端维护\r\n },\r\n \"issueVideo\":{\r\n \"videoUrl\":\"xxx.mp4\",\r\n \"duration\":60,\r\n \"remark\":\"三连球球\",\r\n \"permission\":\"所有人可见\",\r\n \"isDeclare\":true,\r\n \"vdId\":2,\r\n \"offDanmu\":false,\r\n \"offComm\":false,\r\n \"onGretestComm\":true,\r\n \"issId\":-1 //回显后替换\r\n }\r\n}"
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» issue | body | object | 是 | 发布对象 | 作品基本信息 |
»» cover | body | string | 是 | 封面 | none |
»» title | body | string | 是 | 标题 | none |
»» baseType | body | string | 是 | 视频类型 | 转载、自制 |
» issueVideo | body | object | 是 | 发布的视频对象 | none |
»» videoUrl | body | string | 是 | 视频地址 | none |
»» duration | body | integer | 是 | 时长 | none |
»» remark | body | string | 是 | 备注 | none |
»» permission | body | string | 是 | 可见范围 | 所有人可见、仅自己可见 |
»» isDeclare | body | boolean | 是 | 是否为自制 | 未经作者允许, 禁止转载 |
»» vdId | body | integer | 是 | 外键 | 创作者声明 (详见数据库表说明) |
»» offDanmu | body | boolean | 是 | 关闭弹幕 | none |
»» offComm | body | boolean | 是 | 关闭评论区 | none |
»» onGretestComm | body | boolean | 是 | 开启精选评论 | none |
»» issId | body | integer | 是 | 发布编号 | 外键, 绑定基本发布信息 |
返回示例
201-CREATED、500-INTERNAL_ERROR
{
"code": 201,
"msg": "已成功发布, 目前正在审核..",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
POST 视频上传
POST /issues/issue-videos/upload
对某个视频进行上传, 返回该视频的URL地址
Body 请求参数
video: ""
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» video | body | string(binary) | 否 | up主上传的视频文件 |
返回示例
201-CREATED、500-INTERNAL_ERROR、400-BAD_REQUEST、401-NOT_AUTH
{
"code": 201,
"msg": "上传成功",
"data": "https://aliyunoss/bucket/01.jpg"
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
{
"code": 400,
"msg": "上传文件过大",
"data": null
}
{
"code": 401,
"msg": "NOT_LOGIN",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、500-INTERNAL_ERROR、400-BAD_REQUEST、401-NOT_AUTH | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | string | true | none | none |
PUT 视频更改
PUT /issues/issue-videos/update
注意:
- 仅能修改信息, 不能修改视频本身 (包括时长、画面…)
- 可以修改已上传但未发布的视频文件
- 发布后再次审核
Body 请求参数
{
"issueVideo": {
"isdId": 1,
"remark": "关注我关注我关注我关注我....",
"permission": "公开可见",
"isDeclare": true,
"vdId": 4,
"offDanmu": true,
"offComm": true,
"onGretestComm": false,
"issue": {
"issId": 5,
"cover": "https://aliyunoss/01.jpg",
"baseType": 2,
"uId": 3
}
}
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» issueVideo | body | object | 是 | 视频对象 | none |
»» isdId | body | integer | 是 | 视频编号 | none |
»» remark | body | string | 是 | 视频介绍 | none |
»» permission | body | string | 是 | 允许范围 | 例: 仅自己可见、所有人可见 |
»» isDeclare | body | boolean | 是 | 自制声明 | 未经作者允许禁止转载 |
»» vdId | body | integer | 是 | 声明类型 | 例: 该视频由AI生成… |
»» offDanmu | body | boolean | 是 | 关闭弹幕 | none |
»» offComm | body | boolean | 是 | 关闭评论 | none |
»» onGretestComm | body | boolean | 是 | 开启精选评论 | none |
»» issue | body | object | 是 | 基本信息关联 | none |
»»» issId | body | integer | 是 | 编号 | none |
»»» cover | body | string | 是 | 封面 | none |
»»» baseType | body | integer | 是 | 基本类型 | none |
»»» uId | body | integer | 是 | 发布者编号 | none |
返回示例
{
"code": 204,
"msg": "更改成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 删除已投稿视频
DELETE /issues/issue-videos/cancel
后端 (两次删除)
- 视频 {issue_video} > (SD) DELETE by {isdId}
- 基本信息 {issue} > (SD) DELETE by {issId}
- 做事务处理
Body 请求参数
{
"isdId": 1,
"issId": 1
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» isdId | body | integer | 是 | 视频编号 | none |
» issId | body | integer | 是 | 基本信息编号 | none |
返回示例
{
"code": 204,
"msg": "该视频删除成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | none | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 视频评论管理
GET /issues/issue-videos/{iss-id}/comments
当前投稿 {iss_id} [by]
下的评论 {comment}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
iss-id | path | integer | 是 | 当前查看的投稿 |
返回示例
200 Response
{}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
发布/视频/视频草稿
POST 视频保存为草稿
POST /issues/issue-videos/video-drafts/saved
我将发布信息保存为草稿
Body 请求参数
"{\r\n \"issue\": {\r\n // iss_id 等待回显\r\n \"cover\":\"xxx.jpg\",\r\n \"title\":\"特朗普特离谱?\",\r\n \"baseType\":2,\r\n \"authorId\":1,\r\n \"itId\":1\r\n },\r\n \"videoDraft\": {\r\n \"videoUrl\":\"xxx.mp4\",\r\n \"duration\":78,\r\n \"remark\":\"两只朗普爱跳舞也\",\r\n \"permission\":\"所有人可见\",\r\n \"isDeclare\":false,\r\n \"vdId\":2,\r\n \"offDanmu\":false,\r\n \"offComm\":false,\r\n \"onGretestcomm\":true,\r\n \"issId\":-1 //回显后替换 \r\n } \r\n}"
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» issue | body | object | 是 | 初始信息 | none |
»» cover | body | string | 是 | 封面地址 | none |
»» title | body | string | 是 | 标题 | none |
»» baseType | body | integer | 是 | 基本类型 | 自制、转载 |
»» authorId | body | integer | 是 | 作者编号 | none |
»» itId | body | integer | 是 | 发布类型 | none |
» issueVideo | body | object | 是 | none | |
»» videoUrl | body | string | 是 | none | |
»» duration | body | integer | 是 | none | |
»» remark | body | string | 是 | none | |
»» permission | body | string | 是 | none | |
»» isDeclare | body | boolean | 是 | none | |
»» vdId | body | integer | 是 | none | |
»» offDanmu | body | boolean | 是 | none | |
»» offComm | body | boolean | 是 | none | |
»» onGretestcomm | body | boolean | 是 | none | |
»» issId | body | integer | 是 | 等待回显 | none |
返回示例
201-CREATED、
{
"code": 201,
"msg": "另存为草稿成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
201 | Created | 201-CREATED、 | Inline |
返回数据结构
状态码 201
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
PUT 草稿更新
PUT /issues/issue-videos/video-drafts/saving
前端
- 更改信息分成两个对象
- 作品基本信息 (issue)
- 视频草稿信息 (videoDraft)
后端 (两次修改)
- 封装请求体DTO对象
- 对基本信息 UPDATE > issue
- 对草稿信息 UPDATE > video_draft
Body 请求参数
{
"issue": {
"issId": 1,
"cover": "xxx02.jpg",
"title": "特朗普特离谱2",
"baseType": 2,
"authorId": 1,
"itId": 3
},
"videoDraft": {
"vduId": 1,
"videoUrl": "xxx.mp4",
"duration": 68,
"remark": "...",
"permission": "所有人可见",
"isDeclare": false,
"vdId": 2,
"offDanmu": false,
"offComm": false,
"onGretestcomm": true,
"issId": 1
}
}
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none |
返回示例
204-NOT_CONTENT
{
"code": 204,
"msg": "保存成功",
"data": null
}
{
"code": 500,
"msg": "服务器出现异常",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
DELETE 草稿删除
DELETE /issues/issue-videos/video-drafts/cancel
前端 (两次删除)
- 对草稿 {video_draft} > DELETE by vdrId
- 对基本信息 {issue} > DELETE by issId
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
vdrId | query | integer | 否 | 草稿编号 | |
issId | query | integer | 否 | 基本信息编号 |
返回示例
204-NOT_CONTENT、500-INTERNAL_ERROR
{
"code": 204,
"msg": "删除成功",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
204 | No Content | 204-NOT_CONTENT、500-INTERNAL_ERROR | Inline |
返回数据结构
状态码 204
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none | |
» data | null | true | none | none |
GET 草稿列表
GET /issues/issue-videos/video-drafts/list
后端
- 应当对另存时间做排序
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
uId | query | integer | 否 | 当前用户 |
返回示例
{
"code": 200,
"message": "success",
"data": [
{
"vdrId": 1,
"// 草稿唯一标识符 \"title\"": "我的视频草稿1",
"// 草稿标题 \"remark\"": "视频简介示例",
"// 草稿描述 \"cover\"": "https://example.com/cover1.jpg",
"// 草稿封面 URL \"creTime\"": "2024-06-18 10:00:00",
"// 草稿另存时间 \"isPublish\"": false,
"duration": 120,
"// 视频时长,单位:秒 \"size\"": 52428800,
"// 文件大小,单位:字节 \"itId\"": "1 // 草稿类型(如视频、文章)"
}
]
}
{
"code": 500,
"message": "",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» message | string | true | none | none | |
» data | [object] | true | none | none | |
»» vdrId | integer | false | none | 草稿唯一标识符 | none |
»» title | string | false | none | 草稿标题 | none |
»» remark | string | false | none | 草稿描述 | none |
»» cover | string | false | none | 草稿封面 URL | none |
»» creTime | string | false | none | 草稿另存时间 | none |
»» isPublish | boolean | false | none | none | |
»» duration | integer | false | none | 视频时长,单位:秒 | none |
»» size | integer | false | none | 文件大小,单位:字节 | none |
»» itId | integer | false | none | 草稿类型(如视频、文章) | none |
GET 打开草稿
GET /issues/issue-videos/video-drafts/open
打开点击的{vdrId} 草稿 SElECT > video_draft
请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
vdrId | query | integer | 否 | 草稿标识 |
返回示例
{
"draft": {
"issId": 1,
"cover": "xxx.jpg",
"title": "特朗普特离谱?",
"baseType": 2,
"authorId": 1,
"itId": 1,
"videoUrl": "xxx.mp4",
"duration": 78,
"remark": "两只朗普爱跳舞也",
"permission": "所有人可见",
"isDeclare": false,
"vdId": 2,
"offDanmu": false,
"offComm": false,
"onGretestcomm": true
}
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | none | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» draft | object | true | none | none | |
»» issId | integer | true | none | 基本信息编号 | none |
»» cover | string | true | none | 封面 | none |
»» title | string | true | none | 标题 | none |
»» baseType | integer | true | none | 转载自制 | none |
»» authorId | integer | true | none | 作者编号 | none |
»» itId | integer | true | none | 发布类型 | none |
»» videoUrl | string | true | none | 视频地址 | none |
»» duration | integer | true | none | 时长 | none |
»» remark | string | true | none | 介绍 | none |
»» permission | string | true | none | 允许范围 | none |
»» isDeclare | boolean | true | none | 自制声明 | none |
»» vdId | integer | true | none | 视频编号 | none |
»» offDanmu | boolean | true | none | 关闭弹幕 | none |
»» offComm | boolean | true | none | 关闭评论 | none |
»» onGretestcomm | boolean | true | none | 开启精选评论 | none |