⚠ 정리하다가 샛길로 빠졌읍니다. 이건 가볍게 훅! 훑기만 하고 이 다음 다음 포스트를 참고해주세요!
엔드포인트와 샤드의 차이를 찾아보려다 REST API 에 관해 읽어보게 되었고.... 펍지가 왜 이렇게 적당히 설명해주나 했는데 나름 최선이었음 알았다.... 하지만 덕분에 재밌는 걸 찾았다. 그래도 이걸 엎을 수는 없고, 일단 이 정도에서 잠시 멈추고, 프로젝트를 위한 쉬운 버전 가이드를 만들 예정.
👉 [펍지 API] 파이썬으로 데이터 가져오기③ 실전 사용법
배그 API 활용을 위한 공식문서 톺아보기
Documentation 에서 활용하는 방법을 정말 세세하게 설명해주기는 하지만! 카테고리 구분이 좀 불분명해서 언뜻 보면 굉장히 헷갈린다. 모든 정보가 필요하지도 않고.
그래서! 총.정.리 해보았다!!
파이썬으로는 requests 모듈을 이용해 데이터를 불러오는데, 친절하게 이 코드도 다 알려준다.
import requests
url = "endpoint-url"
header = {
"Authorization": "Bearer <api-key>",
"Accept": "application/vnd.api+json"
}
r = requests.get(url, headers=header)
여기서 손대야 하는 곳은 총 3군데이다.
url
의 "endpoint-url" 괄호 안Authorization
의 "Bearer <api-key>" 괄호 안Accept
의 "application/vnd.api*json" 괄호 안이제부터 하나씩 뜯어보자!
✋🏻 endpoint
란?
API가 데이터베이스로 들어가는 입구라면, endpoint는 클라이언트가 API로 접근하게 해주는 일종의 url이다. 각 endpoint 마다 다른 정보를 가지고 있어서 일종의 필터 역할도 한다. (근본적으로 뭔가 많이 알아야는데, 여기서는 이 정도로 충분)
URL = "endpoint-url"
기본 주소 https://api.pubg.com/
가 있는데,
배그 데이터는 그냥 가져오려고 했다가는 몇날 며칠이 걸릴 정도로 방-대하기 때문에, endpoint를 포함해서 파라미터를 붙여 선별적으로 가져올 수 있는 걸 이용하자.
뉴욕사는 John이 xbox로 플레이한 데이터까진 필요 없으니까
반면 너무 잘게 잘라올 필요도 없다.
어차피 SQL이나 python으로 전처리를 할 거니까!
필수추천 파라미터 3가지 - 유용한 하위 옵션 위주로 정리했다.
steam
, kakao
/ pc-as
(Asia), pc-kakao
(Kakao), pc-krjp
(Korea)players
, matches
filter[playerIds]=$playerId
"https://api.pubg.com/shards/$platform/players?filter[playerNames]=$playerName"
1️⃣ shards
샤드는 AWS에서 쓰는 일종의 저장소 구분 단위이다.
이건 어떤 데이터를 가져오든 꼭 지정해줘야 한다.
"...pubg.com/shards/$steam/endpoint..."
shards/$ 👈 요 달러 표시 뒤에 원하는 것 넣기
배그는 PC(steam, kakao 등)와 콘솔(xbox, ps4 등), 여러 플랫폼으로 서비스하기 때문에 그중 하나로 정해줘야 한다.
steam
, kakao
혹은 플랫폼+지역별로 나눠서 볼 수 있다.
pc-as
- Asiapc-kakao
- Kakaopc-krjp
- Korea더 많은 옵션은 여기
2️⃣ Endpoint
"...pubg.com/shards/$steam/players?filter..."
/players 👈 슬래쉬 뒤에 엔드포인트 이름 넣기.
앞서 설명한 것처럼, endpoint가 무엇이냐에 따라서 가져오는 정보가 달라진다. 데이터프레임으로 생각하면, 컬럼 리스트가 달라지는 것!
사실 엄밀히 따지면 이 url 자체가 endpoint이다.
하지만 shards는 거의 디폴트로 쓰기 때문에 편의상 이 부분을 endpoint 라고 부르겠다.
라고 써놓고 맞나? 싶어서 찾아보다가 딴 길로 새게 된 것...
Players
:Season stats
-seasons
Season objects each contain the ID of a season, which can be used to lookup season information for a player.이거는 여기서 다 설명이 불가... 간단하게만 말하면!
펍지 Documenatation 의 카테고리 PLAYERS 부터 MATCHES 정도까지 앞으로 쓸 거다. 그런데 이게 endpoint 뭐 이런 개념으로 묶은게 아니고 펍지가 나름 사용자 입장에서 편하게 분류한 거 같다. 아마도
아무튼 그래서 펍지의 의도대로 사용하는 법은 이 다음다음 포스팅 참고!
3️⃣ ?filter[playerNames]=$playerName
말그대로 필터!
[ ]
필터 이름 총 4가지 중 택 1.
$
뒤에 꺼내고 싶은 게 뭔지.
filter[playerIds]=$playerId
filter[playerNames]=$playerName
filter[gamepad]=$isGamepad
page[number]=$page
주로 쓰게 될 playerIds와 playerNames는 콤마(,)를 이용해 한 번에 10개까지 가져올 수 있다.
(참고) 프로선수, 구단 바꾸면서 이름을 바꾸기도 해서 playerId를 알아낸 다음 그걸로 가져오자.
이것도 좀 복잡스... 그냥 그렇구나! 하고 넘어가기!
"Authorization": "Bearer <api-key>"
header = {
"Authorization": "Bearer <api-key>",
"Accept": "application/vnd.api+json"
}
"Bearer <api-key>"의 따옴표 안을 전부 지우고,
처음에 회원가입 하고 발급받은 자신의 고유 API key
를 복붙하면 끝!
"Accept": "application/vnd.api+json"
API를 어떤 포맷으로 가져올지 결정해주는 코드
header = {
"Authorization": "Bearer <api-key>",
"Accept": "application/vnd.api+json"
}
"application/vnd.api+json"의 진하게 표시 안에 넣을 수 있는 두 가지 옵션:
"application/vnd.api+json"
"application/json"
여기서도 두 개의 차이가 궁금해서 구글링
근데 나중에 볼 예시에서 보면 전자만 보여서... 후자는 안되는 건가? 했는데 json만 있는 것도 어디서 본 거 같은데 모양이 약-간 달랐다. 아직 실습을 제대로 안해봤지만, 둘 다 시도해보시길.
"아~ 이런게 있구나" 했다면, ~~더 이상 알면 다치니까
👉👉 다음다음 포스팅 [펍지 API] 파이썬으로 데이터 가져오기③ 실전 사용법