validation 적용을 하려고 한다 . @valid
적용 할 목록
이메일 필드에 이메일 형식 검증 추가
비밀번호 필드에 대소문자, 숫자, 특수문자(~!@#$%^&*) 포함 최소 8자 이상 검증 추가
스페이스 네임 필드에 최대 20자 미만 검증 추가
is_public 필드에 Y 또는 N 값 검증 추가
채널 이름 필드에 최대 50자 미만 검증 추가
채널 타입 필드에 T 또는 V 값 검증 추가
/**
* ChannelController는 채널 관련 API 요청을 처리
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/spaces/{spaceId}/channels")
public class ChannelController {
private final ChannelFacade channelFacade;
@PostMapping
public Mono<ResponseEntity<ChannelResponseDto>> createChannel(@PathVariable Long spaceId, @Valid @RequestBody ChannelRequestDto requestDto) {
return channelFacade.createChannel(spaceId, requestDto)
.map(ResponseEntity::ok);
}
@GetMapping
public Flux<ChannelResponseDto> getChannels(@PathVariable Long spaceId) {
return channelFacade.getChannels(spaceId);
}
@PutMapping("/{channelId}")
public Mono<ResponseEntity<ChannelResponseDto>> updateChannel(@PathVariable Long channelId, @Valid @RequestBody ChannelRequestDto requestDto) {
return channelFacade.updateChannel(channelId, requestDto)
.map(ResponseEntity::ok);
}
@DeleteMapping("/{channelId}")
public Mono<ResponseEntity<String>> deleteChannel(@PathVariable Long channelId) {
return channelFacade.deleteChannel(channelId)
.then(Mono.just(ResponseEntity.ok(ChannelSuccessCode.CHANNEL_DELETE.getMsg())));
}
}
이 코드 보면 알듯이 @valid를 추가했다!
dto에 어노테이션 추가했다
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Builder
public class ChannelRequestDto {
@NotBlank(message = "채널 이름은 필수 입력 항목입니다.")
@Size(max = 50, message = "채널 이름은 50자 미만이어야 합니다.")
private String channelName;
@NotBlank(message = "채널 타입은 필수 입력 항목입니다.")
@Pattern(regexp = "^[TV]$", message = "채널 타입은 T 또는 V이어야 합니다.")
private String channelType;
}
@AllArgsConstructor
@Getter
public class UserRequestDto {
private String nickname;
@Email(message = "이메일 형식이 올바르지 않습니다.")
@NotBlank(message = "이메일은 필수 입력 항목입니다.")
private String email;
@NotBlank(message = "비밀번호는 필수 입력 항목입니다.")
@Pattern(
regexp = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[~!@#$%^&*]).{8,}$",
message = "비밀번호는 대소문자, 숫자, 특수문자(~!@#$%^&*)를 포함하여 8자 이상이어야 합니다."
)
private String password;
private String intro;
}
아, 그리고 username을 nickname으로 변경도 해줬다.
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UpdateProfileRequestDto {
private String nickname;
private String intro;
}
다른 컨트롤러도 @valid를 추가해 주고, sql도 user name에서 nickname으로 변경했다.
'TIL' 카테고리의 다른 글
TIL - 2024/08/02 (0) | 2024.08.10 |
---|---|
TIL - 2024/08/01 (0) | 2024.08.10 |
TIL - 2024/07/30 (0) | 2024.08.05 |
TIL - 2024/07/29 (0) | 2024.08.05 |
TIL - 2024/07/28 (0) | 2024.08.02 |