컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 따라서 들어온 인자값이 올바른 값인지 검증해주는 로직이 존재한다.
클라이언트에서 검증된 값만 넘기는 경우는?
클라이언트에서 값을 검증하는 로직을 추가하여 사용자가 잘못된 값을 입력하는 것을 사전에 방지할 수도 있다. 하지만 클라이언트 검증은 조작될 수 있으므로 보안에 매우 취약하다.
서버에서만 검증하면 되겠네?
아니다. 서버만으로 값을 검증하면 고객 사용성이 부족해진다.
그럼 어떡하란 말이야
둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수적이다. API 방식을 사용하는 경우 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 한다.
Controller 메서드 내에서 if문을 통해 값을 검증한 후 오류가 발생하면 입력 폼을 다시 보여준다.
클라이언트에게 오류 메시지를 친절하게 안내하여 다시 입력할 수 있게 한다.
검증 오류가 발생해도 고객이 입력한 데이터가 유지된다.
스프링이 제공하는 검증 오류를 보관하는 객체인 BindingResult
를 활용하여 검증 오류를 표현한다.
BindingResult에 검증 오류를 적용하는 방법 3가지