๊ตณ
- yum yum trend ์ข์์ ๊ธฐ๋ฅ ๋ฆฌํฉํ ๋ง
์ฃผ๋ง๋์ ์งํํ ๊ฒ์๊ธ ์ข์์ ๊ธฐ๋ฅ์ ๋ํด ํ์๋ค์ ์ถ๊ฐ์ ์ธ ์๊ฒฌ์ด ์์ด ์ด๋ฅผ ๋ฐ์ํ๊ณ ์ ์ข์์ ๊ธฐ๋ฅ์ ๋ฆฌํฉํ ๋ง ํ์๋ค.
// ์์
@GetMapping("/articles")
public List<ArticleResponseDto> getArticles(@AuthenticationPrincipal UserDetailsImpl userDetails) {
return articleService.getArticles();
}
// ์์
@GetMapping("/likes")
public List<LikeResponseDto> getLikes(@AuthenticationPrincipal UserDetailsImpl userDetails) {
return likeService.getLikes(userDetails.getUser().getId());
}
๋ณ๊ฒฝํ๊ฒ๋ ์ด์ : article์ ๋ํ ์ฝ๋๊ฐ ๋ ๋์ด๋๊ฒ ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ์์ ํ๊ธฐ ์ํด์
article, like ๋ ๊ธฐ๋ฅ์ ๋ํ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ๋ฐ๋ฉด์ ๋ณ๊ฒฝ ํ์ ๊ฐ์ด controller๋ฅผ ๋๋ ์ ์ฝ๋ฉํด ๋์ผ๋ฉด ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๊ฐ ์์ ์ ์ทจํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฆฌํฉํ ๋ง์ ์ค์ํ์๋ค.
๋ณ๊ฒฝ ์ดํ: controller๋ฅผ ๋๋ ๋งํผ ๊ทธ๋งํผ api๊ฐ ๋๋ฐฐ๊ฐ ๋์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ์ผ๋ก๋ ๋ ๊ธธ์ด์ก๊ณ ๋ฐ์ดํฐ๋ ์ค๋ณตํด์ ๋ณด๋ด๋ ํญ๋ชฉ๋ค์ด ๋ฐ์ํ๋ค. ํ์ง๋ง, ๊ธฐ๋ฅ๋ณ๋ก controller๋ฅผ ๊ตฌ๋ถํ ๊ฒฐ๊ณผ ์ฝ๋ ํด๋์ค์ ๋ณ์๋ช ์ ๋ณผ๋ ๊ธฐ๋ฅ์ ๋ ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์๊ฒ ๋์๋ค.
// ArticleController
@RestController
@RequiredArgsConstructor
public class ArticleController {
private final ArticleService articleService;
@GetMapping("/articles")
public List<Article> getArticles() {
return articleService.getArticles();
}
@GetMapping("/articles/{id}")
public Article getArticle(@PathVariable Long id) {
return articleService.getArticle(id);
}
@PostMapping("/articles")
public void createArticle(@AuthenticationPrincipal UserDetailsImpl userDetails,
@RequestParam("text") String text,
@RequestParam("location") String locationJsonString,
@RequestParam("hashtagNameList") List<String> hashtagNameList,
@RequestParam("imageFileList") List<MultipartFile> imageFileList) {
articleService.createArticle(userDetails.getUser(), text, new LocationRequestDto(locationJsonString), hashtagNameList, imageFileList);
}
}
// LikeController
@RestController
@RequiredArgsConstructor
public class LikeController {
private final LikeService likeService;
@GetMapping("/likes")
public List<LikeResponseDto> getLikes(@AuthenticationPrincipal UserDetailsImpl userDetails) {
return likeService.getLikes(userDetails.getUser().getId());
}
@GetMapping("/likes/guest")
public List<LikeResponseDto> getLikesGuest() {
return likeService.getLikesGuest();
}
@GetMapping("/likes/{id}")
public LikeResponseDto getLike(@PathVariable Long id,
@AuthenticationPrincipal UserDetailsImpl userDetails) {
return likeService.getLike(id, userDetails.getUser().getId());
}
@GetMapping("/likes/guest/{id}")
public LikeResponseDto getLikeGuest(@PathVariable Long id) {
return likeService.getLikeGuest(id);
}
@GetMapping("/profile/likes/{id}")
public List<LikeResponseDto> getLikesUser(@PathVariable Long id) {
return likeService.getLikesUser(id);
}
@GetMapping("/profile/likes")
public List<LikeResponseDto> getLikes(@PathVariable Long id) {
return likeService.getLikesUser(id);
}
@PutMapping("/articles/like")
public void increaseLikeCount(@AuthenticationPrincipal UserDetailsImpl userDetails,
@RequestParam("articleId") Long articleId) {
likeService.increaseLikeCount(userDetails.getId(), articleId);
}
@PutMapping("articles/unlike")
public void decreaseLikeCount(@AuthenticationPrincipal UserDetailsImpl userDetails,
@RequestParam("articleId") Long articleId) {
likeService.decreaseLikeCount(userDetails.getId(), articleId);
}
}
์๋ก ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งคํํ๋ฉด ์๋ก ๋ฌดํํ ์ฐธ์กฐํ๋ ์ํฉ์ด ๋ฐ์ํด ๋ฒ๋ฆฐ๋ค.
์ด ๋, @JsonIgnore๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ด ์ถ๋ ฅ๋์ง ์๊ฒ ํ์ฌ ๋ฌดํํ ์ฐธ์กฐํ๋ ์ํฉ์ ๋ฐฉ์งํด์ค ์ ์๋ค.
์ฆ, @JsonIgnore๊ฐ ๋ฌ๋ ค์๋ ์ปฌ๋ผ์ json๋ฐ์ดํฐ์์ null๋ก ๋ค์ด๊ฐ๋ค.
๋ด์ผ์ ์กฐ๊ธ ๋ ์ฒด๊ณ์ ์ผ๋ก ๊ณต๋ถํฉ์๋ค.
๋ฐฐ์ด ๊ฒ๋ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๋
ธํธํด๋๊ณ ...