Skip to content
Snippets Groups Projects
Commit 828e6099 authored by suhyeon's avatar suhyeon
Browse files

code refactoring with service

parent 668f2454
No related branches found
No related tags found
No related merge requests found
Pipeline #8366 canceled
...@@ -3,6 +3,7 @@ import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; ...@@ -3,6 +3,7 @@ import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto;
import kr.ajousw.myspringweb.dto.MusicList; import kr.ajousw.myspringweb.dto.MusicList;
import kr.ajousw.myspringweb.entity.FavoriteMusic; import kr.ajousw.myspringweb.entity.FavoriteMusic;
import kr.ajousw.myspringweb.repository.FavoriteRepository; import kr.ajousw.myspringweb.repository.FavoriteRepository;
import kr.ajousw.myspringweb.service.MusicService;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
...@@ -21,74 +22,33 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -21,74 +22,33 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@RestController @RestController
public class MyWebController { public class MyWebController {
@Autowired @Autowired
FavoriteRepository albumsRepo; MusicService service;
@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;
} catch(IOException e) { @GetMapping(value="/musicSearch/{name}")
System.out.println(e.toString()); public MusicList musicSearchByPath(@PathVariable String name)
return null; {
} return service.searchMusic(name);
} }
@GetMapping(value="/musicSearch") @GetMapping(value="/musicSearch")
public MusicList musicSearchByParam(@RequestParam String term){ public MusicList musicSearchByParam(@RequestParam(value ="term") String name)
{
RestTemplate restTemplate = new RestTemplate(); return service.searchMusic(name);
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;
}
} }
//Get Favorite Music list from Database
@GetMapping(value="/likes") @GetMapping(value="/likes") //Get Favorite Music list from Database
public List<FavoriteMusic> getLikes() { public List<FavoriteMusic> getLikes() {
try { return service.getLikes();
return albumsRepo.findAll();
} catch (Exception e) {
System.out.println(e.toString());
return null;
}
} }
@PostMapping(value="/likes") @PostMapping(value="/likes")
@Transactional public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) return service.saveFavorite(favorite);
{
FavoriteMusic music = albumsRepo.save(favorite.toEntity());
if(music != null) {
return 1;
}
else {
return 0;
}
} }
} }
\ No newline at end of file
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment