반응형
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 | 29 |
30 | 31 |
Tags
- 자바스크립트
- 프로그래머스
- 큐
- BFS
- RPA
- Algorithm
- Ai
- 로보어드바이저
- 파이썬
- JavaScript
- React #Web #프런트엔드
- 자료구조
- SSAFY
- BAEKJOON
- JS
- 백준
- frontend
- 혁신금융서비스
- 알고리즘
- algorithms
- Python
- 모던자바스크립트
- 일임형
- dfs
- 신한투자증권
- programmers
- algoritms
- 자문형
- 스택
- pyhton
Archives
- Today
- Total
Step by Step
240517 본문
반응형
2) DTO => Entity : Controller에서 변환한다면? => DTO로 옮긴다
[고려 사항]
- (1) 다른 사람이 봐도 변환한다는 의미의 convertToEntity 메소드명 생성
- (2) Entity는 원본이니까 지켜줘야한다
- (3) DTO or Entity로 옮긴다면 필드가 있는 곳으로 옮기는 건 어떤지
Spring Valiadation(@Valid)
build.gradle에 아래 dependency를 추가해줘야 @Validated와 @Valid를 사용할 수 있다.
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '3.2.5'
Valid vs Validated
Valid와 같은 경우는 request body일때 사용한다.
- @Email: Email 형식인지 확인
- @NotBlank: null , 공백을 허용하지 않음
- @Size: 길이를 제한할때 사용(min: 최소 , max: 최대)
- @max: 지정한 값 이하인지
- @min: 지정한 값 이상인지
@NotBlank
@Size(min = 1, max = 15, message = "아이디는 1 ~ 15자 이여야 합니다!")
private String userId;
/**
* Member의 비밀번호 정보
*/
@NotBlank
@Size(min = 1, max = 15, message = "비밀번호는 1 ~ 15자 이여야 합니다!")
private String pw;
/**
* Member의 실제 이름 정보
*/
@NotBlank
@Size(min = 1, max = 10, message = "이름은 1 ~ 10자 이여야 합니다!")
private String name;
/**
* Member의 이메일 정보
*/
@Email
@Size(min = 1, max = 10, message = "이메일은 1 ~ 10자 이여야 합니다!")
private String email;
/**
* Member의 전화번호
*/
@NotBlank
@Size(min = 12, max = 13, message = "전화번호는 12 ~ 13자 이여야 합니다!")
private String contact;
Validated와 같은 경우는 쿼리 스트링이나 파라미터를 검증해야 할 때 사용한다.
@RestController
@RequestMapping("/users")
@Validated
public class UserController {
.
.
@GetMapping("/{id}")
public String find(@PathVariable @Min(1) Long id) {
return "ok";
}
}
@Valid한 값이 들어오지 않을 때(Bad Request가 발생할 때) => 유효성 검사를 할 때
아래 코드를 사용해 에러메세지를 띄워준다.
@PostMapping("/join/api/result") // After
public ApiUtils.ApiResult<String> joinByApiResult(@Valid @RequestBody MemberDto memberDto, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return error(bindingResult.getAllErrors().toString(), HttpStatus.BAD_REQUEST);
}
if (Validator.isAlpha(memberDto.getName())) {
// 유저 이름을 log로 출력
log.info(memberDto.toString());
// ID 중복 체크
// 중복이면 사용자 예외 클래스 소환
// 1) 예외 클래스한테 니가 return 해!
// 2) 예외만 발생 시키고.. 메세지는 내가 보낼게
if (isDuplicateId(memberDto)) {
return error("아이디 중복", HttpStatus.CONFLICT);
}
Member requestMember = memberDto.convertToEntity();
// Repository에 저장 시도
String userId = memberService.join(requestMember);
//
{
// "success" : True,
// "response" : 응답 데이터(객체),
// "error" : null
// }
try {
log.info(userId);
} catch (NullPointerException e) {
return success(userId);
}
return success(userId);
} else
return error("아이디 숫자 포함", HttpStatus.BAD_REQUEST);
}
반응형
'Spring' 카테고리의 다른 글
240527 (0) | 2024.05.27 |
---|---|
240520 (0) | 2024.05.21 |
240516 (0) | 2024.05.17 |
240513(@JsonNaming, @JsonProperty) (0) | 2024.05.13 |
Log의 종류 & 리팩토링(?) (0) | 2024.05.09 |