2021๋…„ 11์›” 29์ผ๐Ÿ˜—

๊น€๊ด‘ํ›ˆยท2021๋…„ 11์›” 29์ผ
0

๐Ÿšข์˜ค๋Š˜์˜ ํšŒ๊ณ 

๊ตณ


โœ” ์˜ค๋Š˜ ํ•œ ์ผ

  • yum yum trend ์ข‹์•„์š” ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง

๐Ÿ”์ข‹์•„์š” ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง!

์ฃผ๋ง๋™์•ˆ ์ง„ํ–‰ํ•œ ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ํŒ€์›๋“ค์˜ ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ์ด ์žˆ์–ด ์ด๋ฅผ ๋ฐ˜์˜ํ•˜๊ณ ์ž ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ๋ฆฌํŒฉํ† ๋ง ํ•˜์˜€๋‹ค.

  • ๊ธฐ์กด : ArticleController์˜ getArticle API์—์„œ Like์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ํ”„๋ก ํŠธ ๋‹จ์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.
// ์˜ˆ์‹œ
@GetMapping("/articles")
    public List<ArticleResponseDto> getArticles(@AuthenticationPrincipal UserDetailsImpl userDetails) {
        return articleService.getArticles();
    }
  • ๋ณ€๊ฒฝ : Like์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ค๋ฃจ๋Š” LikeController ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ Like์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ํ”„๋ก ํŠธ ๋‹จ์— ๋”ฐ๋กœ ๋ณด๋‚ด์ค€๋‹ค.
// ์˜ˆ์‹œ
@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๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ’์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์—ฌ ๋ฌดํ•œํžˆ ์ฐธ์กฐํ•˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
์ฆ‰, @JsonIgnore๊ฐ€ ๋‹ฌ๋ ค์žˆ๋Š” ์ปฌ๋Ÿผ์€ json๋ฐ์ดํ„ฐ์—์„œ null๋กœ ๋“ค์–ด๊ฐ„๋‹ค.


๐Ÿ‘€Todo List

๋‚ด์ผ์€ ์กฐ๊ธˆ ๋” ์ฒด๊ณ„์ ์œผ๋กœ ๊ณต๋ถ€ํ•ฉ์‹œ๋‹ค.
๋ฐฐ์šด ๊ฒƒ๋„ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๋…ธํŠธํ•ด๋†“๊ณ ...

  • โ›ํ”„๋กœ์ ํŠธ
    • ํšŒ์›๊ฐ€์ž…,articleController ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
    • ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ• ์ง€ ๊ตฌ์ƒํ•ด๋ณด๊ธฐ
profile
์ž˜ ๋ถ€ํƒ๋“œ๋ ค์š”

0๊ฐœ์˜ ๋Œ“๊ธ€