Movatterモバイル変換


[0]ホーム

URL:


Saltar a contenido
Join theFastAPI Cloud waiting list 🚀
Follow@fastapi onX (Twitter) to stay updated
FollowFastAPI onLinkedIn to stay updated
Subscribe to theFastAPI and friends newsletter 🎉
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor

Modelos de Parámetros Query

🌐 Traducción por IA y humanos

Esta traducción fue hecha por IA guiada por humanos. 🤝

Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖

Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.

Versión en inglés

Si tienes un grupo deparámetros query que están relacionados, puedes crear unmodelo de Pydantic para declararlos.

Esto te permitiríareutilizar el modelo enmúltiples lugares y también declarar validaciones y metadatos para todos los parámetros de una vez. 😎

Nota

Esto es compatible desde la versión0.115.0 de FastAPI. 🤓

Parámetros Query con un Modelo Pydantic

Declara losparámetros query que necesitas en unmodelo de Pydantic, y luego declara el parámetro comoQuery:

fromtypingimportAnnotated,LiteralfromfastapiimportFastAPI,QueryfrompydanticimportBaseModel,Fieldapp=FastAPI()classFilterParams(BaseModel):limit:int=Field(100,gt=0,le=100)offset:int=Field(0,ge=0)order_by:Literal["created_at","updated_at"]="created_at"tags:list[str]=[]@app.get("/items/")asyncdefread_items(filter_query:Annotated[FilterParams,Query()]):returnfilter_query
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromtypingimportLiteralfromfastapiimportFastAPI,QueryfrompydanticimportBaseModel,Fieldapp=FastAPI()classFilterParams(BaseModel):limit:int=Field(100,gt=0,le=100)offset:int=Field(0,ge=0)order_by:Literal["created_at","updated_at"]="created_at"tags:list[str]=[]@app.get("/items/")asyncdefread_items(filter_query:FilterParams=Query()):returnfilter_query

FastAPIextraerá los datos paracada campo de losparámetros query en el request y te proporcionará el modelo de Pydantic que definiste.

Revisa la Documentación

Puedes ver los parámetros query en la UI de documentación en/docs:

Prohibir Parámetros Query Extras

En algunos casos de uso especiales (probablemente no muy comunes), podrías quererrestringir los parámetros query que deseas recibir.

Puedes usar la configuración del modelo de Pydantic paraforbid cualquier campoextra:

fromtypingimportAnnotated,LiteralfromfastapiimportFastAPI,QueryfrompydanticimportBaseModel,Fieldapp=FastAPI()classFilterParams(BaseModel):model_config={"extra":"forbid"}limit:int=Field(100,gt=0,le=100)offset:int=Field(0,ge=0)order_by:Literal["created_at","updated_at"]="created_at"tags:list[str]=[]@app.get("/items/")asyncdefread_items(filter_query:Annotated[FilterParams,Query()]):returnfilter_query
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromtypingimportLiteralfromfastapiimportFastAPI,QueryfrompydanticimportBaseModel,Fieldapp=FastAPI()classFilterParams(BaseModel):model_config={"extra":"forbid"}limit:int=Field(100,gt=0,le=100)offset:int=Field(0,ge=0)order_by:Literal["created_at","updated_at"]="created_at"tags:list[str]=[]@app.get("/items/")asyncdefread_items(filter_query:FilterParams=Query()):returnfilter_query

Si un cliente intenta enviar algunos datosextra en losparámetros query, recibirán un response deerror.

Por ejemplo, si el cliente intenta enviar un parámetro querytool con un valor deplumbus, como:

https://example.com/items/?limit=10&tool=plumbus

Recibirán un response deerror que les indica que el parámetro querytool no está permitido:

{"detail":[{"type":"extra_forbidden","loc":["query","tool"],"msg":"Extra inputs are not permitted","input":"plumbus"}]}

Resumen

Puedes usarmodelos de Pydantic para declararparámetros query enFastAPI. 😎

Consejo

Alerta de spoiler: también puedes usar modelos de Pydantic para declarar cookies y headers, pero leerás sobre eso más adelante en el tutorial. 🤫


[8]ページ先頭

©2009-2026 Movatter.jp