자꾸 postType에 content인 하이룽이 들어간다..
{
"timestamp": "2024-10-23T15:43:30.230+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "java.lang.IllegalArgumentException: No enum constant com.develop_ping.union.post.domain.PostType.하이룽\n\tat java.base/java.lang.Enum.valueOf(Enum.java:273)\n\tat
...
"message": "No enum constant com.develop_ping.union.post.domain.PostType.하이룽",
"path": "/board/FREE"
}
JSON
복사
PostController
@PostMapping("/{boardType}")
public ResponseEntity<PostCreationResponse> createPost(@PathVariable("boardType") String type,
@RequestBody PostCreateRequest request) {
log.info("[ CALL: PostController.createPost() ]");
// TODO: @RequestHeader("Authorization")로 토큰 받기
String token = "token";
PostCreationCommand command = request.toCommand(token, type);
PostCreationResponse response = postService.createPost(command).toResponse();
return ResponseEntity.status(HttpStatus.CREATED).body(response);
}
Java
복사
컨트롤러 로직이 바뀌었기 때문에 컨트롤러에서 문제가 발생할 것 같다고 생각했었다.
request를 command로 매핑해주는 작업에서 문제가 생길 확률이 500%라고 생각해서 여기저기 로그 범벅을 만들어봤다.
근데… 매핑은 잘 된다….
뭐지..
DTO 내부 정적 팩토리 메소드도 정상적으로 잘 작동한다
근데 왜 자꾸 boardType에 content가 들어가냐고….
서비스에는 그냥 객체 저장 로직밖에 없는디
Post (Entity)
public static Post of(PostCreationCommand command, User user, String thumbnail) {
return Post.builder()
.title(command.getTitle())
.content(command.getContent())
.type(PostType.valueOf(command.getContent().toUpperCase()))
.thumbnail(thumbnail)
.views(0)
.user(user)
.build();
}
Java
복사
문제는 의외의 곳에서 발견됐다…
Post entity에서 생겼었는데….
.type(PostType.valueOf(command.getContent().toUpperCase())) ← 바로 이 부분!!!!
객체를 생성할 때 type에다가 getContent를 넣으니까 content가 들어가지…..
암튼..
에러 해결!