😽

Re:ゼロから始めるSpring Boot実践#1 WebBlog開発#7 アバター画像変更

に公開

機能一覧※再掲

  1. ユーザ
    1.1 新規登録
    1.2 ログイン
    1.3 ユーザ情報取得
    1.4 ユーザ情報更新
    1.5 アバター画像変更 ← 本記事の内容
    1.6 パスワード変更
  2. 記事カテゴリ
  3. 記事管理

API設計

1.5.1 APIの基本情報

  • リクエストパス:/user/updateAvatar
  • リクエスト方式:PATCH
  • インターフェース説明:このインターフェースは、ログイン中のユーザーのアバター(プロフィール画像)を更新するために使用される。

1.5.2 リクエストパラメータ

  • リクエストパラメータ形式:queryString
  • リクエストデータ例:
avatarUrl=https://aaa.bbb.com/fdsafdsa.png

1.5.3 レスポンスデータ

  • レスポンスデータ形式:application/json
  • レスポンスパラメータの説明:
{
    "code": 0,
    "message": "操作成功",
    "data": null
}

API開発

1. 開発するメソッド・クラスを考える

1.1 ユーザ情報更新

2. Controller作成

UserControllerクラスに以下のメソッドを追加

    @PatchMapping("updateAvatar") //エンティティの一部パラメータのみ更新するので、@PatchMappingを使う。
    public Result updateAvator(@RequestParam @URL String avatarUrl){//avatarUrlがURL形式になっていることを検証する。
        userService.updateAvator(avatarUrl);
        return Result.success();
    }

4. SeriveとMapperの作成

  • UserServiceImplクラスに以下のメソッドを追加
    @Override
    public void updateAvator(String avatarUrl) {
        Map<String, Object> map = ThreadLocalUtil.get(); //ThreadLocalからuseridを取得
        Integer id = (Integer) map.get("id");
        userMapper.updateAvator(avatarUrl,id);
    }
  • UserMapperクラスに以下のメソッドを追加
    // ユーザアバター画像変更
    @Update("update rezerosb_weblog.user set user_pic=#{avatarUrl}, update_time=now() where id=#{id}")
    void updateAvator(String avatarUrl, Integer id);

APIテスト

PostmanでAPIを実行してみた。

  • アバター画像変更APIを実行した結果:
    成功例:

    失敗例:

  • ユーザ情報を取得するAPIを実行した結果:

Discussion