개발자가 될래요
Riot API 사용해보기(2) 본문
Riot API들을 하나하나 보다보니, puuid 뿐만 아니라, 요청을 보내는데 필요한 것들이 더 있었다.
SUMMONER 탭을 들어가면 역시 여러 api 주소가 있는데, 이중에서 3번째에 있는
/lol/summoner/v4/summoners/by-puuid/{encryptedPUUID}를 보니 이전에 구했던 puuid를 이용하여 정보를 얻어 올 수 있을 것 같다.
정보는 accountId, profileIconId, revisionDate, id, puuid, summoner Level을 반환한다.

그럼 한번 hide on bush의 정보를 보자.

hide on bush#kr1의 puuid를 얻어주고.. /lol/summoner/v4/summoners/by-puuid/{encryptedPUUID} 요청을 보낼 서버와 클라이언트 페이지를 만들어 주자.
summoner.tsx
// src/app/components/riot/summoner.tsx
route.ts
// src/app/api/riot/summoner/route.ts
이렇게 코드를 작성하고 puuid를 넣어서 정보를 받아본다.

이 다음으로는 Match-V5 탭에 들어가 준다.

첫번째 엔드포인트에 puuid를 이용하면 해당 아이디의 최근 게임했던 gameId 목록을 얻을 수 있고,

두번째 엔드포인트에 그 gameId를 넣으면, 해당 게임 경기의 다양한 기록들을 볼 수 있다.


