前端:react-native
后端:Springboot + MySQL + redis
访问Swagger-UI接口文档:http://localhost:8080/doc.html
接口文档在api-doc 目录下
Token 主要的用处是用在安全的方面。除了登录注册之类的接口,前端每发一次请求都需要携带token在header里。然后后端每一次都去验证这token是否是合法的。如果token 超时或者token是假的,将无法访问接口。需要重新登录来获取新的token,这样就能防止在无登录的情况去修改或者查看某些资料。同时因为token的时效性,在token无效前,用户都能保持着登录的状态,大大提升了用户的体验。
-
tbl_user 用户表
DROP TABLE IF EXISTS `tbl_user`; CREATE TABLE `tbl_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户', `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名', `password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '密码', `mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', `nickname` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '昵称;昵称', `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像', `sex` int NULL DEFAULT 0 COMMENT '性别 0是保密 1是男 2是女', `birthday` datetime NULL DEFAULT NULL COMMENT '生日', `country` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '国家', `city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '城市', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '简介', `cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '个人介绍的背景图', `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间;创建时间', `updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间;更新时间', `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除;1是删除,0是不删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 125878278 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
-
tbl_comment 评论表
DROP TABLE IF EXISTS `tbl_comment`; CREATE TABLE `tbl_comment` ( `id` bigint NOT NULL COMMENT '评论id', `note_id` bigint NOT NULL COMMENT '笔记id', `user_id` bigint NULL DEFAULT NULL COMMENT '用户id', `parent_id` bigint NULL DEFAULT NULL COMMENT '父id', `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '评论内容', `like_count` int NULL DEFAULT NULL COMMENT '评论点赞数', `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间;创建时间', `updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间;更新时间', `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除;1是删除,0是不删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '评论表' ROW_FORMAT = Dynamic;
-
tbl_note 笔记表
DROP TABLE IF EXISTS `tbl_note`; CREATE TABLE `tbl_note` ( `id` bigint NOT NULL COMMENT '笔记Id', `user_id` bigint NOT NULL COMMENT '用户Id', `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '笔记标题', `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '笔记内容', `follow_count` int(10) UNSIGNED ZEROFILL NULL DEFAULT NULL COMMENT '笔记收藏数', `like_count` int(10) UNSIGNED ZEROFILL NULL DEFAULT NULL COMMENT '笔记点赞数', `view_count` int NULL DEFAULT NULL COMMENT '浏览数', `images` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '笔记图片,多个图片用逗号分隔', `is_public` tinyint(1) UNSIGNED ZEROFILL NULL DEFAULT NULL COMMENT '是否公开 1是公开,0是个人可见', `created_time` datetime NULL DEFAULT NULL COMMENT '创建时间;创建时间', `updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间;更新时间', `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除;1是删除,0是不删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '笔记表' ROW_FORMAT = Dynamic;
-
tbl_user_note_view 存储笔记观看数
DROP TABLE IF EXISTS `tbl_user_note_view`; CREATE TABLE `tbl_user_note_view` ( `id` bigint NOT NULL, `user_id` bigint NOT NULL COMMENT '用户id', `note_id` bigint NOT NULL COMMENT '笔记id', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '笔记观看数表' ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
-
tbl_user_comment_like 存储用户对评论的点赞
DROP TABLE IF EXISTS `tbl_user_comment_like`; CREATE TABLE `tbl_user_comment_like` ( `id` bigint NOT NULL COMMENT 'id', `user_id` bigint NOT NULL COMMENT '用户id', `comment_id` bigint NOT NULL COMMENT '评论id', `note_id` bigint NOT NULL COMMENT '笔记id', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '评论点赞数表' ROW_FORMAT = Dynamic;
-
tbl_user_note_follow 存储用户对笔记的收藏
DROP TABLE IF EXISTS `tbl_user_note_follow`; CREATE TABLE `tbl_user_note_follow` ( `id` bigint NOT NULL, `user_id` bigint NOT NULL, `note_id` bigint NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '笔记收藏数表' ROW_FORMAT = Dynamic;
-
tbl_user_note_like 存储用户对笔记的点赞
DROP TABLE IF EXISTS `tbl_user_note_like`; CREATE TABLE `tbl_user_note_like` ( `id` bigint NOT NULL, `user_id` bigint NOT NULL, `note_id` bigint NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '笔记点赞数表' ROW_FORMAT = Dynamic;
- 传入用户名,密码,确认密码以用来验证
- 密码和确认密码需要在前端加一次密,安全考量,避免出现明文密码
- 查询数据库,没有数据表示此用户还未存在,可以注册。
- 对密码再次加密,然后存入数据库,安全考量。
- 返回注册成功的消息,表示已经存入数据库。
- 传入用户名和密码以用来验证
- 密码需要在前端加一次密,安全考量,避免出现明文密码
- 登录时先取redis缓存,为了性能考量,减少sql查询。查询到的用户数据能存储在redis,以方便取相同的资料
- 返回token 是为了让用户保持登录状态,提升用户体验
- 密码需要加密后在验证,因为存入数据库的密码已经有再加密一次
- 返回用户数据是避免多发一个请求,同时也能减少sql查询,因为一般上请求登录接口后就会直接跳转首页,这时候会需要个人用户资料,所以直接登录接口直接返回用户资料
http://192.168.254.109:8080/api/auth/login
POST
applicatin/json
{
"username": "用户名88",
"password": "密码104"
}
字段 | 类型 | 必填 | 含义 | 其他参考信息 |
---|---|---|---|---|
username | String | 否 | 用户名 | |
password | String | 否 | 密码 |
{
"code": 639,
"message": "返回信息125",
"data": {
"id": 487,
"username": "用户名15",
"mobile": "手机号62",
"nickname": "昵称;媒体号95",
"no": "媒体号,唯一标识;类似头条号,抖音号,公众号,唯一标识,需要限制修改次数,比如终生1次,每年1次,每半年1次等,可以用于付费修改。44",
"avatar": "头像123",
"sex": 7,
"birthday": "生日65",
"country": "国家64",
"city": "城市99",
"description": "简介43",
"cover": "个人介绍的背景图62",
"token": "JwtToken1"
}
}
字段 | 类型 | 含义 | 其他参考信息 |
---|---|---|---|
code | long | 返回码 | |
message | String | 返回信息 | |
data | UserVo | 返回数据 | |
└─ id | Integer | 用户id | |
└─ username | String | 用户名 | |
└─ mobile | String | 手机号 | |
└─ nickname | String | 昵称;媒体号 | |
└─ no | ** | ||
String** | 媒体号,唯一标识;类似头条号,抖音号,公众号,唯一标识,需要限制修改次数,比如终生1次,每年1次,每半年1次等,可以用于付费修改。 | ||
└─ avatar | String | 头像 | |
└─ sex | Integer | 性别;1:男 0:女 2:保密 | |
└─ birthday | String | 生日 | |
└─ country | String | 国家 | |
└─ city | String | 城市 | |
└─ description | String | 简介 | |
└─ cover | String | 个人介绍的背景图 | |
└─ token | String | JwtToken |
http://192.168.254.109:8080/api/auth/register
POST
applicatin/json
{
"username": "用户名76",
"password": "密码118",
"confirmPassword": "确认密码1"
}
字段 | 类型 | 必填 | 含义 | 其他参考信息 |
---|---|---|---|---|
username | String | 否 | 用户名 | |
password | String | 否 | 密码 | |
confirmPassword | String | 否 | 确认密码 |
{
"code": 558,
"message": "返回信息126",
"data": {}
}
字段 | 类型 | 含义 | 其他参考信息 |
---|---|---|---|
code | long | 返回码 | |
message | String | 返回信息 | |
data | Null | 返回数据 |