by Anonymous » 02 Feb 2025, 17:37
Aus irgendeinem Grund handelt
Code: Select all
from typing import Annotated
from pydantic import BaseModel, StringConstraints, EmailStr
class RouteBody(BaseModel):
email: Annotated[EmailStr, StringConstraints(
max_length = 255
)]
password: Annotated[str, StringConstraints(
max_length = 60
)]
< /code>
Und dies erzwingt, dass der Körper der Route korrekt ist.from fastapi import UploadFile, File
@some_api_router.post("/some-route")
async def handleRoute(routeBody: RouteBody = Form(), profilePicture: UploadFile = File(...)):
return {"msg": "Route"}
Und ich teste es mit Swaggerui -Dokumenten:
< /p>
Ich erhalte den folgenden Fehler: < /p>
Fehler [{'Typ ':' model_attributes_type ',' loc ': (' body ',' RouteBody '),' msg ':' Eingabe sollte ein gültiges Wörterbuch oder ein gültiges Objekt sein, um Felder aus ',' Eingabe 'zu extrahieren:' {"E -Mail:"
[email protected] "," password ":" string "} '}] < /p>
< /blockquote>
- getestet es auf einem separaten Route ohne den "Route Body" und es hat perfekt funktioniert. Ich dachte, das war wichtig ... Vielleicht tat es es?)
- Anstatt einen pydantischen Modelltyp für den RouteBody zu verwenden, habe ich mich für einzelne Parameter entschieden, um ihn funktional zu machen. Dies ist jedoch keine ideale Lösung, da alle Parameter aufgelistet werden müssen, wenn Sie viele davon haben.
Aus irgendeinem Grund handelt[code]from typing import Annotated
from pydantic import BaseModel, StringConstraints, EmailStr
class RouteBody(BaseModel):
email: Annotated[EmailStr, StringConstraints(
max_length = 255
)]
password: Annotated[str, StringConstraints(
max_length = 60
)]
< /code>
Und dies erzwingt, dass der Körper der Route korrekt ist.from fastapi import UploadFile, File
@some_api_router.post("/some-route")
async def handleRoute(routeBody: RouteBody = Form(), profilePicture: UploadFile = File(...)):
return {"msg": "Route"}
[/code]
Und ich teste es mit Swaggerui -Dokumenten:
< /p>
Ich erhalte den folgenden Fehler: < /p>
Fehler [{'Typ ':' model_attributes_type ',' loc ': (' body ',' RouteBody '),' msg ':' Eingabe sollte ein gültiges Wörterbuch oder ein gültiges Objekt sein, um Felder aus ',' Eingabe 'zu extrahieren:' {"E -Mail:"
[email protected] "," password ":" string "} '}] < /p>
< /blockquote>
[list]
[*] getestet es auf einem separaten Route ohne den "Route Body" und es hat perfekt funktioniert. Ich dachte, das war wichtig ... Vielleicht tat es es?)
[*] Anstatt einen pydantischen Modelltyp für den RouteBody zu verwenden, habe ich mich für einzelne Parameter entschieden, um ihn funktional zu machen. Dies ist jedoch keine ideale Lösung, da alle Parameter aufgelistet werden müssen, wenn Sie viele davon haben.
[/list]