로그인을 하지 않은 유저가 게시글을 상세 조회 했을 때, 좋아요 여부와 팔로우 여부는 false 값으로 처리가 되는 로직을 구현해야했습니다. 그리고 member 값이 null 로 들어가도 nullpointerException이 발생하지 않게 예외 처리를 해줘야했습니다.
게시글과 콜라보 조회 시에 발생하는 문제였습니다.
member 값을 받아와야 해당 유저의 정보를 확인해서 팔로우를 했는지, 좋아요를 했는지를 알 수 있는데 로그인을 하지 않은 유저라면 member 값을 불러 올 수가 없어서 null로 뜨게 되서 NullPointerException이 발생합니다. 아래와 같이 NullPointerException을 처리했습니다.
Controller
@GetMapping("/details/{postid}")
public ResponseEntity<SuccessResponse<Object>> infoPost(@PathVariable Long postid, @AuthenticationPrincipal CustomUserDetails userDetails){
Member member = null;
try {
member = userDetails.getMember();
}catch (NullPointerException e){
log.info("비로그인 사용자 접근 : infoPost");
}
return SuccessResponse.toResponseEntity(INFO_POST,postService.infoPost(postid, member));
}
- @Slf4j 을 사용해서 log를 찍었습니다.
- try-catch문을 사용하여서 NullPointerException 이 발생하면 log를 띄워주었습니다.
- member 값은 null로 초기화 했습니다.
Service
@Transactional
public InfoPostDto infoPost(Long postid, Member member) {
Post post = postRepository.findById(postid).orElseThrow(
() -> new NotFoundException(POST, SERVICE,POST_NOT_FOUND)
);
post.viewCount();
postRepository.save(post);
Boolean isLiked = false;
if(member!=null){
Member postMember = memberRepository.findByNickname(post.getNickname()).orElseThrow(
() -> new NotFoundException(POST, SERVICE, MEMBER_NOT_FOUND)
);
PostLikeCompositeKey postLikeCompositeKey
= new PostLikeCompositeKey(member.getId(), postMember.getId() );
if (postLikeRepository.findById(postLikeCompositeKey).isPresent()){
isLiked = true;
}
}
return new InfoPostDto(post, isLiked);
}
- if문을 사용해서 member가 null이 아닌 경우, 좋아요 여부를 반환합니다.
- null 인 경우에는 초기값인 false를 반환합니다.
이번주 토요일에 중간 발표가 있습니다. 여러모로 착착 진행되고 있습니다. 프론트와 소통해서 자잘한 에러를 수정하거나 api를 수정하고 있습니다.
'TIL' 카테고리의 다른 글
TIL SQL Error The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server 230119 (0) | 2023.01.20 |
---|---|
TIL 동시성 문제? 나의 첫 버그 230118 (0) | 2023.01.18 |
TIL 디자인에 관한 고찰 230116 (0) | 2023.01.17 |
TIL 한달 남은 부트캠프 회고 230115 (1) | 2023.01.16 |
TIL 두번째 멘토링 (feat. stack trace) 230114 (0) | 2023.01.16 |