From 7db7efbc32d9ca446d6445a96e21779fd444d6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=95=9C=EC=9D=B4=EC=A7=80?= <leezy211@ajou.ac.kr> Date: Mon, 17 Jul 2023 17:05:31 +0900 Subject: [PATCH] code refactoring with service --- .../controller/MyWebController.java | 88 ++++--------------- .../myspringweb/service/MusicService.java | 62 +++++++++++++ 2 files changed, 79 insertions(+), 71 deletions(-) create mode 100644 src/main/java/kr/ajousw/myspringweb/service/MusicService.java diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 4029126..358eb1b 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -9,93 +9,39 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; -import org.springframework.transaction.annotation.Transactional; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; import kr.ajousw.myspringweb.dto.MusicList; import kr.ajousw.myspringweb.entity.FavoriteMusic; -import kr.ajousw.myspringweb.repository.FavoriteRepository; + +import kr.ajousw.myspringweb.service.MusicService; @RestController public class MyWebController { - RestTemplate restTemplate = new RestTemplate(); - - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; - try { - - String response = restTemplate.getForObject(url, String.class); - - ObjectMapper mapper = new ObjectMapper(); - - MusicList list = mapper.readValue(response, MusicList.class); - - System.out.println(list.getResultCount()); - - return list; - - } catch(IOException e) { - - System.out.println(e.toString()); - return null; + + @Autowired + MusicService service; - } + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); } - @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term){ - String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; - try { - - String response = restTemplate.getForObject(url, String.class); - - ObjectMapper mapper = new ObjectMapper(); - - MusicList list = mapper.readValue(response, MusicList.class); - System.out.println(list.getResultCount()); - - return list; - - } catch(IOException e) { - - System.out.println(e.toString()); - return null; - - } + @GetMapping(value="/musicSearch") + public MusicList musicSearchByParam(@RequestParam(value="term") String name) { + return service.searchMusic(name); } - @Autowired - FavoriteRepository albumsRepo; - @GetMapping(value="/likes") - public List<FavoriteMusic> getLikes() { - try { - - return albumsRepo.findAll(); - - } catch (Exception e) { - - System.out.println(e.toString()); - - return null; - - } + @GetMapping(value="/likes") //Get Favorite Music list from Database + public List<FavoriteMusic> getLikes() { + return service.getLikes(); } + @PostMapping(value="/likes") - @Transactional - public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) - { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if(music != null) { - return 1; - } - else { - return 0; - } + public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + return service.saveFavorite(favorite); } } diff --git a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java new file mode 100644 index 0000000..a8b1560 --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,62 @@ +package kr.ajousw.myspringweb.service; + +import java.io.IOException; + +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.springframework.transaction.annotation.Transactional; + +import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; +import kr.ajousw.myspringweb.dto.MusicList; +import kr.ajousw.myspringweb.entity.FavoriteMusic; +import kr.ajousw.myspringweb.repository.FavoriteRepository; +import lombok.RequiredArgsConstructor; +import java.util.List; + +@Service +@Transactional +@RequiredArgsConstructor +public class MusicService { + + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic (String name){ + String url = "https://itunes.apple.com/search?term=" + name + "&entity=album"; + try { + String response = restTemplate.getForObject(url, String.class); + ObjectMapper mapper = new ObjectMapper(); + MusicList list = mapper.readValue(response, MusicList.class); + System.out.println(list.getResultCount()); + + return list; + + } catch(IOException e) { + + System.out.println(e.toString()); + return null; + } + } + public List<FavoriteMusic> getLikes (){ + try { + return albumsRepo.findAll(); + } catch (Exception e) { + System.out.println(e.toString()); + return null; + } + } + public int saveFavorite(@RequestBody FavoriteMusicRequestDto favorite){ + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + + if(music != null) { + return 1; + } + else { + return 0; + } + } +} -- GitLab