实战篇06:更新用户头像

实战篇06:更新用户头像

一、接口信息

1.1 基本信息

请求路径:/user/updateAvatar

请求方式:PATCH

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

1.2 请求参数

请求参数格式:queryString

请求参数说明:

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

请求数据样例:

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

1.3 响应数据

响应数据类型:application/json

响应参数说明:

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

响应数据样例:

{
    "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();
}

相关推荐

  1. uniapp获取用户头像

    2024-04-12 04:10:05       84 阅读
  2. android 快速实现 图片获取并裁剪(更换头像

    2024-04-12 04:10:05       43 阅读
  3. 02更新用户在线状态

    2024-04-12 04:10:05       21 阅读
  4. SpringBoot实现上传头像(查看头像)

    2024-04-12 04:10:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 04:10:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 04:10:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 04:10:05       82 阅读
  4. Python语言-面向对象

    2024-04-12 04:10:05       91 阅读

热门阅读

  1. UVA230 Borrowers 图书管理系统 解题报告

    2024-04-12 04:10:05       39 阅读
  2. Python:闭包

    2024-04-12 04:10:05       45 阅读
  3. Web蓝桥杯刷题记录——燃烧你的卡路里

    2024-04-12 04:10:05       37 阅读
  4. oracle全量、增量备份

    2024-04-12 04:10:05       39 阅读
  5. 【Python】Python中大文件切割的艺术

    2024-04-12 04:10:05       41 阅读
  6. leetcode解题思路分析(一百五十五)1352 - 1358 题

    2024-04-12 04:10:05       37 阅读
  7. 0411代码,备战蓝桥杯基础数据结构

    2024-04-12 04:10:05       34 阅读
  8. fzf模糊查找工具

    2024-04-12 04:10:05       32 阅读
  9. 我心目中的福克斯和马自达

    2024-04-12 04:10:05       38 阅读
  10. Redis面试题1

    2024-04-12 04:10:05       39 阅读
  11. jQuery 数字金额转化为英文大写

    2024-04-12 04:10:05       37 阅读