# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
↑ 上方下载文档 (大小374KB)
接口文档预览 (超过50个接口)
一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像)
二、难点/经验 详细说明
- 热门评论排序
- 评论点赞列表|DTO封装
- 经验分享|精华接口文档说明 组员都说喜欢
- 分档对应枚举码
如果这篇文章帮到你, 帮忙点个关注呗, 点赞或收藏也行鸭 ~ (。•ᴗ-)✧
^ '(இ﹏இ`。)
文档预览 (详见顶部资料)
用户/用户帐号
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
»» email 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"
},
"upDashboard": {
"ccId": 1,
"uId": 123,
"allConcerns": 12000,
"allVideos": 55
}
}
]
}
{
"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
»» email 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
» email 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}进行收藏
- 后端应该做事务处理
计算算力分
- sql语句 {iss_id} [by] :
SET score = (1.2 * collect_num) / POW(TIMESTAMPDIFF(HOUR, create_time, NOW()) + 1, 1.0);
up主创作数据更新
- UP主 {u-id} [by]
- 创作数据中心 {up-dashboard}
- 收藏量同步更新 > UPDATE {all_collects}
Body 请求参数
{
"uId": 1,
"issue": {
"issId": 1,
"uId": 2
},
"cfId": 1
}
请求参数
名称 位置 类型 必选 中文名 说明
body body object 否 none
» uId body integer 是 用户 当前用户
» issue body object 是 作品 被收藏的作品
»» issId body integer 是 作品编号 none
»» uId body integer 是 up主 作品的作者, 用于同步数据中心
» cfId body integer 是 none
返回示例
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/cancel
取消收藏
用户对已收藏做取消收藏
- 通过用户编号①(u_id) 和 收藏编号②(uc_id) 在用户收藏列表③(user_collect)中删除
- 后端做事务处理
计算算力分
- sql语句 {iss_id} [by] :
SET score = (1.2 * collect_num) / POW(TIMESTAMPDIFF(HOUR, create_time, NOW()) + 1, 1.0);
同步up主的创作数据
- UP {u-id} [by]
- 的创作数据中心 {up-dashboard}
- 收藏量同步更新 > UPDATE {all_collects}
Body 请求参数
{
"collect": {
"ucId": 1,
"uId": 1,
"issue": {
"issId": 1,
"uId": 2
}
}
}
请求参数
名称 位置 类型 必选 中文名 说明
body body object 否 none
» collect body object 是 收藏对象 包含取消收藏所必要信息
»» ucId body integer 是 主键 none
»» uId body integer 是 收藏人 当前用户
»» issue body object 是 作品对象 当前用户收藏的作品对象
»»» issId body integer 是 作品主键 none
»»» uId body integer 是 up主 用于做同步创作数据的条件
返回示例
{
"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} [by]
- 点击的收藏夹{cf_id}, [by]
- 显示里面包含的收藏内容{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