Spring Boot 라이엇 API 써보기 [1] - 데이터 받아오기 - RestTemplate

yoongyum·2022년 8월 13일
0

라이엇 API

바로가기

위 링크로 가시고, API 키값을 할당 받으면, 라이엇 API를 사용할 수 있습니다.
(처음 2주동안은 Develop Key를 사용했고 그 뒤에는 Personal Key를 받아서 사용했습니다.)

먼저, 라이엇에 API 요청을 하면 응답으로 받은 JSON데이터를 JAVA 객체로 변환을 해야했습니다.

변환된 객체를 Entity로 만들어서 Mysql DB에 저장되게 하는 연습을 하는 과정을 가졌습니다.

롤 챔피언 정보를 가지고 연습하기 되게 좋아서, 챔피언 정보를 저장하는 걸 확인하며, 코딩을 했습니다.


챔피언 정보는 위 링크와 다르게 여기📌로 가셔서 게임관련 데이터를 받을 수 있습니다.


챔피언 정보 받아오기

//롤 모든 챔피언 정보 
public static final String CHAMP_INFO = 
   "http://ddragon.leagueoflegends.com/cdn/{version}/data/ko_KR/champion.json";

위 API는 해당 버전에 맞게 롤에 존재하는 모든 챔피언 정보를 보여줍니다.

챔피언 고유 key 번호 , 이름, 설명, 이미지, 역할군, 기본 스텟 등을 받아올 수 있습니다.

따라서 이 API를 토대로 모든 챔피언의 key값을 알 수 있고, 이름을 알 수 있습니다.

// 특정 챔피언 상세정보
public static final String CHAMP_DETAILS =
	"http://ddragon.leagueoflegends.com/cdn/{version}/data/ko_KR/champion/{championName}.json";

특정 챔피언 상세 정보가 들어있는 json파일을 받을 수 있습니다.

{championName} 위치에 위에서 받아온 챔피언 이름을 집어 넣으면 해당 챔피언의 스킬, 스킨 등의 정보까지 받아올 수 있습니다.


🥏로직 구성

Spring에서 지원하며, 객체로 간편하게 Rest 방식 API를 호출할 수 있는 내장 클래스로 RestTemplate를 사용했습니다.

🌐 URI 객체 생성

//"http://ddragon.leagueoflegends.com/cdn/{version}/data/ko_KR/champion.json"

URI uri = createUriComponent(/*API URI*/)
   	.encode()
    .buildAndExpand(version)
    .toUri();

버전 역시 위 API URI를 보시면 동적으로 변하기 때문에 파라미터로 넣어줬습니다.
(글 작성일 기준 12.15.1 버전 이네요..^^)

createUriComponent에는 String타입으로 저장해둔 API URI를 넣습니다.
encode는 문자열에 한글 등의 문자를 인코딩해주는 메서드입니다.
buildAndExpand는 스트링에 {version}처럼 동적으로 변하는 문자에 넣을 수 있습니다.


만약 API에 동적으로 변하는 파라미터가 필요 없다면

아래처럼 .buildAndExpand.build로 사용하시면 됩니다.

//"https://ddragon.leagueoflegends.com/api/versions.json";
private String[] checkVersion() {
    URI uri = createUriComponent(/*API URI*/)
            .encode()
            .build().toUri();
    
    String[] result = restTemplate.getForObject(uri, String[].class);
    return result;
}

🍕 RestTemplate 간단 사용기

위 코드에서는 버전 정보가 담긴 JSON파일을 getForObject메서드를 사용해서 String 배열로 받았습니다.

[
"12.15.1",
"12.14.1",
"12.13.1",
"12.12.1",
"12.11.1",
"12.10.1",
"12.9.1",
"12.8.1",
"12.7.1",
"12.6.1",
"12.5.1",
"12.4.1",
"12.3.1",
"12.2.1",
  .... 생략
]

버전 정보는 이런식으로 리스트 형태로 오기 때문에 String 배열로 받을 수 있습니다.

응답으로 오는 JSON 형식에 따라서 getForObject메서드의 두번째 파라미터의 클래스 타입을 제대로 설정해주어야 합니다.

0개의 댓글