Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

400
Vistas
¿FastAPI/Pydantic acepta un cuerpo de solicitud de publicación arbitrario?

Quiero crear un punto final FastAPI que solo acepte un cuerpo de solicitud de publicación arbitrario y lo devuelva.

Si envío {"foo" : "bar"} , quiero recuperar {"foo" : "bar"} . Pero también quiero poder enviar {"foo1" : "bar1", "foo2" : "bar2"} y recuperarlo.

Lo intenté:

 from fastapi import FastAPI app = FastAPI() app.post("/") async def handle(request: BaseModel): return request

Pero eso devuelve un diccionario vacío, no importa lo que le envíe.

¿Algunas ideas?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede usar la sugerencia de tipo Dict[Any, Any] para decirle a FastAPI que espera cualquier JSON válido:

 from typing import Any, Dict from fastapi import FastAPI app = FastAPI() @app.post("/") async def handle(request: Dict[Any, Any]): return request
over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta aceptada funciona siempre que la entrada esté envuelta en un diccionario. Es decir: comenzó con un { y termina con un } . Sin embargo, eso no cubre todas las entradas JSON válidas. Por ejemplo, las siguientes entradas JSON válidas fallarían:

  • true / false
  • 1.2
  • null
  • "text"
  • [1,2,3]

Para que el punto final acepte una entrada JSON verdaderamente genérica, lo siguiente funcionaría:

 from typing import Any, Dict, List, Union from fastapi import FastAPI app = FastAPI() @app.post("/") async def handle(request: Union[List,Dict,Any]=None): return request

El solo uso de Any no funcionó por alguna razón. Cuando lo usé, FastApi esperaba la entrada de los argumentos de la consulta, no del cuerpo de la solicitud.

=None hace que acepte null y también un cuerpo vacío. Puede dejar esa parte desactivada y luego se requerirá que el cuerpo de la solicitud no esté vacío/nulo.

Si está utilizando Python3.10, puede deshacerse de la Union y escribir la definición como:

 async def handle(request: List | Dict | Any = None):
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda