自学内容网 自学内容网

【全栈】SprintBoot+vue3迷你商城(3)

【全栈】SprintBoot+vue3迷你商城(3)

1.postman的使用

由于我们是先写后端再写前端,所以我们可以利用postman来进行接口测试。

我们需要下载postman,之后创建一个账户,然后就可以创建相关接口了。

对于postman的详细使用,我们等在做接口测试的时候在详细演示。

2.注册初步

我们上期创建了两个对象,一个是用户、一个是商品。那么用户从何而来?

当然是注册而来的。有注册就有登录。所以这两个功能是需要最初实现的。

所需信息

那么注册需要获取什么信息呢?

首先是用户名;然后就是用户类型,它只能是普通用户或者商家

然后就是密码,为了确保输入密码的正确性,我们可以来一个再次输入密码

创建接口的思路

我们创建一个接口,肯定需要给它一个路由,以便去调用它。

然后为这个路由创建一个**控制器(controller)**以便接收并处理用户传过来的信息并返回处理后的结果

我们还需要创建service层来实现接口的逻辑以及mapper层来实现与数据库的交互。

演示

首先创建控制器

package com.janium.minimallbe.controller;
@RestController
@Validated
@RequestMapping("/user")
public class UserController {
     @Autowired
    private UserService userService;
     @PostMapping("/register")
    public Result register(@Pattern(regexp = "^\\S{6,18}$") String username,
                           @Pattern(regexp = "^\\S{6,18}$") String password,
                           @Pattern(regexp = "^(普通用户|商家)$") String userType,
                           @Pattern(regexp = "^\\S{6,18}$") String rePassword) {
        User u = userService.findByName(username);
        if (u == null) {
            if (password.equals(rePassword)) {
                userService.register(username,userType,password);
                return Result.success();
            }
            return Result.error("两次输入密码不一致!");
        }
        return Result.error("用户名已被占用!");
    }
}

接下来实现控制器里面的service层中的方法:

Userservice接口:

package com.janium.minimallbe.service;

import com.janium.minimallbe.pojo.User;

public interface UserService {

    User findByName(String username);

    void register(String username,String userType, String password);
}

方法实现:

package com.janium.minimallbe.service.impl;

import com.janium.minimallbe.mapper.UserMapper;
import com.janium.minimallbe.pojo.User;
import com.janium.minimallbe.service.UserService;
import com.janium.minimallbe.utils.Md5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;


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

    @Override
    public void register(String username, String userType,String password) {
        String md5String = Md5Util.getMD5String(password);
        userMapper.add(username,userType,md5String);
    }


}

然后就需要在mapper层中写与数据库交互的代码:

package com.janium.minimallbe.mapper;


import com.janium.minimallbe.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 findByName(String username);

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

接口的测试

在这里插入图片描述

在这里插入图片描述

3.登录初步

演示

接下来的代码都在User相关的层中续写

比如说,登录的控制器就在UserController中续写,方法就在UserService中续写……

登录的原理就是,首先在数据库中查找看看是否有一样的用户名,用户名找到后,判断密码是否正确,

正确了就说明登录成功,就分发一个token,凭借这个token来访问该用户的数据。

控制器

@PostMapping("/login")
    public Result login(
            @Pattern(regexp = "^\\S{6,18}$") String username,
            @Pattern(regexp = "^\\S{6,18}$") String password
    ){
        User u = userService.findByName(username);
        if(u == null){
            return Result.error("用户名错误");
        }
        if (u.getPassword().equals(Md5Util.getMD5String(password))) {
            Map<String, Object> claims = new HashMap<>();
            claims.put("id", u.getId());
            claims.put("username", username);
            String token= JwtUtil.genToken(claims);
            ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
            operations.set(token,token,12, TimeUnit.HOURS);
            return Result.success(token);
        }
        return Result.error("密码错误!");
    }

接口测试

在这里插入图片描述

4.总结

本期我们介绍了postman这一接口测试工具,并完成了对注册与登录功能接口的初步实现,下期我们将继续实现与用户相关的其他接口。


原文地址:https://blog.csdn.net/Janium/article/details/145266354

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!