수정할 데이터를 받아오기 위해 request dto를 추가했다.
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UpdateUserRequestDto {
@NotNull
String user_password;
@NotNull
String user_name;
}
put 메소드를 사용할 시 클라이언트가 해당 정보를 모두 안다는 가정이 필요하다.
그래서 바꾸고 싶은 데이터만 받아와 변경할 수 없고 필요한 데이터를 모두 받아야 한다.
@PutMapping("/{id}")
public void updateUser(@PathVariable @Valid long id, @RequestBody UpdateUserRequestDto updateUserRequestDto){
userMinjService.updateUser(id, updateUserRequestDto);
}
@Transactional
public void updateUser(long id, UpdateUserRequestDto updateUserRequestDto){
UserMinj userMinj = userRepository.findById(id).orElseThrow();
userMinj.updateUser(updateUserRequestDto.getUser_password(), updateUserRequestDto.getUser_name());
}
먼저 id가 유효한지 확인을 한다. 존재하지 않는 id라면 예외 처리를 한다. 아직 구현하지는 않았다.
User entity에 업데이트 메소드를 구현하여 매개변수로 password와 name을 받는 형식으로 구현했다.
User entity
public void updateUser(String user_password, String user_name){
this.user_password = user_password;
this.user_name = user_name;
}