TIL - 2024/07/31

2024. 8. 5. 23:48· TIL

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
'TIL' 카테고리의 다른 글
  • TIL - 2024/08/02
  • TIL - 2024/08/01
  • TIL - 2024/07/30
  • TIL - 2024/07/29
기석김
기석김
깃허브: https://github.com/kiseokkm
기석김
김기석
기석김
전체
오늘
어제
  • 분류 전체보기 (141) N
    • 클라우드 (1)
    • 네트워크 (6) N
    • Github&Git (8)
    • CS (2)
    • 스터디 (1)
    • Spring (1)
    • 코딩테스트 (20)
      • Java (6)
      • Mysql (12)
      • Python (2)
    • TIL (93)
    • Intellij (2)
    • 회고 (5)
    • DB (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스파르타내일배움캠프
  • Java
  • mirror push
  • http
  • From
  • MySQL
  • 스파르타내일배움캠프TIL
  • 프로그래머스
  • intellij
  • til
  • SQL
  • bare clone
  • Git
  • fork 잔디
  • select
  • where
  • 내일배움캠프
  • github
  • 개발자질문
  • db

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
기석김
TIL - 2024/07/31
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.