Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JPA주의사항
- json
- json gson 차이
- JoinColumn
- JPA
- jwt메서드
- 최종 프로젝트
- ERD 작성
- github
- 빈생성안됨
- @IdClass
- Filter
- 인텔리제이
- Spring Spring boot 차이
- git
- REST API 규칙
- queryDSL
- Error creating bean with name
- 스프링 부트 기능
- 스프링 부트 공식 문서
- REST란
- Q 클래스
- uncheck Exception
- Unsatisfied dependency
- jpa에러
- 스프링부트오류
- spring서버
- 1차캐시
- 복합키
- jpa회원가입
Archives
- Today
- Total
Everyday Dev System
중요한 Validation, 예외처리 본문
회원가입에 Validation 적용하기
2023.06.20 - [내배캠 주요 학습/Spring 심화] - Validation, 회원가입 데이터에 적용하기
1. build.gradle에 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
@NotBlank
@Positive(message = "양수만 가능합니다.")
@Negative(message = "음수만 가능합니다.")
@Size(min=2, max=10)
@Max(10)
@Min(2)
@NotNull | null 불가 |
@NotEmpty | null, ""불가 |
@NotBlank | null, "", " " 불가 |
@Size | 문자 길이 측정 |
@Max | 최대값 |
@Min | 최소값 |
@Positive | 양수 |
@Negative | 음수 |
E-mail 형식 | |
@Pattern | 정규 표현식 |
2.
Code:
[dto] - ProductRequestDto.java
package com.sparta.springauth.dto;
import jakarta.validation.constraints.*;
import lombok.Getter;
@Getter
public class ProductRequestDto {
@NotBlank
private String name;
@Email
private String email;
@Positive(message = "양수만 가능합니다.")
private int price;
@Negative(message = "음수만 가능합니다.")
private int discount;
@Size(min=2, max=10)
private String link;
@Max(10)
private int max;
@Min(2)
private int min;
}
[controller] - ProductController.java 맨 아래에 메서드 추가
@PostMapping("/validation")
@ResponseBody
public ProductRequestDto testValid(@RequestBody @Valid ProductRequestDto requestDto) {
return requestDto;
}
ProductRequestDto에 필드에 Bean Validation 어노테이션을 기재했다고 적용이 되는것이 아니다.
Controller 메서드의 파라미터에
@Valid ProductRequestDto requestDto
라고 기재해야 적용이 된다.
이는, Validation을 실행시키고자 하는 Dto 타입 앞에 @Valid 기재하여 Spring에게 예외처리를 할 것이라고 고지하는 것이다.
Postman 활용
- 여기에는 Cookie가 없으므로 복사해와야 함.
1) send 버튼 아래 Cookies에 들어가서 "localhost"를 입력 후 add domain
2) Add cookie를 해서 value부분에 복사한 값을 붙혀넣기
3) name부분는 Authorization 입력 후 save
왼쪽 사진은 오류 , 오른쪽 사진은 정상 작동됨
요청 데이터에서 notnull로 Validation되어 있는 name에 값을 빼고 보내봤다.
거부당하며 서버에 오류가 떴다.
아래와 같이 서버에 오류 메시지가 보인다.
Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.sparta.springauth.dto.ProductRequestDto com.sparta.springauth.controller.ProductController.testValid(com.sparta.springauth.dto.ProductRequestDto): [Field error in object 'productRequestDto' on field 'name': rejected value []; codes [NotBlank.productRequestDto.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [productRequestDto.name,name]; arguments []; default message [name]]; default message [공백일 수 없습니다]] ]
'내배캠 주요 학습 > Spring 숙련' 카테고리의 다른 글
RestTemplate - get방식 : Client 서버 코드 설명 (0) | 2023.06.20 |
---|---|
Validation, 회원가입 데이터에 적용하기 (0) | 2023.06.20 |
Spring Secutiry (0) | 2023.06.20 |
Spring 에서 Filter란? (0) | 2023.06.20 |
로그인 구현하기 (0) | 2023.06.19 |