springboot实战学习(11)(更新用户基本信息接口主逻辑)

news2024/10/9 6:43:19
  • 接着继续学习。
  • 之前的博客的进度:完成用户模块的注册接口的开发以及注册时的参数合法性校验。在基本完成用户模块的登录接口的主逻辑的基础上,学习了"JWT令牌的组成与使用"、完成了"登录认证"(生成与验证JWT令牌)。也完成了获取用户详细信息接口开发(使用ThreadLocal优化)。具体往回看了解的链接如下。

springboot实战学习(10)(ThreadLoacl优化获取用户详细信息接口)(重写拦截器afterCompletion()方法)_loacalthread springboot-CSDN博客

  • 下面开发用户模块的第四个接口——更新用户基本信息。

目录

一、明确需求

(1)更新用户基本信息

二、查阅接口文档

(1)请求路径、请求方式

PUT请求。

(2)请求参数

(3)响应数据

三、分析实现思路

(1)UserController层

(I)方法外

(II)方法内

(III)其它层

四、完成代码书写

(1)UserController层

(2)UserService层

(I)接口(UserService)

(II)实现类(UserServiceImpl)

(3)UserMapper层

五、postman测试程序

(1)写好所需主逻辑,重启工程。

(2)打开postman测试接口。

(3)查看当前数据库表中已经注册的用户。

(4)点击测试,发现问题(需要登录认证)


一、明确需求

(1)更新用户基本信息
  • 用户在个人中心,点击基本资料后,在页面的主区域会展示当前用户的详细信息。
  • 用户可以修改用户的个人昵称、用户的个人邮箱。
  • 当点击"提交修改",从而访问后台的接口去更新当前用户的信息。
  • 其中用户的登录名称无法修改(置灰)。因为一旦注册完,不允许修改,用户名唯一。

二、查阅接口文档

(1)请求路径、请求方式
  • 因为是更新,所以请求方式用PUT。

  • PUT请求。
  • 当你想更新某个资源时,使用 HTTP 的 PUT 方法是常见的做法。
  • PUT方法通常用于完全替换目标资源的当前表示。这与GET方法(用于请求资源)和 POST方法(通常用于创建新资源)有所不同。

(2)请求参数
  • 请求参数的格式是JSON格式。
  • 注意username(用户名)这个参数不是必须的。

(3)响应数据
  • 响应数据的格式是JSON格式。
  • 还是和之前一样:"code"、"message"、"data"。

三、分析实现思路

(1)UserController层
(I)方法外
  • 在UserController中添加一个"更新"方法。并且在方法上添加注解@PutMapping()。请求路径"/update"。
  • 其次,浏览器会携带"id"、"username"、"nickname"、"email"这样的数据,并且是在请求体中以JSON格式的携带过去。
  • 所以可以把这些数据封装到实体类对象"user"里面进行接收。
  • 其次为了让框架能够自动的把请求体里的JSON数据给我们转换成实体类对象。所以需要在方法中的参数前面添加一个注解@RequestBody

(II)方法内
  • 调用UserService层里面提供的更新方法,完成"更新"操作即可。
(III)其它层
  • 所以UserService层需要提供"更新"相关的方法

  • UserMapper层也需要执行对应的SQL语句。而且在这里注意并没有去更新"username"(用户名不能修改)。并且有一个"update_time"字段需要更新

四、完成代码书写

(1)UserController层
@PutMapping("/update")
    public Result update(@RequestBody User user){
        userService.update(user);
        return Result.success();
    }
(2)UserService层
(I)接口(UserService)
//更新
    void update(User user);
(II)实现类(UserServiceImpl)
 @Override
    public void update(User user) {
        //设置更新时间
        user.setUpdateTime(LocalDateTime.now());
        userMapper.update(user);
    }
(3)UserMapper层
//更新
    @Update("update user set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id =#{id}")
    void update(User user);

五、postman测试程序

(1)写好所需主逻辑,重启工程。
(2)打开postman测试接口。

(3)查看当前数据库表中已经注册的用户。

(也就是查看其id,然后拿去测试"更新"操作)

(4)点击测试,发现问题(需要登录认证)


  • 重新登录,获取最新JWT令牌,然后赋值给请求头。


  • 请求头:Authorization


  • 再次测试。

  • 成功更新数据库用户表(user)里面的对应字段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图示详解OpenEuler下 DNS安装、配置与测试

前言 DNS配置内容、步骤、参数较多,初学者很难短时间掌握,另外,理解DNS工作原理也有一定的难度,一次配置成功的概率不大,因此,建议在配置DNS之前,先读一下之前笔者的博文《详解DNS工作原理及实…

AutoDL服务器训练YOLOv8全过程

AutoDL服务器训练YOLOv8全过程 关于作者 作者:小白熊 作者简介:精通python、matlab、c#语言,擅长机器学习,深度学习,机器视觉,目标检测,图像分类,姿态识别,语义分割&…

TCP_SOCKET编程实现

文章目录 与UDP_SOCKET的区别第一代Tcp_ServerTcp_Client第二代Tcp_Server第三代Tcp_server多线程版本Tcp_Server线程池版的Tcp_Server使用inet_ntop来解决线程安全问题 业务逻辑编写总结补充说明&&业务代码完成ping的真实作用Translate编写Transform业务代码 整体总结…

基于Web的实时动作捕捉工具

