내가 라이엇 게임즈의 리그 오브 레전드라는 게임을 할 때 정보를 얻기 위해 종종 이용하는 사이트에서 이런 메시지를 본적이 여러 번 있었다.

 

 

단순하게 라이엇의 서버가 불안정하다고 이해하고 있었지만, 오늘 수업자료를 통해 API를 배움으로써 위 메시지가 어떤 의미를 뜻하는지 대략적으로 알게 되었다. 먼저 오늘 내가 배운 API가 무엇인지 정의를 하도록 하겠다.

 

API란 무엇인가

 

API는 Application Programming Interface의 약자이며, 사용자가 특정 서비스로부터 데이터를 주고 받도록 중간다리 역할을 한다. 이해를 돕기 위해 아래 그림을 보도록 하자. 

 

 

위와 같이 사용자가 어플리케이션 B와 소통을 하기 위해  API를 거친다. 여기서 API가 하는 일은 다음과 같다:

 

  • 정보 교환을 위해 이용되는 기술을 정의하고, 사용자가 어플리케이션으로부터 어떻게 데이터를 받을지 결정한다.
  • 사용자와 어플리케이션의 소통할 수 있도록 인터페이스 역할을 한다.

 

어떻게 보면 API는 일종의 계약이라고도 할 수 있다. 이 계약은 사용자가 애플리케이션으로부터 어떤 명령을 수행할 수 있는지, 어떤 명령어를 입력 할 수 있는지, 어떤 데이터를 받을 수 있는지에 대한 내용들이 정의되어 있다.

 

앞서 말했듯이, 오늘은 라이엇 게임즈가 제공하는 API를 분석하여 우리가 어떤 명령을 수행하여, 어떤 데이터를 받을 수 있는지 알아보도록 하겠다.

 


 

라이엇 게임즈의 API

 

먼저 라이엇 게임즈가 자사의 API를 왜 공개하였는지에 대해서 설명하도록 하겠다.

 

라이엇 게임즈는 Open API를 통해 게임 관련 소프트웨어 개발자들에게 지정된 데이터를 액세스 할 수 있도록 해준다. 이런 데이터를 통해 개발자들은 게임 관련 소프트웨어를 개발하고, 유저들에게 게임 자체에서 볼 수 없거나, 보기 불편한 데이터를 유저들이 보기 쉽게 가공하여 제공한다. 이렇게 라이엇 게임즈의 API를 활용하여 제작된 서비스가 OP.GG라고 볼 수 있다. 

 

OP.GG가 제공하는 데이터 예시

 

Open API를 통해 라이엇 게임즈는 본인들이 직접 개발하지 않아도, 다른 회사들이 이런 서비스를 직접 제공한다. 물론 라이엇 게임즈가 이런 서비스를 직접 개발할 수 있지만, 오히려 API를 공개함으로써 여기에 드는 인력과 자원을 아낄 수가 있는 거다. 그리고 API를 사용하는 서비스에게 API 사용료를 청구하여 수익을 창출할 수도 있다.

 


 

먼저 라이엇 게임즈의 API는 Riot Games Developer Portal에서 API Key를 부여 받은 뒤 사용할 수 있다. 이렇게 API Key를 부여받은 사용자는 라이엇 게임즈의 API를 사용할 수 있으며, 라이엇 게임즈는 해당 사용자의 API Key를 통해 API로부터 어떤 데이터를 활용하는지 측정할 수 있다.

 

오늘 교육에서 배운바로는 개발자 API와 개인 API가 구분된다고 들었는데, 라이엇도 마찬가지로 개인 API Key/소규모 개발팀 API Key/대규모 개발팀 API Key 등으로 구분한 걸로 봐서는 특정 그룹에게는 API 사용 시 금액을 청구할 거 같다는 생각이 들었다.

 

이제 라이엇 API가 어떻게 구성되어있는지 알아보도록 하겠다.

 

 

