요구사항
- RIOT 에서 제공하는 API 사용
- 다음 정보를 조회하기 위한 API 분석
- 소환사 정보 (닉네임, 레벨, 티어, 승/패) 표기
- 최근 10 게임 플레이한 챔피언, 승/패, 경기 시간, KDA
미리보기

1. Riot API 인증키 신청
1.1 Personal API KEY 신청
https://developer.riotgames.com/
Riot Developer Portal
About the Riot Games API With this site we hope to provide the League of Legends developer community with access to game data in a secure and reliable way. This is just part of our ongoing effort to respond to players' and developers' requests for data and
developer.riotgames.com
라이엇에서 제공하는 API를 사용하기 위해서는 API KEY가 필요하다.
기본적으로 제공하는 DEVELOPMENT API KEY 는 만료기간이 하루밖에 되지 않기 때문에
PRODUCTION API KEY 또는 PERSONAL API KEY를 발급받아야 한다.
PRODUCTION API KEY 의 경우, Rate Limit이 크게 설정되어 있으나 프로토타입과 웹사이트가 존재해야 한다.
PERSONAL API KEY를 신청했고 승인에는 약 1주일이 소요됐다.
2. API 분석
소환사 정보 (닉네임, 레벨, 티어, 승/패) 와 최근 10 게임 플레이한 챔피언, 승/패, 경기 시간, KDA 표기에 필요한 API 분석
2.1 소환사명(닉네임) 으로 소환사 정보 조회
https://developer.riotgames.com/apis#summoner-v4/GET_getBySummonerName
Riot Developer Portal
developer.riotgames.com
- 소환사명을 파라미터로 받아 소환사 정보를 리턴
- URL: /lol/summoner/v4/summoners/by-name/{summonerName}
- PARAMETERS: summonerName(닉네임)
- puuid(암호화된 id) , name(닉네임), profileIconId(프로필 아이콘) 등이 포함된 SummonerDTO 반환
{
"id": "DH5MIytFZh8VrLpgBN13Z8D_qtbUOxjFvaLEICT6D1ej569ByWE3uVTqrQ",
"accountId": "4TApzb_wv2EOJ14EjfXcW_EzYp9y_lOfRJfQvaozmZbQrly1DA0SaPVb",
"puuid": "i_38dlbm4doAQER1JgyLQwzLv2sXG5FMbeOB2yccygOgY08owEcajDHAyVEBOt6G7QGufraUiSplYA",
"name": "너에게난뭐냐",
"profileIconId": 5904,
"revisionDate": 1704552464000,
"summonerLevel": 115
}
2.2 id 값으로 리그(티어) 조회
https://developer.riotgames.com/apis#league-v4/GET_getLeagueEntriesForSummoner
Riot Developer Portal
developer.riotgames.com
- 위에서 응답한 고유 id 값 (닉네임X) 을 파라미터로 받아 티어 정보 리턴
- URL: /lol/league/v4/entries/by-summoner/{encryptedSummonerId}
- PARAMETERS: encryptedSummonerId (id)
- queueType(게임 타입), tier/rank (티어), wins/losses(승/패) 등이 포함된 LeagueEntryDTO 랭크 티어 반환
- 솔로랭크/팀랭크 정보가 리스트 형태로 조회, Set[LeagueEntryDTO] 형태로 반환. DTO 또는 반환타입 설정에 주의!
[
{
"leagueId": "9a8affde-d6b2-487d-a6f5-1b17de0f12bd",
"queueType": "RANKED_SOLO_5x5",
"tier": "EMERALD",
"rank": "III",
"summonerId": "DH5MIytFZh8VrLpgBN13Z8D_qtbUOxjFvaLEICT6D1ej569ByWE3uVTqrQ",
"summonerName": "너에게난뭐냐",
"leaguePoints": 0,
"wins": 128,
"losses": 132,
"veteran": false,
"inactive": false,
"freshBlood": false,
"hotStreak": false
},
{
"leagueId": "89c9e861-d4d2-4cdd-85e3-cb2ebd98b6fd",
"queueType": "RANKED_FLEX_SR",
"tier": "GOLD",
"rank": "I",
"summonerId": "DH5MIytFZh8VrLpgBN13Z8D_qtbUOxjFvaLEICT6D1ej569ByWE3uVTqrQ",
"summonerName": "너에게난뭐냐",
"leaguePoints": 46,
"wins": 3,
"losses": 5,
"veteran": false,
"inactive": false,
"freshBlood": false,
"hotStreak": false
}
]
2.3 puuid로 최근 매치 ID 조회
https://developer.riotgames.com/apis#match-v5/GET_getMatchIdsByPUUID
Riot Developer Portal
developer.riotgames.com
- puuid 를 파라미터로 받아 최근 전적 고유 ID를 리턴
- URL: /lol/match/v5/matches/by-puuid/{puuid}/ids
- PARAMETERS: puuid
- Optional 하게 type(매치 타입), start(시작 인덱스), count(리턴될 매치수) 등을 PARAMETERS로 설정 가능
- 매치 ID 가 List[string] 형태로 반환
[
"KR_6889068629",
"KR_6889020368",
"KR_6888917320",
"KR_6888859313",
"KR_6870545573",
"KR_6870490931",
"KR_6870433843",
"KR_6870378653",
"KR_6870339983",
"KR_6870316266",
"KR_6869523333",
"KR_6869478582",
"KR_6869442460",
"KR_6848903743",
"KR_6819919307",
"KR_6819860613",
"KR_6819766664",
"KR_6819662900",
"KR_6819613858",
"KR_6819558426"
]
2.4 매치 ID로 상세 매치 정보 조회
https://developer.riotgames.com/apis#match-v5/GET_getMatch
Riot Developer Portal
developer.riotgames.com
- 매치 ID를 파라미터로 상세 매치 정보 조회
- URL: /lol/match/v5/matches/{matchId}
- PARAMETERS: matchId
- InfoDto(게임 정보), ParticipantDto(유저별 상세 정보), TeamDto(팀 정보) 등이 담긴 MatchDto 반환
- 필드값이 매우 많고 구조가 복잡하므로 어떠한 필드를 사용할 것인지 파악하는 것이 중요
- 사용할 필드값: InfoDto.gameMode (일반게임/칼바람), InfoDto.gameDuration(게임 시간), ParticipantDto.win(승/패), ParticipantDto.kills (킬), ParticipantDto.deaths(데스), ParticipantDto.assists(어시스트), ParticipantDto.championId (챔피언 고유 아이디) 등
{
"metadata": {
"dataVersion": "2",
"matchId": "KR_6889068629",
// 사용자 puuid
"participants": [
"F8q4CEKpKpBRZlFBGGg2HCYrPy0FhmSx_8hQFdPsN3_zyXD8Jqt70WkY6vZyhkFWJvclSooWQUfqzQ",
"wm-IlY9IaQpnbZkPTJcy75UKwqS9LAH1dpnesgeRaxlrQ679ONMH8RXXkTNROqWLF-7Yy8yCvyhqmQ",
...
]
},
// 게임 정보
"info": {
"gameCreation": 1704551452992,
"gameDuration": 972,
"gameEndTimestamp": 1704552453363,
"gameId": 6889068629,
"gameMode": "CLASSIC",
...
// 사용자별 상세 정보
"participants": [
{
"allInPings": 0,
"assistMePings": 0,
"assists": 2,
"baitPings": 0,
...
"challenges": {
...
},
...
},
...
'백앤드 개발 > Spring boot 기반 롤 전적 사이트 개발' 카테고리의 다른 글
[Spring 프로젝트] 전적검색 구현 (1) | 2024.01.08 |
---|---|
[Spring 프로젝트] 스프링부트 jar 배포 (EC2, RDS, 고정 IP, FileZila) (0) | 2023.12.23 |
[Spring 프로젝트] 프로젝트 설계 3일차 기능 명세서 (2) | 2023.12.06 |
[Spring 프로젝트] 프로젝트 설계 2일차 테이블 설계 (0) | 2023.11.16 |
[Spring 프로젝트] 프로젝트 설계 1일차 (0) | 2023.11.10 |