写接口的流程
先做设计 代码实现 持续优化(复用代码,提取公共逻辑,/常量)
代码设计
查询用户
需要注意的地方
1.请求:查询用户用get请求(无请求体)
2.必须要鉴权:只有管理员可以查询和删除,更新用户
3.为啥是否是管理员要设置一个常量呢?1(ADMIN_ROLE) 0 (DEFAULT_ROLE),增强可读性(个人理解),不然写user.getRole() == 1 可读性不高
4.session失效时间配置(默认30分钟)
通俗点说就是设置一个过期登录时间
# 设置session登录态超时时间为24小时
session:
timeout: 86400
为什么要设置session失效
- 用户量很大之后,Session对象相应的也要创建很多。如果一味创建不释放,那么服务器端的内存迟早要被耗尽。
- 客户端关闭行为无法被服务端直接侦测,或者客户端较长时间不操作也经常出现,类似这些的情况,就需要对session的时限进行设置了
5.过滤掉返回给前端的信息:密码等加密信息(利用java8的map函数式编程可以丝滑过滤)
6.业务逻辑过于简单时,可以直接在controller层写业务,看人下菜嘛
接口代码实现
@GetMapping("/search")
public List<User> searchUser(String username,HttpServletRequest request){
if(!isAdmin(request)){
return new ArrayList<>();
}
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotBlank(username)){
queryWrapper.like("username",username);
}
return userService.list(queryWrapper);
}
删除用户
接口代码实现文章来源:https://www.toymoban.com/news/detail-861153.html
/**
* 删除用户
*/
@PostMapping("/delete")
public boolean deleteUser(@RequestBody Long id,HttpServletRequest request){
if(id < 0 || !isAdmin(request)){
return false;
}
return userService.removeById(id);
}
/**
* 是否是管理员
*/
public boolean isAdmin(HttpServletRequest request){
Object userobj = request.getSession().getAttribute(UserConstant.USER_LOGIN_STATE);
User user = (User) userobj;
if(user == null || user.getUserRole() != UserConstant.ADMIN_ROLE){
return false;
}
return true;
}
用户注销
即退出登录功能,与删除用户区分开,删除用户是将用户在数据库中逻辑删除,注销用户是移除用户登录态文章来源地址https://www.toymoban.com/news/detail-861153.html
request.getSession().removeAttribute(USER_LOGIN_STATE);
到了这里,关于伙伴匹配(后端)-- 查询,删除用户,用户注销接口开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!