화면에 보이는 바와 같이, 좌측에 API로 얻을 수 있는 정보를 카테고리별로 구분해 놓았다. 예시로 Hide on bush라는 리그 오브 레전드 유저의 정보를 찾아보도록 하겠다.

 

 

위 화면과 같이 SUMMONER-V4(게임언어로 유저라는 뜻)라는 섹션으로 들어와 우측에 있는 각 API에서 내가 얻을 수 있는 정보가 무엇이 있는지 찾아보았다. 해당 유저의 계정 ID는 알 수가 없고, 유저명만 알고 있었기 때문에 2번째 항목으로 들어갔다. 그리고 해당 항목의 앞부분이 GET이라고 적혀 있는 걸로 봐서, 라이엇 게임즈의 API는 REST API인걸 알 수 있었으며 데이터를 불러오는 행동을 한다는 점도 확인할 수 있었다.

 

 

좌측 상단 화면의 RESPONSE CLASSES 통해 우리는 특정 유저의 유저명을 입력하면 어떤 데이터를 받을 수 있는지 정의되어있다. 우측 상단 화면의 RESPONSE ERRORS는 입력값에 따른 응답 오류 값들이 정의되어 있다. 마지막으로 하단에 PATH PARAMETERS 섹션은 우리가 인풋 데이터를 입력할 수 있는 곳이다. 이제 Hide on bush라는 유저명을 입력하여 어떤 정보가 나오는지 보도록 하겠다.

 

 

첫 번째 RESPONSE CODE는 200이라고 나와있었다. 200이 무슨 의미인지 개발자 포털에서 찾아봤더니, 아래와 같이 설명이 되어있었다.

 

 

2XX response codes는 API response body에 요청한 데이터가 JSON 형식으로 출력되었다고 설명되어있었다. 따라서, 내가 입력한 인풋 값은 정상이라고 해석이 되었다.

 

위 화면의 RESPONSE BODY에 생성된 데이터는 id, accountId, puuid 등 RESPONSE CLASSES에 나온 데이터들이 순서는 다르지만 동일하게 출력되어 있었다. 이런 정보들은 일반 유저들은 모르지만, 라이엇 게임즈의 API를 사용하는 개발자들에게는 상황에 따라 필요할 수 있는 정보라고 여겨졌다.

 

이번엔 해당 유저의 티어를 알아보기 위해, 다시 API의 메인화면으로 돌아가서 관련 있어 보이는 섹션을 모두 눌러보았고, LEAGUE-V4가 순위 정보를 알려준다는 걸 알 수 있었다. 그리고 아래 화면의 tier와 rank라는 데이터를 통해 해당 유저의 순위를 찾을 수 있었다.

 

 

이제 path parameters에 가서 아래와 같이 유저명을 입력하였는데, response code 400이 출력되었다.

 

 

알고 보니 해당 API는 우리가 흔히 알고 있는 유저명을 입력하는 게 아니라 encryptedSummonerId라는 값을 입력해야 정상적으로 아웃풋이 생성되는 것이었다. 따라서, 첫 번째 예시에서 생성되었던 encryptedSummonerId를 가져와 다시 입력을 했다.

 

 

위와 같이 정상적인 데이터가 출력되었고, 해당 유저의 티어를 알 수 있게 되었다.

 


 

이제까지 라이엇 게임즈의 API를 통해 어떤 데이터를 얻을 수 있는지 알아보았다. 하지만 내가 API에서 볼 수 있는 자료와 OP.GG에서 볼 수 있는 자료에는 분명한 차이가 있었다. 내가 추측하기로는 라이엇에서 제공하는 한정된 데이터를 바탕으로 OP.GG에서 AI 러닝을 통해 자체적으로 유용한 데이터를 더 만든다고 생각되었다. 아니면 대형회사들에게는 더 많은 정보를 받을 수 있는 그들만의 API Key가 있을지도 모른다. 지난 6개월간 궁금했던 점에 대해 오늘 배우게 되어서 나름 재밌는 시간이었다.

+ Recent posts