Spring 기초(41)
-
검증 - Bean Validation(HTTP 메시지 컨버터)
들어가기 전에, @Valid , @Validated 는 HttpMessageConverter ( @RequestBody )에도 적용할 수 있다. > @RequestBody 는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. 다음과 같은 컨트롤러가 있다. @Slf4j @RestController @RequestMapping("/validation/api/items") public class ValidationItemApiController { @PostMapping("/add") public Object addItem(@RequestBody @Validated ItemSaveForm form, BindingResult bindingResult) { ..
2022.04.02 -
검증 - Bean Validation
이전 포스팅에서 다뤘던 Validation보다 편리한 Bean Validation을 소개한다. 사용을 위해서는 먼저 라이브러리를 추가해야 한다. build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-validation' 추가해 라이브러리를 등록하자. 스프링 부트는 이 라이브러리를 넣으면 자동으로 Bean Validator를 인지하고 스프링에 통합해준다. 또, 스프링 부트는 자동으로 글로벌 Validator로 등록한다. 이 등록된 Validator는 @NotNull, @Max 등의 애노테이션을 보고 검증을 수행한다. 이렇게 글로벌 Validator가 등록되어있으므로, 검증하고자 하는 파라미터 앞에 @Valid 또는 @Valid..
2022.04.02 -
검증 - Validation (2)
이전 검증 - Validation (1) 포스팅 참고 Controller에서 rejectValue()메서드를 활용해 한층 깔끔해졌다고 해도, 여전히 Controller에는 검증하는 코드가 한가득 있다. 복잡한 검증 로직을 따로 분리하자. ItemValidator를 만들어보자 @Component public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return Item.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { Item item = (Item) target;..
2022.03.31 -
검증 - Validation(1)
BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 해당 필드가 여기에 저장된다. BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생할 경우 컨트롤러가 호출된다! @ModelAttribute에 바인딩 시 타입 오류가 발생하면? BindingResult 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고, 오류 페이지로 이동한다. BindingResult 가 있으면 오류 정보( FieldError )를 BindingResult 에 담아서 컨트롤러를 정상 호출한다(컨트롤러에서 재주껏 처리하도록) BindingResult에 검증 오류를 적용하는 3가지 방법 @ModelAttribute 의 객체에 타입 오류 등으..
2022.03.31 -
REST API와 Ajax(2)
이전 REST API와 Ajax(1)에서는 Ajax와 JSON을 소개했다. REST API 먼저 REST란? Roy Fielding이 제안한 웹서비스 디자인 아키텍쳐 접근 방식이다. 프로토콜에 독립적이며, 주로 HTTP를 사용해 구현한다. REST API란? REST 규약을 준수하는 API란다.. REST는 그럼.. 제약, 규약을 정의해 놓은 것이다. 프로토콜같은 표준은 아니고.. 핵심은 리소스 중심의 API디자인이다. 리소스는 동사가 아닌 명사(회원 등록, 회원 조회, 회원 삭제에서는 회원이 리소스)이며, HTTP 메서드로 수행할 작업을 정의한다. 아래 그림을 보는 것이 이해하기 쉬울 것이다. 아래의 설계가 RESTful하다고 할 수 있다. 리소스(여기서는 comments)를 중심으로, 동사를 uri에..
2022.03.27 -
REST API와 Ajax(1)
먼저 JSON의 개념부터 소개한다. 1. JSON이란? Java Script Object Notation - 자바 스크립트 객체 표기법이다. Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용한다.(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우) 자바스크립트에서 객체 문법으로 구조화된 데이터는 다음과 같이 표현한다 자바 스크립트에서 객체를 표현하는 방법은 {속성1: 속성값1, 속성2: 속성값2, .....} 객체 배열의 경우는 [{속성: 속성값, ....}, {속성: 속성값, .....}, {}, ... ] Map의 경우는 {키1: {속성1 : 속성값, ...}, 키2: {속성명: 속성값}..
2022.03.27