es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo depurar el error de generación de OpenAPI en FastAPI.

Pasé algún tiempo revisando este error pero no tuve éxito.

Archivo “C:\Users\ebara.conda\envs\asci\lib\site-packages\fastapi\openapi\utils.py”, línea 388, en get_openapi ag modelo_name_map=model_name_map

Archivo “C:\Users\ebara.conda\envs\asci\lib\site-packages\fastapi\utils.py”, línea 28, en get_model_definitions nombre_de_modelo = model_name_map[model]

KeyError:

El problema es que estoy intentando construir un proyecto con autenticación de usuario desde el formulario OpenAPI para crear nuevos usuarios en la base de datos.

He utilizado la parte del backend de este proyecto de plantilla: https://github.com/tiangolo/full-stack-fastapi-postgresql

Todo funciona excepto la autenticación, como se muestra aquí: enlace.

@router.post(“/login/access-token”, response_model=schemas.Token)
def login_access_token(
db: Session = Depends(deps.get_db), form_data: OAuth2PasswordRequestForm = Depends()) -> Any:

Cuando agrego esta parte form_data: OAuth2PasswordRequestForm = Depends() y voy a la página /docs, aparece este error (Error al cargar la definición de API. Error de obtención. Error interno del servidor /openapi.json).

imagen de error.

El servidor en sí se ejecuta en modo normal, pero no puede cargar la API abierta. Si elimino la parte mencionada form_data: OAuth2PasswordRequestForm = Depends(), entonces todo funciona sin problemas, pero sin autorización. Intenté depurar, pero no tuve éxito. Creo que puede estar relacionado con un gráfico de dependencias o algunos problemas de inicio, pero no tengo idea de cómo rastrearlo.

Aquí tienes un ejemplo completo que reproducirá el error. El enlace señala el código que causa el problema. Si comentas las líneas 18-39, los documentos se abrirán sin ningún problema: https://github.com/BEEugene/fastapierror/demo/blob/master/fastapiservice/api/apiv1/endpoints/login.py

¿Alguna idea de cómo depurar o por qué ocurre este error?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error que estás enfrentando parece estar relacionado con una clave faltante en tu diccionario model_name_map. La clave que está faltando es <class 'pydantic.main.body_login_access_token_api_v1_login_access_token_post'="">. Esto sugiere que el diccionario model_name_map no tiene una entrada para esta clave, lo que causa que se genere un KeyError.

    Una posible solución a este error es agregar una entrada para esta clave en tu diccionario model_name_map. Puedes hacer esto agregando la siguiente línea antes de la declaración return en tu función get_model_definitions:

    model_name_map[Body_login_access_token_api_v1_login_access_token_post] = "Body_login_access_token_api_v1_login_access_token_post"
    

    Esto agregará una entrada para la clave faltante en el diccionario model_name_map y debería evitar que se genere el KeyError.

    Si esta solución no funciona, puede haber otros problemas con tu código que estén causando el error. Se recomienda que intentes depurar tu código más a fondo o que busques ayuda de un desarrollador más experimentado.

Comments are closed.