Как подключить Riot API в python - PullRequest
0 голосов
/ 19 июня 2019

Я попытался подключиться к API Riot для доступа к информации о призывателе. Я написал 3 файла:

  1. «RiotConsts»: файл, устанавливающий некоторые константы, такие как «URL», «api_version», «region»
  2. «RiotAPI»: основные функции
  3. "riot_main": для вызова информации, которую я хочу.

Я получаю сообщение об ошибке: «Объект RiotAPI не имеет атрибута _request».

class RiotAPI(object):
    def __init__(self,api_key,region=Consts.REGIONS['europe_nordic_and_east']):
        self.api_key = api_key
        self.region = region

    def request(self, api_key, params={}):
        args = {'api_key': self.api_key}
        for k,v in params.items():
            if k not in args:
                args[k] = v
        response = requests.get(
            Consts.URL['base'].format(
                proxy = self.region,
                region = self.region,
                url = api_url
                ),
            params=args
            )
        print (response.url)
        return response.json()

    def get_summoner_by_name(self, name):
        api_url = Consts.URL['summoner_by_name'].format(
            version=Consts.API_VERSIONS['summoner'],
            summonerName=name
            )
        return self._request(api_url)

Я ожидаю получить информацию о призывателе, но я получил: У объекта 'RiotAPI' нет атрибута '_request'

1 Ответ

0 голосов
/ 21 июня 2019

Как уже упоминалось в комментарии, ошибка object has no attribute вызвана вызовом неопределенного атрибута (или метода) - в данном случае _request() метода.Итак, предполагая, что остальная часть кода верна, вы можете попробовать этот код:

# class RiotAPI(object):
class RiotAPI:
    def __init__(self,api_key,region=Consts.REGIONS['europe_nordic_and_east']):
        self.api_key = api_key
        self.region = region

    # def request(self, api_key, params={}):
    def request(self, api_url, params={}):
        args = {'api_key': self.api_key}
        for k,v in params.items():
            if k not in args:
                args[k] = v
        response = requests.get(
            Consts.URL['base'].format(
                proxy = self.region,
                region = self.region,
                url = api_url
                ),
            params=args
            )
        print (response.url)
        return response.json()

    def get_summoner_by_name(self, name):
        api_url = Consts.URL['summoner_by_name'].format(
            version=Consts.API_VERSIONS['summoner'],
            summonerName=name
            )
        #return self._request(api_url)
        return self.request(api_url)
...