Files
fastapi/docs/zh/docs/tutorial/cookie-param-models.md
Sebastián Ramírez d026f79b82 🌐 Update translations for zh (update-outdated) (#15755)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yurii Motov <109919500+YuriiMotov@users.noreply.github.com>
2026-06-15 22:12:19 +02:00

3.0 KiB
Raw Blame History

Cookie 参数模型

如果你有一组相关的 cookie,你可以创建一个 Pydantic 模型来声明它们。🍪

这将允许你在多个地方能够重用模型,并且可以一次性声明所有参数的验证方式和元数据。😎

/// note | 注意

自 FastAPI 版本 0.115.0 起支持此功能。🤓

///

/// tip | 提示

此技术同样适用于 QueryCookieHeader😎

///

带有 Pydantic 模型的 Cookie

Pydantic 模型中声明所需的 cookie 参数,然后将参数声明为 Cookie

{* ../../docs_src/cookie_param_models/tutorial001_an_py310.py hl[9:12,16] *}

FastAPI 将从请求中接收到的 cookie提取每个字段的数据,并提供你定义的 Pydantic 模型。

查看文档

你可以在文档 UI 的 /docs 中查看定义的 cookie

/// note | 注意

请记住,由于浏览器以特殊方式处理 cookie,并在后台进行操作,因此它们不会轻易允许 JavaScript 访问这些 cookie。

如果你访问 /docsAPI 文档 UI,你将能够查看你路径操作的 cookie 文档

但是即使你填写数据并点击“执行”,由于文档界面使用 JavaScriptcookie 将不会被发送。而你会看到一条错误消息,就好像你没有输入任何值一样。

///

禁止额外的 Cookie

在某些特殊使用情况下(可能并不常见),你可能希望限制你想要接收的 cookie。

你的 API 现在可以控制自己的 cookie 同意🤪🍪

你可以使用 Pydantic 的模型配置来禁止( forbid )任何额外( extra )字段:

{* ../../docs_src/cookie_param_models/tutorial002_an_py310.py hl[10] *}

如果客户端尝试发送一些额外的 cookie,他们将收到错误响应。

可怜的 cookie 通知条,费尽心思为了获得你的同意,却被API 拒绝了🍪

例如,如果客户端尝试发送一个值为 good-list-pleasesanta_tracker cookie客户端将收到一个错误响应,告知他们 santa_tracker cookie 是不允许的

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

总结

你可以使用 Pydantic 模型FastAPI 中声明 cookie😎