实战篇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
- 在接口类中新增更新头像方法
- 在实现类中实现更新头像方法:通过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();
}