내가 플레이 했던 게임의 id값을 두번째 엔드포인트에 넣으니 엄청난 양의 데이터를 반환한다.(스크롤의 길이가 심상치가 않다.)
해당 데이터에 대한 내용은 어떤 분이 어느정도 해석해 둔 것이 있어서 참고하였다.( Riot 프로젝트 - RIOT API 분석 (velog.io)
{
"metadata": {
"dataVersion": "2",
"matchId": "KR_6961713821",
"participants": [
"onzpaKK-V4BWINOlxzE6UmOjE13H1SlUXJabHDI4E1SYmNH_DkC65uWUzedqjqPyrF7KSK-kXN9i8g",
외 9명
]
},
"info": {
"endOfGameResult": "GameComplete",
# 게임 픽창 시간(유닉스 시간)
"gameCreation": 1708703810434,
# 게임 시간(초 단위)
"gameDuration": 1410,
# 게임 끝난 시간(유닉스 시간)
"gameEndTimestamp": 1708705237955,
# 게임 id
"gameId": 6961713821,
# 게임 모드(CLASSIC = 5대5)
"gameMode": "CLASSIC",
# 게임 이름?
"gameName": "teambuilder-match-6961713821",
# 인게임 시작
"gameStartTimestamp": 1708703827638,
# 게임 타입
"gameType": "MATCHED_GAME",
# 버전 = 14.4패치
"gameVersion": "14.4.561.3953",
# 맵 id (11이 소환사의 협곡)
"mapId": 11,
# 참가자 정보
"participants": [
{
# 올인 핑
"allInPings": 0,
# 도움 핑
"assistMePings": 7,
# 어시스트 수
"assists": 2,
# 바론 막타
"baronKills": 0,
# 기본 핑
"basicPings": 0,
# 현상금 레벨
"bountyLevel": 0,
"challenges": {
# 연속 어시스트 기록
"12AssistStreakCount": 0,
# 스킬 사용 횟수
"abilityUses": 268,
# 15분 전 에이스 횟수
"acesBefore15Minutes": 0,
# 정글 몹 처치
"alliedJungleMonsterKills": 0,
# 바론 막타
"baronTakedowns": 0,
"blastConeOppositeOpponentCount": 0,
# 생성 현상금
"bountyGold": 0,
# 뺏은 버프 횟수
"buffsStolen": 0,
# 서폿 템 유무
"completeSupportQuestInTime": 0,
# 공격적 와드 장악력 "controlWardTimeCoverageInRiverOrEnemyHalf": 0.7095672615944019,
# 제어 와드
"controlWardsPlaced": 1,
# DPM
"damagePerMinute": 865.0203906284592,
# 팀내 데미지 받은 비중
"damageTakenOnTeamPercentage": 0.24315185057986916,
# 전령 관련같은데...
"dancedWithRiftHerald": 0,
# 적 챔프에게 죽은 횟수
"deathsByEnemyChamps": 10
# 매우 짧은 거리에서 스킬 피한 횟수
"dodgeSkillShotsSmallWindow": 0,
# 두번 연속 에이스
"doubleAces": 0,
# 용 처치 횟수(킬, 어시 포함)
"dragonTakedowns": 0,
# 라인전 시작전 골드, 경험치 이득보고 시작(인베이드 이득, True of False)
"earlyLaningPhaseGoldExpAdvantage": 1,
# 힐, 실드량
"effectiveHealAndShielding": 0,
"elderDragonKillsWithOpposingSoul": 0,
"elderDragonMultikills": 0,
# cc기 맞춘 횟수 "enemyChampionImmobilizations": 38,
# 적 정글 몬스터 킬
"enemyJungleMonsterKills": 0,
# 적 정글러 근처에서 에픽몬스터 처치횟수(스틸횟수)
"epicMonsterKillsNearEnemyJungler": 0,
# 에픽 몬스터 생성후 30초이내에 처치 "epicMonsterKillsWithin30SecondsOfSpawn": 0,
# 에픽 몬스터(바론, 용, 블루, 레드)스틸 횟수
"epicMonsterSteals": 0,
# 에픽 몬스터 스마이트 없이 스틸
"epicMonsterStolenWithoutSmite": 0,
# 첫 타워 깼는지 (팀 전체가 1)
"firstTurretKilled": 1,
# 첫 타워 깬 시점
"firstTurretKilledTime": 821.3447503,
# 우리팀 데스없이 상대방 전멸
"flawlessAces": 0,
# 상대팀 전멸시킨 횟수
"fullTeamTakedown": 0,
# 전체 게임 시간
"gameLength": 1410.5417132,
"getTakedownsInAllLanesEarlyJungleAsLaner": 0,
# GPM
"goldPerMinute": 391.2527333411794,
"hadOpenNexus": 0,
# 자신의 cc기를 활용해 팀원과 같이 적을 죽인 횟수
"immobilizeAndKillWithAlly": 0,
# 첫 버프 먹은 수 ( max = 4)
"initialBuffCount": 0,
# 첫 바위 게 먹은 수 ( max = 2)
"initialCrabCount": 0,
# 10분 이전 정글 몹으로만 cs
"jungleCsBefore10Minutes": 0,
# 적 정글러 에픽 건드리는데 우리가 죽임 "junglerTakedownsNearDamagedEpicMonster": 0,
# 광 타임 끝나기전 터렛 부쉈는 지 "kTurretsDestroyedBeforePlatesFall": 0,
# KDA
"kda": 0.6,
# 암살
"killAfterHiddenWithAlly": 0,
# 킬 관여율
"killParticipation": 0.2857142857142857,
"killedChampTookFullTeamDamageSurvived": 0,
# "학살중입니다 콜 횟수"
"killingSprees": 0,
# 다이브 성공 횟수
"killsNearEnemyTurret": 1,
"killsOnOtherLanesEarlyJungleAsLaner": 0,
"killsOnRecentlyHealedByAramPack": 0,
# 다이브 받아쳐서 킬한 횟 수
"killsUnderOwnTurret": 1,
# 에픽 몬스터 딜과 합작 킬
"killsWithHelpFromEpicMonster": 0,
# 그랩류 같은 것으로 우리팀에게 끌어와서 킬
"knockEnemyIntoTeamAndKill": 2,
# 극초반 스킬샷 적중횟수
"landSkillShotsEarlyGame": 6,
# 10분전 라인 미니언
"laneMinionsFirst10Minutes": 81,
# 라인 초반 강한 이점
"laningPhaseGoldExpAdvantage": 0,
# 전설입니다 콜 횟수
"legendaryCount": 0,
# 코어 아이템 목록
"legendaryItemUsed": [
3142,
3004
],
# 억제기 잃었음
"lostAnInhibitor": 0,
# 최고로 낸 cs차이
"maxCsAdvantageOnLaneOpponent": 34,
# 이상한듯 수치가 안나옴.
"maxKillDeficit": 0,
# 맞 라인 상대에 대해 최대 레벨 차이
"maxLevelLeadLaneOpponent": 2,
# 메자이 풀스텍 채웠는지
"mejaisFullStackInTime": 0,
# 얼마나 적 정글 침범했는지 퍼센트로 나옴(음수로)
"moreEnemyJungleThanOpponent": 0,
# 한 스펠로 다수의 킬 만들어냄
"multiKillOneSpell": 0,
# 전령으로 한번에 여러개 타워 처치
"multiTurretRiftHeraldCount": 0,
# 멀티킬
"multikills": 0,
# 공격적인 플래쉬로 여러 킬 횟수 "multikillsAfterAggressiveFlash": 0,
# 10분이내 타워 처치
"outerTurretExecutesBefore10Minutes": 0,
# 수적으로 열세일 때 킬
"outnumberedKills": 0,
# 수적으로 열세일 때 넥서스 처치
"outnumberedNexusKill": 0,
# 드래곤 영혼 획득
"perfectDragonSoulsTaken": 0,
# 팀 노데스
"perfectGame": 0,
# 협력 킬포인트 생산 횟수
"pickKillWithAlly": 3,
# 의미없는 데이터
"playedChampSelectPosition": 1,
# 버려
"poroExplosions": 0,
# 클린즈 사용 횟수
"quickCleanse": 0,
"quickFirstTurret": 0,
# 빠른 솔로킬
"quickSoloKills": 0,
# 전령 처치횟수
"riftHeraldTakedowns": 0,
# 팀원 살려준 횟수
"saveAllyFromDeath": 0,
# 바위 게 컨트롤 횟수
"scuttleCrabKills": 0,
# 피한 스킬 샷
"skillshotsDodged": 2,
# 맞춘 스킬 샷
"skillshotsHit": 15,
# 버려
"snowballsHit": 0,
# 혼자 바론 킬
"soloBaronKills": 0,
# 솔로킬
"soloKills": 3,
# 일반와드 설치 횟수
"stealthWardsPlaced": 8,
# 한자리수 hp로 살아감
"survivedSingleDigitHpCount": 0,
# cc기 3개이상 맞고 살아감 "survivedThreeImmobilizesInFight": 2,
# 첫번째 포탑 파괴 or 파괴될 때 적 사냥
"takedownOnFirstTurret": 0,
# 킬 + 어시
"takedowns": 6,
# 레벨업 활용해서 적 처치 관여 "takedownsAfterGainingLevelAdvantage": 0,
# 정글 미니언 스폰전에 적 처치관여(인베이드)
"takedownsBeforeJungleMinionSpawn": 0,
# 10분 전 적 처치관여 횟수
"takedownsFirstXMinutes": 4,
# 라인 뒷 골목에서 적 처치관여
"takedownsInAlcove": 0,
# 우물 킬
"takedownsInEnemyFountain": 0,
# 바론 먹은 횟수
"teamBaronKills": 0,
# 팀내 데미지 비중
"teamDamagePercentage": 0.26852989743228145,
# 팀 장로 드래곤
"teamElderDragonKills": 0,
# 팀 전령
"teamRiftHeraldKills": 0,
# 텔포로 적 처치관여
"teleportTakedowns": 1,
# 큰 데미지 입고도 살아감
"tookLargeDamageSurvived": 0,
# 광 몇개 캤는지
"turretPlatesTaken": 2,
# 타워 몇개 부셨는지 관여
"turretTakedowns": 0,
# 전령으로 타워 몇개 부셨는지
"turretsTakenWithRiftHerald": 0,
# 3초안에 20개이상 미니언 처치
"twentyMinionsIn3SecondsCount": 0,
# 와드 두개를 한번의 렌즈로 지움
"twoWardsOneSweeperCount": 0,
# 언씬리콜인데 다 0뜸 쓰지말자
"unseenRecalls": 0,
# 시야점수 이점 (음수면 진거)
"visionScoreAdvantageLaneOpponent": 0.01774919033050537,
# VPM
"visionScorePerMinute": 0.8887097165781768,
# 와드 처치 횟수
"wardTakedowns": 3,
# 와드 처치 횟수 20분전
"wardTakedownsBefore20M": 3,
# 와드 처치 방어
"wardsGuarded": 0
},
# 챔프 경험치
"champExperience": 10777,
# 챔프 레벨
"champLevel": 13,
# 챔프 id
"championId": 126,
# 챔프 이름 : 제이스
"championName": "Jayce",
# 챔피언 교체(스왑)
"championTransform": 0,
# 명령 핑 횟수
"commandPings": 2,
"consumablesPurchased": 2,
# 건축물 딜(억제기 타워 넥서스)
"damageDealtToBuildings": 1376,
# 오브젝트 딜
"damageDealtToObjectives": 2081,
# 타워 딜
"damageDealtToTurrets": 1376,
"damageSelfMitigated": 10640,
# 위험 핑
"dangerPings": 0,
# 데스 수
"deaths": 10,
# 핑와 설치 수
"detectorWardsPlaced": 1,
# 더블 킬
"doubleKills": 0,
# 드래곤 막타
"dragonKills": 0,
"eligibleForProgression": true,
# 미아 핑
"enemyMissingPings": 22,
# 적 와드 핑
"enemyVisionPings": 1,
# 퍼블 어시
"firstBloodAssist": false,
# 퍼블 킬
"firstBloodKill": false,
# 타워 퍼블 어시스트
"firstTowerAssist": false,
# 타워 퍼블 킬
"firstTowerKill": false,
# 15분 서렌 쳐서 졌나?
"gameEndedInEarlySurrender": false,
# 서렌 쳐서 졌나?
"gameEndedInSurrender": true,
# 후퇴 핑
"getBackPings": 1,
# 획득 골드
"goldEarned": 9197,
# 사용 골드
"goldSpent": 7725,
# 유지 핑
"holdPings": 0,
# 개인 포지션 : 탑
"individualPosition": "TOP",
# 억제기
"inhibitorKills": 0,
"inhibitorTakedowns": 0,
"inhibitorsLost": 0,
"item0": 3142,
"item1": 3042,
"item2": 1083,
"item3": 1036,
"item4": 1055,
"item5": 3158,
"item6": 3340,
"itemsPurchased": 16,
# 킬링스프리 횟수
"killingSprees": 0,
# 킬
"kills": 4,
"lane": "MIDDLE",
"largestCriticalStrike": 0,
"largestKillingSpree": 0,
"largestMultiKill": 1,
"longestTimeSpentLiving": 284,
# AP딜
"magicDamageDealt": 10672,
# 챔프에 가한 AP딜
"magicDamageDealtToChampions": 3924,
"magicDamageTaken": 10672,
"missions": {
"playerScore0": 0,
"playerScore1": 0,
"playerScore10": 0,
"playerScore11": 0,
"playerScore2": 0,
"playerScore3": 0,
"playerScore4": 0,
"playerScore5": 0,
"playerScore6": 0,
"playerScore7": 0,
"playerScore8": 0,
"playerScore9": 0
},
"needVisionPings": 0,
"neutralMinionsKilled": 0,
"nexusKills": 0,
"nexusLost": 0,
"nexusTakedowns": 0,
"objectivesStolen": 0,
"objectivesStolenAssists": 0,
"onMyWayPings": 9,
"participantId": 1,
"pentaKills": 0,
"perks": {
"statPerks": {
"defense": 5001,
"flex": 5008,
"offense": 5008
},
"styles": [
{
"description": "primaryStyle",
"selections": [
{
"perk": 8230,
"var1": 14,
"var2": 0,
"var3": 0
},
{
"perk": 8226,
"var1": 250,
"var2": 736,
"var3": 0
},
{
"perk": 8233,
"var1": 13,
"var2": 40,
"var3": 0
},
{
"perk": 8236,
"var1": 14,
"var2": 0,
"var3": 0
}
],
"style": 8200
},
{
"description": "subStyle",
"selections": [
{
"perk": 8345,
"var1": 3,
"var2": 0,
"var3": 0
},
{
"perk": 8304,
"var1": 9,
"var2": 0,
"var3": 0
}
],
"style": 8300
}
]
},
# AD딜
"physicalDamageDealt": 90436,
# 챔피언에게 가한 AD딜
"physicalDamageDealtToChampions": 16411,
"physicalDamageTaken": 10849,
"placement": 0,
"playerAugment1": 0,
"playerAugment2": 0,
"playerAugment3": 0,
"playerAugment4": 0,
"playerScore0": 0,
"playerScore1": 0,
"playerScore10": 0,
"playerScore11": 0,
"playerScore2": 0,
"playerScore3": 0,
"playerScore4": 0,
"playerScore5": 0,
"playerScore6": 0,
"playerScore7": 0,
"playerScore8": 0,
"playerScore9": 0,
"playerSubteamId": 0,
"profileIcon": 5634,
"pushPings": 0,
"puuid": "onzpaKK-V4BWINOlxzE6UmOjE13H1SlUXJabHDI4E1SYmNH_DkC65uWUzedqjqPyrF7KSK-kXN9i8g",
"quadraKills": 0,
"riotIdGameName": "\uc5c4\ub3c4\ub0a0\ub4dc",
"riotIdTagline": "KR1",
"role": "DUO",
"sightWardsBoughtInGame": 0,
"spell1Casts": 87,
"spell2Casts": 51,
"spell3Casts": 53,
"spell4Casts": 77,
"subteamPlacement": 0,
"summoner1Casts": 4,
"summoner1Id": 12,
"summoner2Casts": 3,
"summoner2Id": 4,
"summonerId": "K4p6x2KSZJZB6TMV57fmMOg5OEjeONKZo0H4w7uVRP-DE6g",
"summonerLevel": 214,
"summonerName": "\uc5c4\ub3c4\ub0a0\ub4dc",
"teamEarlySurrendered": false,
"teamId": 100,
"teamPosition": "TOP",
# cc건 시간 (초)
"timeCCingOthers": 15,
"timePlayed": 1410,
"totalAllyJungleMinionsKilled": 0,
"totalDamageDealt": 101372,
"totalDamageDealtToChampions": 20335,
"totalDamageShieldedOnTeammates": 0,
"totalDamageTaken": 22304,
"totalEnemyJungleMinionsKilled": 0,
"totalHeal": 860,
"totalHealsOnTeammates": 0,
"totalMinionsKilled": 177,
"totalTimeCCDealt": 108,
"totalTimeSpentDead": 282,
"totalUnitsHealed": 1,
"tripleKills": 0,
"trueDamageDealt": 263,
"trueDamageDealtToChampions": 0,
"trueDamageTaken": 782,
"turretKills": 0,
"turretTakedowns": 0,
"turretsLost": 6,
"unrealKills": 0,
"visionClearedPings": 0,
"visionScore": 20,
"visionWardsBoughtInGame": 1,
"wardsKilled": 3,
"wardsPlaced": 9,
"win": false
},
이러한 데이터가 * 10명 만큼 넘어온다....
'프로젝트' 카테고리의 다른 글
| [Agent] 코드 리뷰 및 분석 agent 만들기(1) (0) | 2026.05.24 |
|---|---|
| Riot API 사용해보기(3) (1) | 2024.09.17 |
| Riot API 사용해보기(1) (0) | 2024.09.01 |
| 자체 로그인에 프로필 이미지 추가 (0) | 2024.09.01 |
| Next.js 소셜 로그인 구현 (1) | 2024.08.31 |