项目学习:仿b站的视频网站项目03-注册功能

概括

通过上一期,完成了项目和数据库的基础结构的搭建,接下来主要是完成项目的注册功能。该功能模块主要分为有两个接口,一个是验证码接口,一个是注册接口。

让我们开始吧!

验证码接口

验证码的生成主要配合下面这个依赖来完成验证码的图片生成,然后将信息返回给前端,前端生成图片展示。

验证码依赖

<dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>${captcha.verion}</version>
</dependency>

后端的处理逻辑为,请求到接口后,将生成的结果存到Redis中,通过定义常量的方式来完成一些固定信息的存储。具体的详细情况可以看视频中有详细的介绍。

注意:如果生成验证码的时候出现报错,先检查一下自己的环境是不是正确的,之前我将jdk设置了17,然后报错,改成了8后正常了。

这里提供一下Redis的封装部分方法,方便节约时间,如果是新手的话,建议还是手敲一遍。

@Component
public class RedisComponent {@Resourceprivate RedisUtils redisUtils;public String saveCheckCode(String code){String checkCode = UUID.randomUUID().toString();redisUtils.setex(Constants.REDIS_KEY_CHECK_CODE + checkCode ,code, Constants.REDIS_KEY_EXPIRE_ONE_MIN);return checkCode;}public String getCheckCode(String checkCode){return  (String ) redisUtils.get(Constants.REDIS_KEY_CHECK_CODE + checkCode);}public void delCheckCode(String checkCode){redisUtils.delete(Constants.REDIS_KEY_CHECK_CODE + checkCode);}
}

可以通过postman或apipost来进行接口检查,当项目启动后请求,如果出现下面的结构就证明成功了。

在这里插入图片描述

注册接口

注册接口的业务逻辑是,先判断传入的参数是否符合规则,如果符合规则就存入数据库中。其中符合规则分为两个方面一个是输入规则,一个是后端数据校验。具体内容可以看视频,说的很详细。

这里主要是用到了@Validated这个注解,来进行一些参数格式的校验。代码如下:

@RequestMapping("/register")public ResponseVO register(@NotEmpty @Email @Size(max = 150) String email,@NotEmpty @Size(max = 20) String nickName,@NotEmpty @Pattern(regexp = Constants.REGEX_PASSWORD) String registerPassword,@NotEmpty String checkCodeKey,@NotEmpty String checkCode) {}

详细的使用可以去查询官方的api文档,有详细的解释,不过大部分注解都可以见名知意了,挺好使用的。
因为在上一篇的自定义全局处理器中,把这个注解出现异常时的给配置进去了,所以当校验不通关时就会返回固定格式的信息。非常好用。

下面是在视频中定义的部分常量代码,仅供参考。

