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 Cookies

🌐 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 decookies que están relacionadas, puedes crear unmodelo de Pydantic para declararlas. 🍪

Esto te permitiráreutilizar el modelo enmúltiples lugares y también declarar validaciones y metadatos para todos los parámetros a la vez. 😎

Nota

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

Consejo

Esta misma técnica se aplica aQuery,Cookie, yHeader. 😎

Cookies con un Modelo de Pydantic

Declara los parámetros decookie que necesites en unmodelo de Pydantic, y luego declara el parámetro comoCookie:

fromtypingimportAnnotatedfromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Annotated[Cookies,Cookie()]):returncookies
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Cookies=Cookie()):returncookies

FastAPIextraerá los datos paracada campo de lascookies recibidas en el request y te entregará el modelo de Pydantic que definiste.

Revisa la Documentación

Puedes ver las cookies definidas en la UI de la documentación en/docs:

Información

Ten en cuenta que, como losnavegadores manejan las cookies de maneras especiales y detrás de escenas,no permiten fácilmente queJavaScript las toque.

Si vas a laUI de la documentación de la API en/docs podrás ver ladocumentación de las cookies para tuspath operations.

Pero incluso sirellenas los datos y haces clic en "Execute", como la UI de la documentación funciona conJavaScript, las cookies no serán enviadas y verás unmensaje de error como si no hubieras escrito ningún valor.

Prohibir Cookies Extra

En algunos casos de uso especiales (probablemente no muy comunes), podrías quererrestringir las cookies que deseas recibir.

Tu API ahora tiene el poder de controlar su propioconsentimiento de cookies. 🤪🍪

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

fromtypingimportAnnotatedfromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):model_config={"extra":"forbid"}session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Annotated[Cookies,Cookie()]):returncookies
🤓 Other versions and variants

Tip

Prefer to use theAnnotated version if possible.

fromfastapiimportCookie,FastAPIfrompydanticimportBaseModelapp=FastAPI()classCookies(BaseModel):model_config={"extra":"forbid"}session_id:strfatebook_tracker:str|None=Nonegoogall_tracker:str|None=None@app.get("/items/")asyncdefread_items(cookies:Cookies=Cookie()):returncookies

Si un cliente intenta enviar algunascookies extra, recibirán un response deerror.

Pobres banners de cookies con todo su esfuerzo para obtener tu consentimiento para que laAPI lo rechace. 🍪

Por ejemplo, si el cliente intenta enviar una cookiesanta_tracker con un valor degood-list-please, el cliente recibirá un response deerror que le informa que lasanta_trackercookie no está permitida:

{"detail":[{"type":"extra_forbidden","loc":["cookie","santa_tracker"],"msg":"Extra inputs are not permitted","input":"good-list-please",}]}

Resumen

Puedes usarmodelos de Pydantic para declararcookies enFastAPI. 😎


[8]ページ先頭

©2009-2026 Movatter.jp