Estoy tratando de crear un punto final de la API de fastapi que se base en los parámetros HTTP GET, los tenga documentados y use las capacidades de validación de fastapi. Considere el siguiente ejemplo mínimo:
import fastapi app = fastapi.FastAPI( ) @app.get("/endpoint") def example_endpoint( par1: int = fastapi.Query( None, description="example documentation1", ), par2: int = fastapi.Query( None, description="example documentation2", ), ): return {"test": par1 + par2}Esto tiene el soporte de documentación y funciona sobre los parámetros HTTP GET, pero no los valida: http://localhost:8000/endpoint?par1=2&par2=3 funciona bien, pero http://localhost:8000/endpoint falla con un error interno del servidor, en lugar de notificar al usuario que se esperaba un parámetro. ¿Hay alguna manera de hacer que se requieran par1 y par2 y mantener la función de documentación?
Puede usar Ellipsis , si no lo había visto ... antes: es un valor único especial que hace que la consulta sea obligatoria
from fastapi import Query Query(...,description="example documentation1")Entonces, en su caso, la respuesta a continuación puede hacer el trabajo
@app.get("/endpoint") def example_endpoint( par1: int = fastapi.Query(..., description="example documentation1",), par2: int = fastapi.Query(..., description="example documentation2",), ): if par1 and par2: return {"test": par1 + par2} raise ValueError("Missing query parameters") También puedes usar example=1
Query(..., description="example documentation2", example=1)