😺
Re:ゼロから始めるSpring Boot実践#1 WebBlog開発#4 ユーザ情報取得
機能一覧※再掲
- ユーザ
1.1 新規登録
1.2 ログイン
1.3 ユーザ情報取得 ← 本記事の内容
1.4 ユーザ情報更新
1.5 アバター画像変更
1.6 パスワード変更 - 記事カテゴリ
略 - 記事管理
略
API設計
1.2 ログイン
1.2.1 基本情報
リクエストパス:
/user/info
リクエスト方式:GET
インターフェース概要:このインターフェースはログインに使用される。
1.2.2 リクエストパラメータ
リクエストパラメータ形式:x-www-form-urlencoded
リクエストデータ例:
```json
{
"code": 0,
"message": "処理成功",
"data": {
"id": 5,
"username": "山田",
"nickname": "",
"email": "",
"userPic": "",
"createTime": "2023-09-02 22:21:31",
"updateTime": "2023-09-02 22:21:31"
}
}
API開発
1. 開発するメソッド・クラスを考える
1.1 ユーザ情報取得
- UserControllerにuserinfoメソッドを作成し、以下の機能を実現
(1). ユーザー名を用いてユーザを検索し、userエンティティを返す。 - UserviceにfindeByUsernameメソッドを作成し以下の機能を提供
(1). ユーザー名を用いてユーザを検索 - UserMapperにユーザ名検索メソッドを作成以下のsql文を発行
(1). select * from user where username=?;
2. Controller作成
UserControllerクラスに以下のメソッドを追加
@GetMapping("/userInfo")
public Result<User> userInfo(@RequestHeader(name="Authorization") String token){
Map<String, Object> map = JwtUtil.parseToken(token);
String username = (String) map.get("username");
User user = userService.findByUserName(username);
return Result.success(user);
}
4. SeriveとMapperの作成
UserServiceImplには、findByUserNameメソッドはは作成済みのため作業不要。
5. Userエンティティクラスの修正
レスポンスデータからpasswordを消すために、passwaord変数に @JsonIgnore
を付ける。
@Data
public class User {
private Integer id;//主キーID
private String username;//ユーザー名
@JsonIgnore //Json形式に変換される際に、passwordをspringmvcに除外させるため
private String password;//パスワード
private String nickname;//Nickname
private String email;//メアド
private String userPic;//プロフィール写真
private LocalDateTime createTime;//作成日時
private LocalDateTime updateTime;//更新日時
}
6. Mybatisの設定を更新
DBのカラム命名とJavaの命名規則が違うため、自動変換できるようにした。
これを入れないと、createTimeとupdateTimeのデータがnullになってしまう。
mybatis:
configuration:
map-underscore-to-camel-case: true #スネークケースからキャメルケースへの自動変換を有効にする。
APIテスト
PostmanでログインAPIを叩いて、ユーザ情報を取得できるかを確認。
Discussion