diff --git a/src/main/java/kr/ajousw/myspringweb/MysprigwebApplication.java b/src/main/java/kr/ajousw/myspringweb/MysprigwebApplication.java index babf549ea84b3b2edee7c6e46aeb9cdbeee67c47..890ec52d8ddea3210a7d2147fcf0329d864e7b02 100644 --- a/src/main/java/kr/ajousw/myspringweb/MysprigwebApplication.java +++ b/src/main/java/kr/ajousw/myspringweb/MysprigwebApplication.java @@ -9,6 +9,6 @@ public class MysprigwebApplication { public static void main(String[] args) { SpringApplication.run(MysprigwebApplication.class, args); } - + } diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 515f7570a7a33b540e553c3f1cf2cff2c55aa7a4..5d11a472e4d6291c1d32a7616ff44c083aebe1cf 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -3,6 +3,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; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @@ -21,74 +22,33 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; + @RestController public class MyWebController { @Autowired - FavoriteRepository albumsRepo; - - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - - //클래스 변수로 정의 - RestTemplate restTemplate = new RestTemplate(); - - // 아래 코드는 클래스 메쏘드에 작성 – GetMapping 부분에 구현 - // 아래 코드에서 url은 “itunes url” - 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; + MusicService service; - } 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){ - - RestTemplate restTemplate = new RestTemplate(); - - 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 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 - 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); } } \ No newline at end of file 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..e640bb771a5a93d0d0361ebe3c1317611aaf20e2 --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,73 @@ +package kr.ajousw.myspringweb.service; +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 java.io.IOException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; + +@Service +@Transactional +@RequiredArgsConstructor + +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(@PathVariable String term) { + try { + String url = String.format("https://itunes.apple.com/search?term=%s&entity=album", term); + 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="/likes") + 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; + } + } + + + +} \ No newline at end of file