# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)

↑ 上方下载文档 (大小374KB)

接口文档预览 (超过50个接口)

一、数据库25张表er-关系清晰构图!(tip: 鼠标右键图片 > 放大图像)

二、难点/经验 详细说明

  1. 热门评论排序
  2. 评论点赞列表|DTO封装
  3. 经验分享|精华接口文档说明 组员都说喜欢
  4. 分档对应枚举码

如果这篇文章帮到你, 帮忙点个关注呗, 点赞或收藏也行鸭 ~ (。•ᴗ-)✧

^ '(இ﹏இ`。)

文档预览 (详见顶部资料)

用户/用户帐号

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

后端

  1. 统计每个收藏夹的收藏总量
  2. 按格式返回当前用户的所有收藏夹

请求参数

名称 位置 类型 必选 中文名 说明

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

  1. 打开用户{u_id} [by]
  2. 点击的收藏夹{cf_id}, [by]
  3. 显示里面包含的收藏内容{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

相关推荐
Lojarro19 分钟前
【Spring】Spring框架之-AOP
java·mysql·spring
梦想平凡27 分钟前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
isolusion34 分钟前
Springboot的创建方式
java·spring boot·后端
TianyaOAO38 分钟前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong1 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
Yvemil71 小时前
《开启微服务之旅:Spring Boot Web开发举例》(一)
前端·spring boot·微服务
zjw_rp1 小时前
Spring-AOP
java·后端·spring·spring-aop
码农老起1 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化
夏木~2 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
W21552 小时前
Liunx下MySQL:表的约束
数据库·mysql