⛳
Re:ゼロから始めるSpring Boot実践#1 WebBlog開発#6 ユーザ情報更新
機能一覧※再掲
- ユーザ
1.1 新規登録
1.2 ログイン
1.3 ユーザ情報取得
1.4 ユーザ情報更新 ← 本記事の内容
1.5 アバター画像変更
1.6 パスワード変更 - 記事カテゴリ
略 - 記事管理
略
API設計
1.4.1 基本情報
- リクエストパス:/user/update
- リクエスト方式:PUT
- インターフェース説明:このインターフェースは、ログイン中のユーザーの基本情報(アバターとパスワードを除く)を更新するために使用されます。
1.4.2 リクエストパラメータ
- リクエストパラメータ形式:application/json
- リクエストデータ例:
{
"id":5,
"username":"wangba",
"nickname":"wb",
"email":"wb@itcast.cn"
}
API開発
1. 開発するメソッド・クラスを考える
1.1 ユーザ情報更新
- UserControllerにupdateメソッドを作成し、以下の機能を実現
(1). ユーザ情報を更新するサービスを呼び出し、実行結果を返す。 - Userviceにupdateメソッドを作成し以下の機能を提供
(1). ユーザー情報を更新するuserMapperを呼び出し、userエンティティを返す。 - UserMapperにユーザー情報を更新するメソッドを作成以下のsql文を発行
(1). update user set nickname=?,email=?,update_time=? where id=?;
2. Controller作成
UserControllerクラスに以下のメソッドを追加
@PutMapping("/update")
public Result update(@RequestBody @Validated User user){//@Validatedを使ってエンティティのパラメータを検証する。
userService.update(user);
return Result.success();
}
4. SeriveとMapperの作成
- UserServiceImplクラスに以下のメソッドを追加
@Override
public void update(User user) {
user.setUpdateTime(LocalDateTime.now());
userMapper.update(user);
}
- UserMapperクラスに以下のメソッドを追加
// ユーザ情報更新
@Update("update rezerosb_weblog.user set nickname=#{nickname},email=#{email},update_time=#{updateTime} where id=#{id}")
void update(User user);
5. Userエンティティクラスの修正
入力データのバリデーションを行うためのアノテーションを追加した。
@Data
public class User {
@NotNull //今回追加した部分。
private Integer id;//主キーID
private String username;//ユーザー名
@JsonIgnore //Json形式に変換される際に、passwordをspringmvcに除外させるため
private String password;//パスワード
@NotEmpty //今回追加した部分。
@Pattern(regexp = "^\\S{1,10}$") //今回追加した部分。
private String nickname;//Nickname
@NotEmpty //今回追加した部分。
@Email //今回追加した部分。
private String email;//メアド
private String userPic;//プロフィール写真
private LocalDateTime createTime;//作成日時
private LocalDateTime updateTime;//更新日時
}
APIテスト
Postmanでユーザ情報を更新するAPIを実行した後、ユーザ情報を取得するAPIを実行しレスポンスデータを確認する。
Discussion