Spring

spotify web api 사용 방법 (Java, Spring boot)

체리1001 2022. 2. 8.

음악과 함께 하루를 기록할 수 있는 간단한 다이어리를 기획하고 spotify web api를 사용해 음악 검색 기능을 구현했습니다.

 

API 사용 방법은 아래 공식 사이트에서 자세한 사항을 확인할 수 있습니다.

https://developer.spotify.com/

 

Home | Spotify for Developers

Music, meet code. Powerful APIs, SDKs and widgets for simple and advanced applications.

developer.spotify.com

1.  App 생성

스포티파이 개발자 사이트에 접속해서 로그인을 하고, 사용할 App을 새로 생성해 줍니다.

 

2. Client ID와 Client Secret 확인

생성한 App에서 Client IDClient Secret을 확인합니다. (API 사용을 위해 꼭 필요한 것이니 잘 확인해 주세요!)

 

 

3.  accessToken 발급

스포티파이 web api는 client ID와 clientSecret을 사용하여 accessToken을 받고 accessToken을 사용하여 원하는 요청을 보내는 방식으로 동작합니다. 그렇기 떄문에 2단계에서 확인한 Client ID와 Client Secret을 통해 accessToken을 발급받아줍니다!!

 

 

토큰 발행에 대한 내용은 아래의 깃헙 코드를 참고했습니다 :)

https://github.com/spotify-web-api-java/spotify-web-api-java/blob/develop/README.md

 

GitHub - spotify-web-api-java/spotify-web-api-java: A Java wrapper for Spotify's Web API.

A Java wrapper for Spotify's Web API. Contribute to spotify-web-api-java/spotify-web-api-java development by creating an account on GitHub.

github.com

 

(1) build.gradle

dependencies{
	implementation 'com.github.thelinmichael:spotify-web-api-java:master-SNAPSHOT'
}

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

 

(2) CreateToken.java

public class CreateToken {

    private static final String CLIENT_ID = "발급받은 CLIENTID";
    private static final String CLIENT_SECRET = "발급받은 CLIENTSECRET";

    private static final SpotifyApi spotifyApi = new SpotifyApi.Builder().setClientId(CLIENT_ID).setClientSecret(CLIENT_SECRET).build();

    public static String accesstoken() {
        ClientCredentialsRequest clientCredentialsRequest = spotifyApi.clientCredentials().build();
        try {
            final ClientCredentials clientCredentials = clientCredentialsRequest.execute();
            // Set access token for further "spotifyApi" object usage
            spotifyApi.setAccessToken(clientCredentials.getAccessToken());
            return spotifyApi.getAccessToken();

        } catch (IOException | SpotifyWebApiException | ParseException e) {
            System.out.println("Error: " + e.getMessage());
            return "error";
        }
    }
}

 

4. 검색 요청 보내기

저는 search API를 활용해서 원하는 트랙의 정보를 가져오도록 코드를 작성했습니다.

앨범말고도 많은 데이터를 제공하고 있으니 아래의 페이지에서 원하는 기능을 찾아 사용하면 됩니다!

 

https://developer.spotify.com/documentation/web-api/reference/#/operations/search

 

Web API Reference | Spotify for Developers

Music, meet code. Powerful APIs, SDKs and widgets for simple and advanced applications.

developer.spotify.com

 

search의 필수요소는 검색어와(q) 타입입니다. 간단하게 원하는 타입을 지정해주고 검색어를 넣어주면 됩니다 :)

public class MusicSearch {
    public String search(String accessToken, String q){ //q는 검색어

        RestTemplate rest = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Bearer " + accessToken);;
        headers.add("Host", "api.spotify.com");
        headers.add("Content-type", "application/json");
        String body = "";

        HttpEntity<String> requestEntity = new HttpEntity<String>(body, headers);
        ResponseEntity<String> responseEntity = rest.exchange("https://api.spotify.com/v1/search?type=track&q=" + q, HttpMethod.GET, requestEntity, String.class);
        HttpStatus httpStatus = responseEntity.getStatusCode();
        int status = httpStatus.value(); //상태 코드가 들어갈 status 변수
        String response = responseEntity.getBody();
        System.out.println("Response status: " + status);
        System.out.println(response);

        return response;
    }
}

 

해당 함수를 사용하여 요청을 보내면 JSON 데이터가 응답으로 잘 돌아오는 것을 확인할 수 있습니다! 🎶

 

댓글