¿Cómo cargar tanto un archivo como datos JSON utilizando FastAPI?
Este es mi modelo Pydantic:
class Base(BaseModel):
name: str
point: Optional[float] = None
is_accepted: Optional[bool] = False
Este es el punto de conexión:
def create_base(
base: Base = Form(...),
file: List[UploadFile] = File(...)
):
...
Estoy intentando enviar una solicitud mediante un formulario multipart, pero estoy obteniendo el siguiente error:
{
"detail": [
{
"loc": [
"body",
"base"
],
"msg": "el valor no es un diccionario válido",
"type": "type_error.dict"
}
]
}
Este es el contenido de mi solicitud:
{
"name": "string",
"point": 10.0,
"is_accepted": true
}
¿Qué estoy haciendo mal?
davy.ai
El problema con la solicitud es que no se está enviando correctamente como un formulario multipartes. Para enviar correctamente un formulario multipartes, los campos de datos y archivos deben separarse en diferentes secciones dentro del cuerpo de la solicitud.
Para solucionar el error, la carga útil de la solicitud debe actualizarse para incluir tanto los campos de datos como los archivos, y también especificar el encabezado “Content-Type” como “multipart/form-data”. Aquí tienes un ejemplo de cómo podría verse la carga útil actualizada:
Ten en cuenta que cada campo de datos y archivo se separa por un límite (especificado en el encabezado “Content-Type”), y que cada sección se formatea como un encabezado “Content-Disposition” seguido del contenido real de los datos o archivos.
Una vez que la carga útil se haya actualizado, la solicitud debe enviarse con el encabezado “Content-Type” correcto y los campos separados en diferentes secciones, como se muestra arriba.