1
resposta

[Bug] Internal Server Error

O meu código está de acordo com o feito no curso, porém quando vou testa-lo no navegador aparece "internal server error", tentei diversas coisas e não consegui fazer funcionar, aqui está o código:

from fastapi import FastAPI, Query
import requests

app = FastAPI()

@app.get('/api/hello')
def hello_world():
    '''
    Endpoint que exibe uma mensagem incrível do mundo da programação!
    '''
    return {'Hallo':'World'}

@app.get('/api/restaurantes/')
def get_restaurantes(restaurante: str = Query(None)):
    '''
    Endpoint para ver oc cardápios dos restaurantes
    '''
    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'],
                    'description': item['description']
                })

        return {'Restaurante':restaurante,'Cardapio':dados_restaurante}
    
    else:
        return {'Erro':f'{response.status_code} - {response.text}'}

Print do navegador testando o server e dando "internal server error"

Print do terminal para fazer o unicorn funcionar

1 resposta

Olá, Vítor! Tudo bem?

Testei o código que você compartilhou e ao acessar a rota "api/restaurantes/" ela funcionou corretamente, sem informar o erro "Internal Server Error" como na imagem que você compartilhou.

Normalmente, o erro que apareceu para você representa algum problema na estrutura do seu código, como eu testei e não ocorreu o mesmo, imagino que você tenha feito alterações e não tenha salvo elas, verifique esse ponto.

Além disso, recomendo que visualize o terminal após tentar acessar a rota, pois, ele pode dar mais informações sobre o que está acontecendo.

Fico no aguardo!