diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 4c4e2756b321ef785a2a2a4fc670791b8634ea32..62cac1e20e51ce37406245abcb714b8a956f0cbf 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -19,6 +19,7 @@ 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 { @@ -29,60 +30,83 @@ public class MyWebController { @Autowired MusicService service; - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - try { - RestTemplate restTemplate = new RestTemplate(); - String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; - String response = restTemplate.getForObject(url, String.class); // String class로 변환 - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); // MusicList 방식으로 변환 - System.out.println(list.getResultCount()); - return list; // MusicList를 반환 - } catch (IOException e) { - System.out.println(e.toString()); - return null; - } + + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); } - @GetMapping(value = "/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term) { - try { - RestTemplate restTemplate = new RestTemplate(); - String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; - String response = restTemplate.getForObject(url, String.class); // String class로 변환 - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); // MusicList 방식으로 변환 - 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); } - // Get Favorite Music list from Database - @GetMapping(value = "/likes") + @GetMapping(value="/likes") //Get Favorite Music list from Database public List<FavoriteMusic> getLikes() { - - try { - return albumsRepo.findAll(); - - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + return service.getLikes(); } - @PostMapping(value = "/likes") - @Transactional + @PostMapping(value="/likes") public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if (music != null) { - return 1; - } else { - return 0; - } + return service.saveFavorite(favorite); } + + + // @GetMapping(value = "/musicSearch/{term}") + // public MusicList musicSearchByPath(@PathVariable String term) { + // try { + // RestTemplate restTemplate = new RestTemplate(); + // String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; + // String response = restTemplate.getForObject(url, String.class); // String class로 변환 + // ObjectMapper mapper = new ObjectMapper(); + // MusicList list = mapper.readValue(response, MusicList.class); // MusicList 방식으로 변환 + // System.out.println(list.getResultCount()); + // return list; // MusicList를 반환 + // } catch (IOException e) { + // System.out.println(e.toString()); + // return null; + // } + // } + + // @GetMapping(value = "/musicSearch") + // public MusicList musicSearchByParam(@RequestParam String term) { + // try { + // RestTemplate restTemplate = new RestTemplate(); + // String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; + // String response = restTemplate.getForObject(url, String.class); // String class로 변환 + // ObjectMapper mapper = new ObjectMapper(); + // MusicList list = mapper.readValue(response, MusicList.class); // MusicList 방식으로 변환 + // System.out.println(list.getResultCount()); + // return list; + // } catch (IOException e) { + // System.out.println(e.toString()); + // return null; + // } + // } + + // Get Favorite Music list from Database + // @GetMapping(value = "/likes") + // public List<FavoriteMusic> getLikes() { + + // try { + // return albumsRepo.findAll(); + + // } catch (Exception e) { + // System.out.println(e.toString()); + // return null; + // } + // } + + // @PostMapping(value = "/likes") + // @Transactional + // public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { + // FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + // if (music != null) { + // return 1; + // } else { + // return 0; + // } + // } + } diff --git a/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java index 815f074020b722bbe05edb82fbd047b13a4e0f2b..181d66cc910b113b1be8409847c41534fee1a9ad 100644 --- a/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java +++ b/src/main/java/kr/ajousw/myspringweb/dto/FavoriteMusicRequestDto.java @@ -9,6 +9,7 @@ import lombok.ToString; @Setter @ToString public class FavoriteMusicRequestDto { + // json 데이터를 Spring 객체로 변경하는 과정 private String collectionId; private String collectionType; private String artistId; diff --git a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java index 154720c18911ffabefb39e725c26a98d9a546b91..33fa33139db6bf0517935b86f34a03d471337187 100644 --- a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -1,16 +1,58 @@ package kr.ajousw.myspringweb.service; +import java.io.IOException; +import java.util.List; + import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.ObjectMapper; + import jakarta.transaction.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; @Service -@Transactional +@Transactional // 데이터베이스의 원리 중 하나로 실행되다가 오류가 발생하면은, 다시 실행 이전의 상태로 돌아가는 것 @RequiredArgsConstructor public class MusicService { - private final FavoriteRepository albumsRepo; - RestTemplate restTemplate = new RestTemplate(); -} \ No newline at end of file + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(String term) { + try { + String url = "https://itunes.apple.com/search?term=" + term + "&entity=album"; + 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; + } + } + + @Transactional + public int saveFavorite(FavoriteMusicRequestDto favorite) { + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if (music != null) { + return 1; + } else { + return 0; + } + } + +}