Search

22. 스프링부트 포토그램 인증 회원가입 @ResponseBody 사용하기

포토그램 인증 구현하기

회원가입 구현

밸리데이션 체크 마무리를 해보자
갑자기 여기서
몇가지를 빈 상태로 가입버튼을 누르면 프론단에서 밸리데이션 체크를 따로 해주고 있는데 왜 필수값 어노테이션을 추가했는지에 대한 의문이 든다
postman 들어가서 전송해보면
500에러가 떳지만 3가지 빈 상태에서 username만 보냈는데도 전송이 됐다.
프론단에서 막아도 포스트맨으로 요청하면 프론단에서 막아도 소용이 없는거다.
프론단에서도 막고 백단에서도 밸리데이션걸어서 막아주자.
요청에 대한 분기를 태워주자.
오류가 나면 오류페이지를 리턴시켜주자.
AuthController.java에서 signup 함수에서 기존에는 리턴타입을 String으로 잡아뒀다.
해당 파일이 @Controller 라서 파일명을 리턴해주고 있기때문에 String으로 잡아둔건데 @ResponseBody를 리턴타입 앞에 붙여두면 리턴값이 데이터를 응답한다.
//회원가입버튼 -> /auth/signup/ -> /auth/signin @PostMapping("/auth/signup") public @ResponseBody String signup(@Valid SignupDto signupDto, BindingResult bindingResult ) { //key=value (x-www-form-urlencoded) //에러가 존재한다 if(bindingResult.hasErrors()) { Map<String, String> errorMap = new HashMap<>(); for(FieldError error :bindingResult.getFieldErrors()) { errorMap.put(error.getField(), error.getDefaultMessage()); } return "오류남"; }else { //log.info(signupDto.toString()); //User <- SignupDto User user = signupDto.toEntity(); //log.info(user.toString()); User userEntity = authService.회원가입(user); System.out.println(userEntity); return "auth/signin"; } }
Java
복사
이렇게 분기도 나눠주고 return값도 추가해주고 다시 가입했더니
잉?… 값도 잘 넣어줬는데 오류난다.
알고보니까 @Max 에서 오류가 자꾸 나고있는데 해당부분을
@Size(min = 2, max = 20) @NotBlank private String username;
Java
복사
@Size로 변경해서 다시 진행해보면
가입이 잘 된다.
근데 페이지로 안뜨고 문자열로 뜬다
@ResponseBody를 추가해주면서 데이터를 리턴하는 메소드로 변경됐기 때문인데
하지만 우리는 언제는 데이터메소드, 언제는 파일명으로 리턴되기를 원한다.
그래서 컨트롤 어드바이스를 하나 만들어서 처리를 시킬거다.

*참고