diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 2507cfc848c65949602e630de271e4ee7bfae6d8..961d4c7f994f85a504ad4796198d28b12ace15b6 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -5,17 +5,12 @@ 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 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 kr.ajousw.myspringweb.service.MusicService; -import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -23,66 +18,27 @@ import org.springframework.web.bind.annotation.GetMapping; @RestController public class MyWebController { - // PathVariable 방식 => localhost/musicSearch/aespa 로 접속 - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - RestTemplate restTemplate = new RestTemplate(); + @Autowired + MusicService service; - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", - 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/{name}") + public MusicList musicSearchByPath(@PathVariable String name) { + return service.searchMusic(name); } - // Query Param 방식 => localhost/musicSearch?term=aespa 로 접속 @GetMapping(value = "/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term) { - RestTemplate restTemplate = new RestTemplate(); - - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", - 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 MusicList musicSearchByParam(@RequestParam(value = "term") String name) { + return service.searchMusic(name); } - @Autowired - FavoriteRepository albumsRepo; - - // 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 public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if (music != null) { - return 1; - } - else { - return 0; - } + 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 0000000000000000000000000000000000000000..322db5dff7f1b8d35c9c3eadc465715a7bd26978 --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,60 @@ +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 +@RequiredArgsConstructor + +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(String term) { + try { + String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", + 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; + } + } + + +} \ No newline at end of file diff --git a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class index e3d46829fac59f27c95f09dfe65d1fa5635e88dd..8447d34a6d78877840bf1a5f5d64ecf42c601844 100644 Binary files a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class and b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class differ diff --git a/target/classes/kr/ajousw/myspringweb/service/MusicService.class b/target/classes/kr/ajousw/myspringweb/service/MusicService.class new file mode 100644 index 0000000000000000000000000000000000000000..200877efdc163cb8766ca38b20235cd2f6ee0a11 Binary files /dev/null and b/target/classes/kr/ajousw/myspringweb/service/MusicService.class differ