实战篇06:更新用户头像

news2025/2/26 0:34:31

实战篇06:更新用户头像

一、接口信息

1.1 基本信息

请求路径:/user/updateAvatar

请求方式:PATCH

接口描述:该接口用于更新已登录用户的头像

1.2 请求参数

请求参数格式:queryString

请求参数说明:

参数名称说明类型是否必须备注
avatarUrl头像地址stringurl地址

请求数据样例:

avatarUrl=https://big-event-gwd.oss-cn-beijing.aliyuncs.com/9bf1cf5b-1420-4c1b-91ad-e0f4631cbed4.png

1.3 响应数据

响应数据类型:application/json

响应参数说明:

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

响应数据样例:

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

二、业务流程

Controller层使用patch方式接收参数,并使用Service和Mapper提供的头像更新函数进行头像更新

在这里插入图片描述

三、编写Controller

UserController中新增updateAvatar方法,接收参数是使用@RequestParam关键字表明参数需要从请求中获取

@PatchMapping("/updateAvatar")
public Result updateAvatar(@RequestParam String avatarUrl){
    userService.updateAvatar(avatarUrl);
    return Result.success();
}

四、编写Service

  1. 在接口类中新增更新头像方法
  2. 在实现类中实现更新头像方法:通过JWT的token获取到用户id,对此id进行头像更新
public interface UserService {
// 根据用户名查询用户
User findByUserName(String username);

// 注册
void register(String username, String password);

// 更新
void update(User user);

// 更新头像
void updateAvatar(String avatarUrl);
}

@Override
public void updateAvatar(String avatarUrl) {
    Map<String,Object> map = ThreadLocalUtil.get();
    Integer id = (Integer) map.get("id");
    userMapper.updateAvatar(avatarUrl, id);
}

五、编写Mapper

对输入参数进行sql更新,其中update_time使用sql语句now()获取当前时间进行更新

@Update("update user set user_pic=#{avatarUrl},update_time=now() where id=#{id}")
void updateAvatar(String avatarUrl, Integer id);

六、参数校验

在UserController层使用@URL关键字对输入参数avatarUrl进行URL地址校验

@PatchMapping("/updateAvatar")
public Result updateAvatar(@RequestParam @URL String avatarUrl){
    userService.updateAvatar(avatarUrl);
    return Result.success();
}

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

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

相关文章

【C语言】万字讲解函数栈帧的创建与销毁

目录 前言 一、什么是函数栈帧&#xff1f; 二、理解函数栈帧能解决什么问题呢 三、函数栈帧的创建和销毁解析 3.1 什么是栈&#xff1f; 3.2 认识相关寄存器和汇编指令 3.3 剖析函数栈帧的创建和销毁 3.3.1 esp寄存器与ebp寄存器的重要性 3.3.2 函数的调用堆栈 3.3.…

SUV新车首发在即,车载随身wifi受追捧!格行随身wifi怎么样?

眼看距离2024年北京车展开幕越来越近&#xff0c;有关各家车企的新车消息也是层出不穷&#xff0c;今年的北京车展到底还有哪些重磅新车呢&#xff1f; 吉利银河E5车展动作&#xff1a;首发车型特点&#xff1a;全新纯电动SUV 此前&#xff0c;吉利全新纯电动SUV——吉利银河…

MySql数据库从0-1学习-第三天多表设计学习

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)多对多一对一 一对多 需求:根据需求,完成部门和员工表的设计 一对多,很多人会使用外键,…

IP查询在追踪网络攻击源头中的应用

随着网络攻击事件的不断增加&#xff0c;追踪攻击源头成为网络安全领域的重要任务之一。IP查询技术通过分析网络流量中的IP地址&#xff0c;可以帮助确定攻击的来源。本文将探讨IP查询在追踪网络攻击源头中的应用&#xff0c;包括其原理、方法以及实际案例分析。 IP地址查询&a…

道可云文旅元宇宙平台:全面赋能文旅产业数字化转型

随着科技的迅猛发展&#xff0c;元宇宙、人工智能和虚拟数字人等技术逐渐成为推动社会进步的重要力量。在这一背景下&#xff0c;道可云文旅元宇宙平台以其独特的创新理念和前沿技术&#xff0c;为数字文博领域带来了革命性的变革。 道可云文旅元宇宙平台运用先进的元宇宙、人…

【软考---系统架构设计师】计算机网络章节

