Skip to content
Snippets Groups Projects
Select Git revision
  • 17211f526e6350407c6e5d3af0eb9907b342ce3b
  • master default protected
2 results

MyWebController.java

Blame
  • MyWebController.java 3.00 KiB
    package com.ajou.prcoding.myweb.controller;
    
    import java.io.IOException;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    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.ajou.prcoding.myweb.dto.FavoriteMusicRequestDto;
    import com.ajou.prcoding.myweb.dto.MusicList;
    import com.ajou.prcoding.myweb.entity.FavoriteMusic;
    import com.ajou.prcoding.myweb.repository.FavoriteRepository;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import jakarta.transaction.Transactional;
    
    @RestController
    
    public class MyWebController {
    
        @Autowired
        FavoriteRepository albumsRepo;
    
        // PathVariable 방식 => localhost/musicSearch/aespa 로 접속
        @GetMapping(value = "/musicSearch/{term}")
        public MusicList musicSearchByPath(@PathVariable 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;
            }
        }
    
        // 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;
            }
        }
    
        // 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;
            }
        }
    
    }