【全栈】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)!