目录 一、TCP/IP协议族 &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;TCP和UDP的区别 &#xff08;3&#xff09;DNS协议 &#xff08;4&#xff09;DHCP协议 二、网络规划与设计 &#xff08;1&#xff09;需求分析 &#xff08;2&#xff09;通信规范…

OpenResty,Nginx实现接口验签与黑名单控制

介绍 nginx与openresty是两种优秀知名的7层负载均衡软件&#xff0c;nginx以其出色的性能和稳定性成为首选&#xff0c;而openresty则是在Nginx基础上构建的&#xff0c;支持嵌入Lua语言&#xff0c;大幅提升了开发效率。 安装OpenResty 版本 openresty-1.25.3.1-win64下载地…

【leetcode面试经典150题】36. 旋转图像(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

OSCP靶场--Dibble

OSCP靶场–Dibble 考点(前端鉴权参数修改node.js代码注入 suid cp提权 ) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.173.110 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-09 06:36 EDT Nmap scan repor…

一种快速移植 OpenHarmony Linux 内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者&#xff0c;介绍一种借助三方芯片平台自带 Linux 内核的现有能力&#xff0c;快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…

软件本地化:步骤、成本和障碍

瓦莱丽娅舍斯托博耶娃&#xff0c;Logrus IT翻译部门的经理&#xff0c;谈论了我们公司的运作方式、软件本地化是什么以及为什么它如此重要。 你能告诉我一些关于你们公司的情况吗&#xff0c;瓦莱丽娅&#xff1f;它做什么&#xff0c;成立多久了&#xff1f; Logrus IT今年…

袋鼠云春季发布会圆满落幕,构建Data+AI新质生产力

4月10日&#xff0c;以“DataAI&#xff0c;构建新质生产力”为主题的袋鼠云春季发布会圆满落幕。大会中&#xff0c;袋鼠云带来了一系列“AI”的数字化产品与最新行业沉淀&#xff0c;旨在将数据与AI紧密结合&#xff0c;打破传统的生产力边界&#xff0c;赋能企业实现更高质量…

基于springboot实现音乐网站管理系统项目【项目源码+论文说明】

基于SpringBoot实现音乐网站管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了音乐网站的开发全过程。通过分析音乐网站管理的不足&#xff0c;创建了一个计算机管理音乐网站的方案。文章介绍了音乐…

【pinia学习】pinia课程学习笔记

课程地址&#xff1a; VUE新一代状态管理工具Pinia超详细基础入门 贴两个链接&#xff1a; vue3官方文档 pinia官方文档 P1 《pinia的简介》 不得不说“开卷有益&#xff0c;学有所获”&#xff0c;前两天自己找pinia的官方文档好像也没找对&#xff0c;原来在vue3官方生态系…

万象皆歌everySings音乐与AI技术的邂逅,内测启动

在这个快节奏的数字时代&#xff0c;音乐依然扮演着连接人心、传递情感的重要角色。然而&#xff0c;音乐创作往往被视为门槛较高的艺术形式&#xff0c;需要复杂的理论知识和漫长的实践经验。但现在&#xff0c;随着人工智能技术的不断进步&#xff0c;让大众对音乐的获悉和交…

消息的可靠性·

面试题&#xff1a;Rabbitmq怎么保证消息的可靠性? 1.消费端消息可靠性保证&#xff1a; 消息确认&#xff08;Acknowledgements&#xff09;&#xff1a; 消费者在接收到消息后&#xff0c;默认情况下RabbitMQ会自动确认消息&#xff08;autoAcktrue&#xff09;。为保证消…

JS加密:对比JScrambler和JShaman加密效果

本文&#xff0c;以一个实例&#xff0c;比对JS加密两大神器&#xff1a;JScrambler、JShaman的加密结果&#xff0c;看看谁的加密效果更好。 注&#xff1a;本文不是技术文章&#xff0c;仅仅从加密结果的“型”上简单观查&#xff0c;不做技术分析&#xff0c;仅看哪个加密代…

【学习笔记】3、逻辑门电路

3.1 MOS逻辑门电路 按照器件结构的不同形式&#xff0c;分为NMOS、PMOS、CMOS三种逻辑门电路。 3.1.1 CMOS CMOS电路成为主导地位的逻辑器件。工作速度&#xff1a;赶上甚至超过TTL电路。&#xff08;早期CMOS速度慢&#xff0c;后来工艺提升速度变快&#xff09;功耗和抗干…

【讲解下TypeScript的基础知识点】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

RK3568驱动指南|第二篇 字符设备基础-第15章 文件私有数据实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…