오늘의 학습 키워드 📕
▸ 코드카타
▸ Validation
▸ RestTemplate
2024년 1월 30일 - [프로그래머스] 16 : 옹알이(2) | 숫자 짝궁 | 체육복
📍Bean Validation
어노테이션 | 설명 |
---|---|
@NotNull | null 불가 |
@NotEmpty | null, “” 불가 |
@NotBlank | null, “”. “ “ 불가 |
@Size | 문자 길이 측정 |
@Max | 최대값 |
@Min | 최소값 |
@Positive | 양수 |
@Negative | 음수 |
E-mail 형식 | |
@Pattern | 정규 표현식 |
[예시]
@NotBlank
private String name;
implementation 'org.springframework.boot:spring-boot-starter-validation'
📍 Validation 예외 처리
[예시]
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
// Validation 예외처리
List<FieldError> fieldErrors = bindingResult.getFieldErrors();📌
if(fieldErrors.size() > 0) {
for (FieldError fieldError : bindingResult.getFieldErrors()) {
log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
}
return "redirect:/api/user/signup";
}
userService.signup(requestDto);
return "redirect:/api/user/login-page";
}
📌 bindingResult.getFieldErrors() : 발생한 오류들에 대한 정보가 List fieldErrors 에 담긴다.
📍 RestTemplate 이란?
📍 HTTP 메서드 호출
📍 요청 Header에 정보 추가
public List<ItemDto> exchangeCall(String token) {
// 요청 URL 만들기
URI uri = UriComponentsBuilder
.fromUriString("http://localhost:7070")
.path("/api/server/exchange-call")
.encode()
.build()
.toUri();
log.info("uri = " + uri);
User user = new User("Yeye", "0123");
RequestEntity<User> requestEntity = RequestEntity
.post(uri)
.header("X-Authorization", token)
.body(user);
ResponseEntity<String> responseEntity = restTemplate.exchange(requestEntity, String.class);
return fromJSONtoItems(responseEntity.getBody());
}
public ItemResponseDto exchangeCall(String token, UserRequestDto requestDto) {
System.out.println("token = " + token);
System.out.println("requestDto.getUsername() = " + requestDto.getUsername());
System.out.println("requestDto.getPassword() = " + requestDto.getPassword());
return getCallList();
}