随着Web技术的不断发展,实时动作捕捉已经成为可能。一款名为MiKaPo的基于Web的实时动作捕捉工具应运而生,它能够捕捉视频中的人物动作并将其应用到3D模型上。本文将详细介绍MiKaPo的核心功能、技术栈、工作原理以及其优势和应用场景。 1. 概述 MiKaPo是一款基于Web的实时动…

gaussdb hccdp认证模拟题(单选)

1.在GaussDB逻辑架构中,由以下选项中的哪一个组件来负责提供集群日常运维、配置管理的管理接口、工具?(1 分) A. CN B. DN C. GTM D. OM --D 2.在以下命令中,使用以下哪一个选项中的命令可以以自定义归档形式导出表t1的定义&#xf…

◇【论文_20181020 v6】广义优势估计器 (generalized advantage estimator, GAE)

https://arxiv.org/abs/1506.02438 ICLR 2016 加州伯克利 电子工程与计算机科学系 High-Dimensional Continuous Control Using Generalized Advantage Estimation 文章目录 摘要1 引言2 预备知识3 优势函数估计4 解释为 奖励设计reward shaping5 价值函数估计6 实验6.1 策略优…

计算机毕业设计-自主完成指南

计算机毕业设计通常都涉及到较为复杂的软件系统,许多同学在选定课题之后,往往处于一种懵懂的状态,不知道如何着手开展工作。现在,让我们转换一种视角,把毕设想象成自己逐步开发的一款产品。最终在答辩环节,…

0,Verilog基础专栏说明

给大家推荐一个好用的Verilog基础训练网站HDL Bits,专用于Verilog语言的练习,非常丰富并且包含仿真。 注:本专栏内容涉及到的Verilog相关题目均为HDL Bits网站上内容,解题代码均为原创。 1,章节分类 1,V…

Qt设计登录界面

优化登录框: 将两个按钮连接到槽函数 在构造函数中定义 connect(this->btn1,&QPushButton::clicked,this,&Logon::my_slot);connect(this->btn2,&QPushButton::clicked,this,&Logon::my_cancel); 定义登录按钮连接的槽函数 void Logon::my…

【物流配送中心选址问题】基于退火算法混合粒子群算法

课题名称: 基于退火算法混合粒子群算法的物流配送中心选址问题 改进方向:模拟退火算法优化粒子群算法 代码获取方式(付费): 模型说明: 待补充 Matlab仿真结果: 1. 模型优化后的仿真结果 2…

【笔记】Day1的代码总结

代码中自定义接口AuthFilter的实现用了自定义类名称ManagerTokenGatewayFilterFactory继承抽象类抽象网关过滤器AbstractGatewayFilterFactory 用来实现AuthFilter接口的auth()方法 白名单路径:写在.yml文件中的sl.noAuthPath中

844.比较含退格的字符串

题目:844. 比较含退格的字符串 - 力扣(LeetCode) 思路:首先要知道这个#的意思是可以将前面一个数清空,(当时 我以为是将前面一串清空。。。看了半天),由于 # 号只会消除左边的一个字符,所以对右边的字符无影响&#x…

超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo

Molmo是由艾伦人工智能研究所(Ai2)发布的一系列多模态人工智能模型,旨在提高开放系统在性能上与专有系统(如商业模型)之间的竞争力。以下是对Molmo的详细总结: Molmo是什么: Molmo是基于Qwen2和…

分布式事务讲解 - 2PC、3PC、TCC

分布式事务讲解 - 2PC、3PC、TCC 前置知识 BASE理论: BASE是Basically Availbale(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)三个词语的缩写。BASE理论是对CAP理论中AP的一个扩展,通过牺牲强一致性来获得可用性,当…

2024最新分别用sklearn和NumPy设计k-近邻法对鸢尾花数据集进行分类(包含详细注解与可视化结果)

本文章代码实现以下功能: 利用sklearn设计实现k-近邻法。 利用NumPy设计实现k-近邻法。 将设计的k-近邻法对鸢尾花数据集进行分类,通过准确率来验证所设计算法的正确性,并将分类结果可视化。 评估k取不同值时算法的精度,并通过…

基于SpringBoot的轻量级CRM管理系统+搭建教程

运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 技术框架:SpringBoot lombok MyBatis 分页助手 freemarker SpringMVC SpringMail 系统功能: 这是一套轻量级的crm管理系统源码,基于SSM的SpringBoot架构。 这套源码用到很多潮流技术…

清华大模型公开课第二季 | Lecture 2 神经网络与大模型基础 Part 1

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 大纲 引言 课程介绍 主讲人介绍 课程内容概述 神经网络基础知识 神经网络的定义和结构 神经元的基本单元 多维输入和权重…

从《被程序员耽搁的外卖员》看IT就业前景

《被程序员耽搁的外卖员》这部作品乍一看,似乎只是一个轻松幽默的故事,讲述一位外卖员因为学习编程而改变生活轨迹的小故事。然而,它在反映社会现实、揭示IT行业就业前景方面具有诸多启示。本文旨在通过此故事来分析当前IT就业的现状和未来发…

Spring Boot读取resources目录下文件(打成jar可用),并放入Guava缓存

1、文件所在位置&#xff1a; 2、需要Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>3、启动时就读取放入缓存的代码&#xf…

​Leetcode 746. 使用最小花费爬楼梯​ 入门dp C++实现

问题&#xff1a;Leetcode 746. 使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你…