1
resposta

Erro persiste, não aparece a lsita dos cardapios, nada, (erro 422 validation error)

Não consigo acessar os cardápios. Segue o código:

from fastapi import FastAPI, Query
import requests
app = FastAPI()

@app.get('/api/hello')
def hello_world():
    return {'Hello':'World'}

@app.get('/api/restaurantes/')
def get_restaurantes(restaurante: str = Query(None)):

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

    if response.status_code == 200:
        dados_json = response.json()
        if restaurante is None:
            return{'Dados': dados_json}

        dados_restaurante = []
        for item in dados_json:
            if item['Company'] == restaurante :
                dados_restaurante.append({
                "item":item['Item'],
                "price": item['price'],
                "descricao": item['description']
                })   
        return{'Restaurante': restaurante, 'Cardapio':dados_restaurante}    
    else:
        return {'Erro':f'{response.status_code} - {response.text}'}

Eis o que aparece no navegador:

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

Usando o docs:

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAlguém ajuda?

1 resposta

Olá, Jorge,Espero que esteja bem!

Seu path está definido como /api/restaurantes/:

@app.get('/api/restaurantes/')

Portanto, a URL também precisa seguir essa estrutura.

O erro aconteceu porque, na URL utilizada, está faltando uma barra (/) entre a porta (8000) e o endpoint. Veja na imagem:

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

Para corrigir, ajuste a URL adicionando a barra após 8000:

http://127.0.0.1:8000/api/restaurantes/?restaurante=KFC