1
resposta

Na aula quando eles executam o código a resposta diverge da minha.

import requests

link = 'https://guilhermeonrails.github.io/api-restaurantes/restaurantes.json'
response = requests.get(link)
print(response)

if response.status_code == 200:
dados_json = response.json()
dados_restaurante = {}
for item in dados_json:
nome_restaurante = item['Company']
if nome_restaurante not in dados_restaurante:
dados_restaurante[nome_restaurante] = []

        dados_restaurante[nome_restaurante].append({
            'item': item['Item'],
            'price': item['price'],
            'description': item['description']
        })

else:
print(f'O erro foi {response.status_code}')

print(dados_restaurante['McDonald’s'])

resposta:

(venv) PS C:\Users\Gustavo\Documents\Projetos\OSaborExpress-Venv> python app.py
<Response [200]>
[{'item': 'Hamburger', 'price': 32.42, 'description': 'Uma explosão de sabores em cada mordida.'}]

1 resposta

Olá, Gustavo! Tudo bem?

É perfeitamente normal encontrar divergências nos resultados ao consumir APIs, especialmente em cursos de tecnologia onde os dados podem ser atualizados ou o ambiente de execução pode variar.

Analisando o seu código e o resultado apresentado, aqui estão os pontos principais para você entender o que está acontecendo:

  • Comportamento do Dicionário: O seu código está agrupando corretamente os itens por restaurante. Ao fazer dados_restaurante[nome_restaurante].append(...), você está criando uma lista de dicionários para cada marca.
  • A Divergência nos Dados: Se na aula aparecem mais itens para o McDonald’s e no seu apareceu apenas o "Hamburger", isso geralmente ocorre porque a API (o link do GitHub Pages) pode ter sido alterada pelo instrutor para testes ou você pode estar visualizando uma versão do arquivo JSON diferente da que foi gravada no vídeo.
  • Dica de Aspas: Notei que você buscou por McDonald’s (com apóstrofo curvo ). Certifique-se de que no JSON o nome está exatamente com esse caractere ou com a aspa simples padrão ('), pois qualquer diferença fará o Python não encontrar a chave ou retornar um subconjunto diferente de dados.
  • Estrutura de Filtragem: O seu if nome_restaurante not in dados_restaurante está funcionando perfeitamente para inicializar a lista, o que é uma excelente prática de manipulação de dados em Python.

O fato de você ter recebido o <Response [200]> indica que sua conexão com a API foi um sucesso. Se o código rodou sem erros e trouxe o dado, sua lógica de Orientação a Objetos e Consumo de API está correta!

Espero que possa ter lhe ajudado!