[SpringBoot] No static resource 오류 해결

호두마루·2024년 7월 7일
1

Spring

목록 보기
17/17
post-thumbnail

SpringBoot로 게시물에 댓글을 다는 아주 간단한 api를 구현했는데 자꾸 아래와 같은 오류가 발생했다.
오류 해결이 1시간이나 걸렸는데 진짜 너무 어이없고 멍청한 실수를 해서..!!! 반성의 차원에서 적어둔다!!

{
    "isSuccess": false,
    "code": 500,
    "message": "No static resource comments/comments/27522093-37d6-47eb-94eb-cfd08cc35ace.",
    "created_at": "2024-07-08T00:42:00.2543245",
    "data": null
}



1. api 로직

앞서 말했듯 나는 게시물에 댓글을 다는 api를 구현하는 중이었다.

  • 엔드포인트: /comments/{postId}
  • 요청방식: post
  • request body
  {
      "content" : "저도 참여하고 싶습니다."
  }
  • response body
      {
      "isSuccess": true,
      "code": 201,
      "message": "성공적으로 반영되었습니다.",
      "data": {
          "comment_id": 1,
          "post_id": "5f4dcu3b-5b52-4e59-97f4-a03d48cbb2f4",
          "user_id": 1,
          "content": "저도 참여하고 싶습니다.",
          "created_at": "2024-07-06T09:00:00Z"
      }

이렇게 정말 기본적인 형식이었다.
아직 로그인이 제대로 구현되지 않았기 때문에 헤더에 토큰을 넣거나 userId는 제외하고 나머지만 출력해두려고 했었는데...

자꾸만 이런 오류가 나는 것이다!! 나 빨리 자야하는데..근데 이거 해결 못하면 너무 찝찝하니까 온갖 사이트를 다 뒤져 보았다.

2. 원인을 찾아가는 과정

  1. 일단 구글링을 했을 때 가장 많이 보이는 건 Spring Security 때문이라는 것이었다.
    그래서 Spring Security 설정해둔 것도 다 지우고 다시 시도해보았는데도 안됨

  2. /{postId} 아무래도 애를 제대로 인식하지 못하는 것 같은데, 어떻게 해야되는지 도저히 감이 안잡혔다. GPT한테도 내 코드 다 보여줬는데 다 맞대...🤦‍♀️

  3. 그러다가 혹시! GPT가 내 코드 다 맞다고 하니까 로직은 제대로 돌아가는데, response만 제대로 출력하지 못하는 건가 싶어서 로그 출력을 해보기로 했다. 컨트롤러에 아래와 같이 간단하게 로깅해봄
    @PostMapping("/{postId}")
    public ResponseDto<CommentsResponse> addComment(@PathVariable("postId") UUID postId, @RequestBody CommentsRequest commentsRequest){
    	CommentsResponse response = commentsService.addComments(postId, commentsRequest);
      	System.out.println(response);
      	return ResponseUtil.SUCCESS(SuccessResponse.OK, "댓글이 성공적으로 등록되었습니다.", response);
    }
    그랬더니..!!!
    이게 무슨일이야!!!

    진짜 로그가 너무나도 제대로 출력이 되고 있었다...! 좋아해야하는건지 아닌지 살짝 헷갈렸음
    그러다면 대체 뭐가 문제여서 response가 출력되지 않는거지...하면서 다른 api 코드랑 비교해보는데..

4. 잘못된 어노테이션

이유는 너무 간단했다!

바보같이 @Controller 로 설정해둔 것!!
Json 형식으로 출력하려면 @RestController 를 붙이거나, @Controller + PostMapping 어노테이션 아래에 @ResponseBody를 적어주었어야 한다.

@Controller 는 주로 View 출력을 위해, @RestController 는 주로 Json 출력을 위해 사용된다.

여튼 아래와 같이 @RestController 로 수정해주었더니 너무 싱겁게 해결 완료했다

0개의 댓글