实战篇02:注册接口

实战篇02:注册接口

一、注册

1.1、接口信息

1.1.1 基本信息

请求路径:/user/register

请求方式:POST

接口描述:该接口用于注册新用户

1.1.2 请求参数

请求参数格式:x-www-form-urlencoded

请求参数说明:

参数名称 说明 类型 是否必须 备注
username 用户名 string 5~16位非空字符
password 密码 string 5~16位非空字符

请求数据样例:

username=zhangsan&password=123456
1.1.3 响应数据

响应数据类型:application/json

响应参数说明:

名称 类型 是否必须 默认值 备注 其他信息
code number 必须 响应码, 0-成功,1-失败
message string 非必须 提示信息
data object 非必须 返回的数据

响应数据样例:

{
    "code": 0,
    "message": "操作成功",
    "data": null
}

1.2、生成结果实体类

  1. 在pojo文件夹中新建Result.java
package com.example.bigevent.pojo;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@NoArgsConstructor  // 使用lombok生成无参数构造方法
@AllArgsConstructor // 使用lombok生成全参数构造方法
@Data
public class Result<T> {
    private Integer code;//业务状态码  0-成功  1-失败
    private String message;//提示信息
    private T data;//响应数据

    //快速返回操作成功响应结果(带响应数据)
    public static <E> Result<E> success(E data) {
        return new Result<>(0, "操作成功", data);
    }

    //快速返回操作成功响应结果
    public static Result success() {
        return new Result(0, "操作成功", null);
    }

    public static Result error(String message) {
        return new Result(1, message, null);
    }
}

1.3、业务分析

  1. 在Controller文件夹中新建一个UserController用于实现注册
    1. 声明PostMapping,url路径:register
    2. 方法:确认用户名是否被占用;进行注册
  2. 在Service文件夹中生成UserService
  3. 在Mapper中生成UserMapper,用于和数据库进行交互

在这里插入图片描述
在这里插入图片描述

1.4、编写UserController

  1. 由于需要查询数据库,所以需要使用service层,因此自动化注入一个userService,待会实现它
  2. 定义一个注册行为,接收用户名和密码,检查用户名是否被占用,通过则进行注册
package com.example.bigevent.controller;

import com.example.bigevent.pojo.Result;
import com.example.bigevent.pojo.User;
import com.example.bigevent.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    @PostMapping("/register")
    public Result register(String username, String password){
        // 查询用户名是否被占用
        User u = userService.findByUserName(username);
        if (u==null){
            // 没有占用,进行注册
            userService.register(username,password);
            return Result.success();
        }else {
            return Result.error("用户名已被占用");
        }
        // 注册
    }
}

1.5、编写UserService

  1. 编写接口,定义查询用户名函数和注册函数
package com.example.bigevent.service;

import com.example.bigevent.pojo.User;

public interface UserService {
    // 根据用户名查询用户
    User findByUserName(String username);

    // 注册
    void register(String username, String password);
}
  1. 编写实体类
    1. 定义数据库交互mapper
    2. 在注册中,对密码进行md5加密
    3. 在pom中引入md5加密工具依赖
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>
package com.example.bigevent.service.impl;

import com.example.bigevent.mapper.UserMapper;
import com.example.bigevent.pojo.User;
import com.example.bigevent.service.UserService;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public User findByUserName(String username) {
        return userMapper.findByUserName(username);
    }

    @Override
    public void register(String username, String password) {
        // 密码md5加密
        String md5String = DigestUtils.md5Hex(password);
        userMapper.add(username,md5String);
    }
}

1.6、添加UserMapper

  1. 编写接口,定义用户查找和添加功能
package com.example.bigevent.mapper;

import com.example.bigevent.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
    // 根据用户名进行查询
    @Select("select  * from user where username=#{username}")
    User findByUserName(String username);

    // 添加
    @Insert("insert into user (username,password,create_time,update_time) " +
            "values (#{username},#{md5String},now(),now())")
    void add(String username, String md5String);
}

1.7、功能测试

  1. 启动springboot工程
  2. 使用postman发送post信息,进行注册

在这里插入图片描述

相关推荐

  1. 应急响应实战笔记02日志分析(2)

    2024-04-02 08:44:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 08:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 08:44:02       18 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 08:44:02       17 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 08:44:02       20 阅读

热门阅读

  1. 机器视觉系统-分辨率、信噪比、动态范围

    2024-04-02 08:44:02       16 阅读
  2. 6-88 Print the right subtree of X in BST

    2024-04-02 08:44:02       14 阅读
  3. 如何重置woocommerce,如何批量删除woocommerce产品

    2024-04-02 08:44:02       13 阅读
  4. StarRocks部署

    2024-04-02 08:44:02       11 阅读
  5. WPF —— 动画

    2024-04-02 08:44:02       13 阅读
  6. react 父子组件的渲染机制 | 优化手段

    2024-04-02 08:44:02       14 阅读
  7. leetcode76最后一个测试用例无法通过

    2024-04-02 08:44:02       13 阅读
  8. SeLinux安全上下文文件

    2024-04-02 08:44:02       13 阅读