23-06-27 TIL

more·2023년 6월 27일
0

문제

  • Spring Lv.2 과제 (forbidden)
    • 강의에서 듣던 코드대로 signup request를 보내고 signup이 제대로 수행 된다면 완료 했다는 메시지와 상태코드를 반환하려고 한다.
    • postman으로 api를 요청해서 하는 중인데, 계속 403 forbidden이 반환이 된다.

시도

  • Spring Lv.2 과제 (forbidden)
    • 아예 signup이 제대로 되지 않는 것인가
      -> database를 확인해보니 유저의 정보는 제대로 들어가는 중
    • 403 forbidden이면 내가 권한이 없다는 것인데, 회원가입을 할 경우 권한에 대한 접근 거부가 있는가
      -> WebSecurityConfig.java 파일에서 http.authorizeHttpRequests 메서드를 만들 때에 .requestMatchers("/api/user/**").permitAll() 메서드를 사용해서 '/api/user/'로 시작하는 요청 모두 접근 허가를 해줬다는 것을 확인
      -> 권한 문제는 아닌 것으로 보인다.
    • 뭔가 이럴 때에는 Annotation 문제인 경우가 종종 있어서 확인해보기로 함

해결

  • Spring Lv.2 과제 (forbidden)
    • UserController에서 @Controller라는 Annotation을 사용하고 있는데 객체를 반환하기 위해서는 @ResponseBody가 필요할 거 같다.
      -> @RestController로 바꾸어 보니 제대로 메시지와 상태메시지를 담고 있는 객체를 반환하는 것을 볼 수 있었다.

알게 된 점

  • 객체를 반환하기 위해서는 @ResponseBody라는 Annotation을 사용해야한다.
    • @Controller는 주로 View를 반환하기 위해 사용하기 때문에 자동적으로 ViewResolver가 사용되어서 렌더링 된다.
    • 하지만 데이터를 반환해야 하는 경우에는 해당하는 메서드 앞에 @ResponseBody를 사용해야 렌더링이 되지 않고 원하는 데이터나 객체를 반환할 수 있다.
    • 현재 시도하는 UserController에서는 View를 직접적으로 렌더링할 필요가 없기 때문에 @RestController를 사용해서 @Controller에 @ResponseBody의 기능을 추가해주어서 사용하는 것이 편리할 것으로 보인다.

0개의 댓글