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

概括

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

让我们开始吧!

验证码接口

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

验证码依赖

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

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

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

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

java 复制代码
@Component
public class RedisComponent {

    @Resource
    private 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这个注解,来进行一些参数格式的校验。代码如下:

java 复制代码
@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文档,有详细的解释,不过大部分注解都可以见名知意了,挺好使用的。

因为在上一篇的自定义全局处理器中,把这个注解出现异常时的给配置进去了,所以当校验不通关时就会返回固定格式的信息。非常好用。

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

java 复制代码
public class Constants {
//    主题常量
    public static final Integer THEME_ONE = 1;
    public static final Integer THEME_zero = 0;

//    长度10
    public 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;


}

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

相关推荐
寒月小酒8 小时前
第三章 索引构建(2-all -in-rag学习)
学习
天国梦9 小时前
中学生居家英语听力训练深度解析:从核心痛点到AI赋能的全链路方案
人工智能·学习
胡渠洋13 小时前
postman学习
学习·测试工具·postman
Amazing_Cacao14 小时前
CFCA精品可可产区风土解析(美洲):无情打破风味堆叠假象,建立时间轴上的层次动态阅读系统
学习
六点_dn15 小时前
Linux学习笔记-shell运算符
linux·笔记·学习
其实防守也摸鱼15 小时前
渗透--损坏的对象级别鉴权漏洞(Broken Object Level Authorization, BOLA)
大数据·网络·数据库·学习·tcp/ip·安全·安全威胁分析
念雨思15 小时前
信用卡权益对比:基于HarmonyOS + ArkTS的AI智能金融助手开发实践
人工智能·学习·华为·金融·harmonyos·鸿蒙
铅笔侠_小龙虾15 小时前
Rust 学习(2)-变量、常量与 shadowing
学习·算法·rust
it小生010115 小时前
从底层思维到高效行动,顶尖人才进阶核心修炼指南
学习·学习方法
恣逍信点16 小时前
《凌微经》通俗解读——哲学第一因
学习·职场和发展·创业创新·学习方法·业界资讯·交友·哲学