Estou fazendo o código igual ao da aula, porém sempre que tento chamar o endpoint /api/restaurantes, o retorno da página é "null". Um ponto que reparei, é que no terminal não está sendo informado o "OK" das rotas
Código do arquivo main.py:
#Criando um endpoint
#importando o fastapi
from fastapi import FastAPI, Query
import requests
#criando um objeto do FastAPI
app = FastAPI()
#decorator indicando que queremos disponibilizar um recurso através do api.get
@app.get('/api/hello') #definindo o caminho do endpoint
def hello_world():
return {'Hello':'World'}
#criando um endpoint para listar o cardápio dos restaurantes
@app.get('/api/restaurantes/')
def get_restaurantes(restaurante: str = Query(None)):
url = "https://guilhermeonrails.github.io/api-restaurantes/restaurantes.json" #atribuindo a URL do Json à uma variável
response = requests.get(url) #através do request.get() solicitamos o recurso. Neste exemplo, estamos atribuindo a chamada do Json à uma variável "response"
# criando uma condicional para que o conteúdo do json seja impresso, caso a resposta HTTP seja 200
if response.status_code == 200:
dados_json = response.json() # a função .json() retorna um conteúdo de uma resposta, codificado no formato Json
if restaurante is None:
return {'Dados':dados_json}
dados_restaurante = []
for item in dados_json: #criando um "for" para poder particionar o conteúdo do Json
if item['Company'] == restaurante:
dados_restaurante.append({ #nesta lista será incluído um dicionário com as informações de cada item, separadamente
"item":item["Item"],
"price":item["price"],
"description":item["description"]
})
return {'Restaurante':restaurante, 'Cardápio': dados_restaurante}
else:
return {f'O erro foi {response.status_code} - {response.text}'}
Terminal:
(venv) PS H:\Estudos Alura\Python\venv-oo-sabor-express> uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['H:\Estudos Alura\Python\venv-oo-sabor-express']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [18428] using StatReload
INFO: Started server process [11636]
INFO: Waiting for application startup.
INFO: Application startup complete.
Retorno na página:
Obs.: Quando uso o hello world, funciona normalmente