1
resposta

[Projeto] Desafio: otimizando a paginação

Testando a lógica antes de implementar no método da classe:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Método lista_repositorios atualizado:

    def lista_repositorios (self):
        repos_lista = []

        url = f'{self.api_base_url}/users/{self.usuario}'
        response = requests.get(url, headers = self.headers)
        quantidade_repositorios = response.json()['public_repos']
        numero_paginas = int(round(( quantidade_repositorios / 30),0))

        for numero_pagina in range(1, numero_paginas + 1):
            try:
                url = f'{self.api_base_url}/users/{self.usuario}/repos?page={numero_pagina}'
                response = requests.get(url, headers=self.headers)
                repos_lista.append(response.json())
            except:
                repos_lista.append(None)

        return repos_lista
1 resposta

Oi, Vinicius!

Parabéns por concluir o desafio. É muito bom ver como você estruturou a lógica de paginação de forma dinâmica, utilizando o retorno da API para calcular exatamente quantas requisições o seu código precisa realizar.

A sua resolução demonstra um domínio excelente sobre o uso da biblioteca Requests e a manipulação de dados em formato JSON. Ao buscar primeiro a quantidade_repositorios e calcular o numero_paginas, você transformou um código que poderia ter um limite fixo em uma ferramenta flexível, que se adapta ao perfil de qualquer usuário do GitHub. O uso do laço for com o range dinâmico é a maneira mais limpa de garantir que todos os dados sejam coletados sem desperdiçar recursos.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!