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
}
앞서 말했듯 나는 게시물에 댓글을 다는 api를 구현하는 중이었다.
/comments/{postId}
post
{
"content" : "저도 참여하고 싶습니다."
}
{
"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는 제외하고 나머지만 출력해두려고 했었는데...
자꾸만 이런 오류가 나는 것이다!! 나 빨리 자야하는데..근데 이거 해결 못하면 너무 찝찝하니까 온갖 사이트를 다 뒤져 보았다.
/{postId}
아무래도 애를 제대로 인식하지 못하는 것 같은데, 어떻게 해야되는지 도저히 감이 안잡혔다. GPT한테도 내 코드 다 보여줬는데 다 맞대...🤦♀️@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);
}
그랬더니..!!!이유는 너무 간단했다!
바보같이 @Controller
로 설정해둔 것!!
Json 형식으로 출력하려면 @RestController
를 붙이거나, @Controller
+ PostMapping 어노테이션 아래에 @ResponseBody
를 적어주었어야 한다.
@Controller
는 주로 View 출력을 위해,@RestController
는 주로 Json 출력을 위해 사용된다.
여튼 아래와 같이 @RestController
로 수정해주었더니 너무 싱겁게 해결 완료했다