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

715
Vistas
Error "Hubo un error al analizar el cuerpo" al solicitar el punto final en FastAPI

Implementé un punto final en FastAPI y lo estoy probando desde Postman. Pero cada vez que envío una solicitud, aparece este error "Hubo un error al analizar el cuerpo", mientras buscaba el error, encontré una solución en algún lugar que necesito tener instalado python-multipart, este paquete ya está instalado pero todavía estoy enfrentando esto error. El siguiente es mi código:

 @router.put('/user') def update_user(user_data: dict): from crain.uma import update_user user_id = user_data['id'] update_user(user_id, user_data) return {"message": "DONE"}

El punto final, excepto un dictado como este:

 user_data = { "username":"admin", "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5", "email":null, "firstName":"admin", "lastName":"admin", "createdTimestamp":1638268009973 },

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

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

0

en cartero, cambie a datos raw (actualmente está en form-data ).
luego inserte su carga útil deseada:

 { "username":"admin", "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5", "email":null, "firstName":"admin", "lastName":"admin", "createdTimestamp":1638268009973 }

y disparar la solicitud.

Por cierto, cuando dices

El punto final, excepto un dictado como este:

 user_data = { "username":"admin", "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5", "email":null, "firstName":"admin", "lastName":"admin", "createdTimestamp":1638268009973 },

en realidad quiere decir que el punto final espera solo la parte del diccionario, porque user_data es simplemente un nombre de variable en su código python, completamente sin relación con ninguna configuración de solicitud.
la razón por la que lo especifico es porque lo escribiste como una key para los form-data de solicitud del cartero (la imagen que subiste)

over 4 years ago · Santiago Trujillo Denunciar

0

En resumen, su punto final espera datos JSON , pero su cliente envía form-data su lugar. Por lo tanto, al enviar la solicitud, seleccione datos raw en su lugar.

Además, recomendaría encarecidamente utilizar modelos Pydantic para enviar datos JSON, como se describe en la documentación . Así, puedes hacer uso de la validación de datos que ofrece Pydantic. Incluso puede usar el tipo EmailStr para validar las entradas de correo electrónico (requiere que se instale el validador de correo electrónico , como se describe en la documentación ). Ejemplo a continuación:

 from pydantic import BaseModel, EmailStr from datetime import datetime class User(BaseModel): username: str id: str email: EmailStr = None firstName: str lastName: str createdTimestamp: datetime @app.put('/user') def update_user(user_data: User): from crain.uma import update_user user_data = user_data.dict() user_id = user_data['id'] update_user(user_id, user_data) return {"message": "DONE"}

La carga útil de JSON debería verse así:

 { "username":"admin", "id":"2d06aa3b-c25a-4499-948a-86341ac4adc5", "email":null, "firstName":"admin", "lastName":"admin", "createdTimestamp":1638268009973 }
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