From c2c201a0b069cfa3aa28b4bf616dbda2c086329d Mon Sep 17 00:00:00 2001 From: SEOJIN <uko802@ajou.ac.kr> Date: Mon, 17 Jul 2023 17:33:28 +0900 Subject: [PATCH] Curl localhost/musicSearch?term=DefLeopard ss code ith service --- .../controller/MyWebController.java | 134 +++++++++------- .../myspringweb/service/MusicService.java | 145 ++++++++++++++++++ .../controller/MyWebController.class | Bin 3622 -> 1914 bytes .../myspringweb/service/MusicService.class | Bin 0 -> 2993 bytes 4 files changed, 226 insertions(+), 53 deletions(-) create mode 100644 src/main/java/kr/ajousw/myspringweb/service/MusicService.java create mode 100644 target/classes/kr/ajousw/myspringweb/service/MusicService.class diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 3c395ad..37c35c2 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.MusicList; import kr.ajousw.myspringweb.entity.FavoriteMusic; import kr.ajousw.myspringweb.repository.FavoriteRepository; import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; +import kr.ajousw.myspringweb.service.MusicService; @RestController @@ -26,71 +27,98 @@ import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; public class MyWebController { @Autowired - FavoriteRepository albumsRepo; + MusicService service; + - - RestTemplate restTemplate = new RestTemplate(); - - @GetMapping(value="/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable 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; - } - - } + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name){ + return service.searchMusic(name); + } - @GetMapping(value="/musicSearch") - public MusicList musicSearchByParam(@RequestParam 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; - } - + @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 public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if(music != null) { - return 1; - } - else { - return 0; - } + return service.saveFavorite(favorite); } + + + + + + // RestTemplate restTemplate = new RestTemplate(); + + // @GetMapping(value="/musicSearch/{term}") + // public MusicList musicSearchByPath(@PathVariable 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; + // } + + + // } + + + // @GetMapping(value="/musicSearch") + // public MusicList musicSearchByParam(@RequestParam 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; + // } + + // } + + // // // 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/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java new file mode 100644 index 0000000..c507419 --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,145 @@ +package kr.ajousw.myspringweb.service; + +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; + +import java.io.IOException; +import java.util.*; + +@Service +@Transactional +@RequiredArgsConstructor + +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + + public MusicList searchMusic(String name) { + try { + String response = restTemplate.getForObject("https://itunes.apple.com/search?term="+name+"&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; + } + } + + public int saveFavorite(FavoriteMusicRequestDto favorite) { + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if(music != null) { + return 1; + } + else { + return 0; + } + + + + } + + + + + // GetMapping(value="/musicSearch/{term}") + // public MusicList musicSearchByPath(@PathVariable 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; + // } + + + // } + + + // @GetMapping(value="/musicSearch") + // public MusicList musicSearchByParam(@RequestParam 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; + // } + + // } + + // // // 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/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class index 8bb3230126b57b13e2c74cd44628d9a5bbb46abb..e43f8ff1355cfd7516204e0e9893c393b095652b 100644 GIT binary patch delta 818 zcmZ1`^NUa5)W2Q(7#J9A8LZeDm>3xhCQsxLn|zZ|YNCS#4|{QHQCVhkDkFoA4@g`D z%GdWTEzV31hDc7F6*bwIQG$_oa}Og2BTHUlZtCP2Oz}dT42%p?JPfQ1Y+MX7407xY zvXdP+C7rPu!NVZWAk4_XU7VU&l$-%JoRI-+5+j3<PgY`CqJB<dUb=p8Nl|8Ay7go; zwjx%RlGLKy$;;R(xIo71@-V0~XiQ$sUO)L0yVm3?4nA=i24fxu69#=o2A<-?vQ)Rk zvizdVlGMq$oX(S<bEefZGBAJ~$H2(I&cMLH#=ywH0Ty9o;AG%pU}WHCU|`T^U}ONR z)7s9!vyp*;fr)_+s+fU6nt`8zfq@62fI)ykkb!}LkwJ(-n1KasBp(AKg9rm7gJ?7Z zV=;pmgE#{N13Sn(2?hoR?s{;bGchnRFfedxZDEkq-o_xk0nG|kuoYquMNlgk7&sXe z7!(;88I(ZoWn@qQ+pCPjUKOytJRo~jL5?YAPy>6d-j;!Y<yypBuFjyrz|5ctcD)uB z&ufFNG=hdE2gtki+Zc4vy{iwl5fY*tQ13D_=rQOcg{T3@6W|cl2Kx*gqK2Rl#S)-K rYrsxI#F+`$22g;SfWi?HX&{y<gBc=3O~Ja%!K4M)JD}uY$-n>r5~*aE literal 3622 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 B&h7vJ 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..db0757bf4f956aeff1c9b67a0352cc93a517b263 GIT binary patch literal 2993 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 PzyMBqbqov)^$ZLEgfunP literal 0 HcmV?d00001 -- GitLab