Archive/예전 TIL

[트러블슈팅] @Controller vs @RestController, 404 에러 & 정상 동작 차이

khu2172 2025. 6. 28. 05:56

문제 상황

Spring Boot에서 API를 개발하다가,
DB에는 데이터가 잘 들어가는데, Postman에선 404 Not Found 에러가 발생했다.


원인 분석

  • InquiryController에 @Controller 애노테이션을 붙이고,
    @PostMapping으로 API를 작성했다.
  • 하지만 @RestController가 아닌 @Controller만 쓰면,
    기본적으로 “뷰(HTML 화면)”를 반환하려고 동작
    한다.
  • API에서 리턴 값이 없거나, JSON/객체/문자열 등
    데이터만 내려줄 때는 @RestController를 사용해야 한다!
  • 이걸 놓치면, 요청 자체가 매핑이 안 되거나(특히 void 리턴 시),
    예상과 다른 동작(404, 응답 없음 등)이 발생한다.

 


해결 과정

  1. @Controller 애노테이션을
    @RestController 애노테이션으로 변경
  2. 서버 재시작
  3. 다시 Postman에서 요청
    정상 200 OK 응답 & DB에도 데이터 정상 입력!


느낀 점/정리

  • @RestController는 “데이터(API)” 반환,
    @Controller는 “뷰(화면)” 반환용
    이다!
  • 데이터만 반환하는 API는 @RestController로 만드는 게 정답
  • 리턴 값이 없어도, JSON이 아니어도,
    “API라면 무조건 @RestController”
  • 404 에러가 났는데 DB에는 값이 들어간다면,
    엔드포인트 매핑이나 애노테이션(@RestController)부터 꼭 점검할 것!

🔗 참고