public class Constants {
//    主题常量public static final Integer THEME_ONE = 1;public static final Integer THEME_zero = 0;//    长度10public static final Integer LENGTH_10 = 10;// 密码正则public static final String REGEX_PASSWORD = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%^&*])[A-Za-z\\d@#$%^&*]{8,}$";public static final String REDIS_KEY_PREFIX = "easylive:";public static final String REDIS_KEY_CHECK_CODE = REDIS_KEY_PREFIX + "checkCode:";//    一分钟public static final Integer REDIS_KEY_EXPIRE_ONE_MIN = 60000;}

在写完接口后记得使用测试工具进行测试。到此就完成了注册接口的开发了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477147.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——进程间通信之管道

进程间通信之管道 文章目录 进程间通信之管道1. 进程间通信1.1 为什么要进行进程间的通信1.2 如何进行进程间的通信1.3 进程间通信的方式 2. 管道2.1 匿名管道2.1.1 系统调用pipe()2.1.2 使用匿名管道进行通信2.1.1 匿名管道四种情况2.1.2 匿名管道的五大特性2.1.3 进程池 2.2 …

使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题

本地环境 主机MacOs Sequoia 15.1虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 服务器版本 最小安装 开发环境 编辑器编译器调试工具数据库http服务web开发防火墙Vim9Gcc13Gdb14Mysql8Apache2Php8.3Iptables 第一坑 数…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体&#xff0c;更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁&#xff0c;工业4G路由器以卓越的通信组网能力&#xff0c;为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力&#xff0c;确保船舶内部…

分类算法——基于heart数据集实现

1 heart数据集——描述性统计分析 import matplotlib.pyplot as plt import pandas as pd# Load the dataset heart pd.read_csv(r"heart.csv", sep,)# Check the columns in the DataFrame print(heart.columns)aheart.loc[:, y].value_counts() print(a) heart.l…

力扣面试经典 150(上)

文章目录 数组/字符串1. 合并两个有序数组2. 移除元素3. 删除有序数组中的重复项4. 删除有序数组的重复项II5. 多数元素6. 轮转数组7. 买卖股票的最佳时机8. 买卖股票的最佳时机II9. 跳跃游戏10. 跳跃游戏II11. H 指数12. O(1)时间插入、删除和获取随机元素13. 除自身以外数组的…

Vue3-后台管理系统

目录 一、完成项目历程 1、构建项目 2、项目的自定义选项 3、 封装组件 4、配置对应页面的路由 5、从后端调接口的方式 二、引入Element Plus、Echarts、国际化组件 1、Element Plus安装 2、Echarts安装 3、国际化 三、介绍项目以及展示 1、项目是基于Vue3、Element …

mq 消费慢处理方式,rocketmq消费慢如何处理,mq如何处理消费端消费速率慢。rocketmq优化

1. 问题&#xff1a;mq消费慢&#xff0c;如何加快处理速度 2. 分析&#xff1a; 没想到吧&#xff0c;官网上就有处理方式。&#xff01; 3.链接&#xff1a; 基本最佳实践 | RocketMQ 4. 处理方式&#xff1a; 4.1 提高消费并行度 4.1.1 加机器&#xff0c;配置多个消费服…

内存级文件原理——Linux

目录 进程与文件 Linux下的文件系统 文件操作&#xff0c;及文件流 C语言函数 文件流 文件描述符 系统调用操作 系统调用参数 重定向与文件描述符 输出重定向 输入重定向 文件内容属性 Linux下一切皆文件 进程与文件 当我们对文件进行操作时&#xff0c;文件必…

MATLAB矩阵元素的修改及删除

利用等号赋值来进行修改 A ( m , n ) c A(m,n)c A(m,n)c将将矩阵第 m m m行第 n n n列的元素改为 c c c&#xff0c;如果 m m m或 n n n超出原来的行或列&#xff0c;则会自动补充行或列&#xff0c;目标元素改为要求的&#xff0c;其余为 0 0 0 A ( m ) c A(m)c A(m)c将索引…

并行IO接口8255

文章目录 8255A芯片组成外设接口三个端口两组端口关于C口&#xff08;★&#xff09; 内部逻辑CPU接口 8255A的控制字&#xff08;★&#xff09;位控字&#xff08;D70&#xff09;方式选择控制字&#xff08;D71&#xff09; 8255A的工作方式工作方式0&#xff08;基本输入/输…

springboot3如何集成knife4j 4.x版本及如何进行API注解

1. 什么是Knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, 取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!knife4j的前身是swagger-bootstrap-ui,swagger-bootstrap-ui自1.9.6版本后,正式更名为knife4j为了契合微服务的架构发展,由于原来…

js高级06-ajax封装和跨域

8.1、ajax简介及相关知识 8.1.1、原生ajax 8.1.1.1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。 按需请求&#xff0c;可…

自然色调人像自拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 自然色调人像自拍照后期通过 Lightroom 调色&#xff0c;旨在打造出清新、自然、真实的人像效果。这种风格强调还原人物的本来面貌&#xff0c;同时增强照片的色彩和光影表现力&#xff0c;让自拍照更加生动和吸引人。 预设信息 调色风格&#xff1a;清晰透明风格预…

RabbitMQ简单应用

概念 RabbitMQ 是一种流行的开源消息代理&#xff08;Message Broker&#xff09;软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP - Advanced Message Queuing Protocol&#xff09;。RabbitMQ 通过高效的消息传递机制&#xff0c;主要应用于分布式系统中解耦应用…

计算机网络(14)ip地址超详解

先看图&#xff1a; 注意看第三列蓝色标注的点不会改变&#xff0c;A类地址第一个比特只会是0&#xff0c;B类是10&#xff0c;C类是110&#xff0c;D类是1110&#xff0c;E类是1111. IPv4地址根据其用途和网络规模的不同&#xff0c;分为五个主要类别&#xff08;A、B、C、D、…

挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析

随着挂壁式空气净化器市场的不断扩大&#xff0c;各类品牌与型号琳琅满目。但遗憾的是&#xff0c;一些跨界网红品牌过于追求短期效益&#xff0c;导致产品在净化效果与去除异味方面表现平平&#xff0c;使用体验不佳&#xff0c;甚至可能带来二次污染风险&#xff0c;影响人体…

分布式 Data Warebase - 构筑 AI 时代数据基石

导读&#xff1a;作者以人类世界一个信息层次模型 DIKW 为出发点&#xff0c;引出对计算机世界&#xff08;系统&#xff09;处理数据过程的介绍。接着以一个民宿平台数据架构随业务发展而不断演进的过程&#xff0c;展示了这场信息革命中&#xff0c;在具体应用场景下&#xf…

如何将Latex的文章内容快速用word+Endnote排版

1 第一步 Endnote文件是无法直接导入bib文件的。需要将reference.bib的参考文献内容&#xff0c;通过JabRef软件打开并另存为refefence.ris文件 下载JabRef软件&#xff1a;https://www.jabref.org/#download 导出为ris格式文件 2 第二步 通过Endnote导入ris文件&#xff0…

[论文阅读] 异常检测 Deep Learning for Anomaly Detection: A Review(三)总结梳理-疑点记录

《深度异常检测综述》总结梳理 目录 一、研究背景与挑战二、深度异常检测方法分类三、实验评估四、结论在这篇文章中&#xff0c;**异常检测的异构性**主要从以下几个方面来理解&#xff1a;如何理解多源数据融合的困难“学习正常性的特征表示”与“用于特征提取的深度学习”在…

网络爬虫——爬虫项目案例

本节将全面讲解如何通过实战爬虫项目解决复杂问题。结合最新技术和实际开发需求&#xff0c;案例将涵盖完整开发流程&#xff0c;包括需求分析、实现代码、优化方法和常见问题解决。力求实现高效、可扩展的爬虫项目架构&#xff0c;帮助开发者提升实战能力。 案例 1&#xff1a…