跳到内容

Release Notes

Latest Changes

Translations

  • 🔧 为日语添加 LLM 提示文件,从现有翻译生成。PR #14545 作者 @tiangolo

0.126.0

Upgrades

  • ➖ 放弃对 Pydantic v1 的支持,保留对 Pydantic v2 pydantic.v1 的短期临时支持。PR #14575 作者 @tiangolo
    • Pydantic 的最低安装版本现为 pydantic >=2.7.0
    • standard 依赖项现在包括 pydantic-settings >=2.0.0pydantic-extra-types >=2.0.0

Docs

  • 📝 修复 docs_src/python_types/tutorial005_py39.py 中重复的变量。PR #14565 作者 @paras-verma7454

Translations

  • 🔧 为乌克兰语添加 LLM 提示文件,从现有翻译生成。PR #14548 作者 @tiangolo

Internal

  • 🔧 调整 pre-commit 以允许提交 release-notes。PR #14577 作者 @tiangolo
  • ⬆ 使用 prek 作为 pre-commit 的替代方案。PR #14572 作者 @tiangolo
  • 👷 使用 CodSpeed 添加性能测试。PR #14558 作者 @tiangolo

0.125.0

Breaking Changes

  • 🔧 放弃对 Python 3.8 的支持。PR #14563 作者 @tiangolo
    • 这实际上不是一个重大更改,因为没有代码会真正中断。任何 Python 3.8 安装程序都只会拒绝安装最新版本的 FastAPI,并且只会安装 0.124.4。仅将其标记为“重大更改”以使其可见。

Refactors

  • ♻️ 将内部语法升级到 Python 3.9+ 🎉。PR #14564 作者 @tiangolo

Docs

Translations

  • 🌐 更新 pt 的翻译(添加缺失)。PR #14539 作者 @tiangolo
  • 🔧 为法语添加 LLM 提示文件,从现有法语文档生成。PR #14544 作者 @tiangolo
  • 🌐 同步葡萄牙语文档(通过脚本找到的页面)。PR #14554 作者 @YuriiMotov
  • 🌐 同步西班牙语文档(通过脚本找到的过时页面)。PR #14553 作者 @YuriiMotov
  • 🌐 同步德语文档。PR #14519 作者 @nilslindemann
  • 🔥 移除越南语中不活跃/稀疏的翻译。PR #14543 作者 @tiangolo
  • 🔥 移除波斯语中不活跃/稀疏的翻译。PR #14542 作者 @tiangolo
  • 🔥 移除表情符号翻译,以简化新的 LLM 自动翻译设置。PR #14541 作者 @tiangolo
  • 🌐 更新 pt 的翻译(更新过时)。PR #14537 作者 @tiangolo
  • 🌐 更新 es 的翻译(更新过时)。PR #14532 作者 @tiangolo
  • 🌐 更新 es 的翻译(添加缺失)。PR #14533 作者 @tiangolo
  • 🌐 移除已删除文档的翻译。PR #14516 作者 @tiangolo

Internal

  • ⬆ 将 markdown-include-variants 从 0.0.7 升级到 0.0.8。PR #14556 作者 @YuriiMotov
  • 🔧 暂时禁用仍在进行中、正在迁移到新 LLM 设置的翻译。PR #14555 作者 @YuriiMotov
  • 🔧 更新测试工作流程配置,删除注释代码。PR #14540 作者 @tiangolo
  • 👷 配置覆盖率,在主测试中报错,不等待 Smokeshow。PR #14536 作者 @tiangolo
  • 👷 始终运行 Smokeshow,即使测试失败。PR #14538 作者 @tiangolo
  • 👷 使 Pydantic 版本在 CI 中可自定义。PR #14535 作者 @tiangolo
  • 👷 修复 LLM 翻译的 checkout GitHub Action fetch-depth,启用每月 cron。PR #14531 作者 @tiangolo
  • 👷 修复 CI LLM 翻译的 Typer 命令。PR #14530 作者 @tiangolo
  • 👷 更新 LLM 翻译 CI,添加语言矩阵和额外命令,准备按计划运行。PR #14529 作者 @tiangolo
  • 👷 更新 GitHub Actions 工作流程的 github-actions 用户。PR #14528 作者 @tiangolo
  • ➕ 添加翻译的要求。PR #14515 作者 @tiangolo

0.124.4

Fixes

0.124.3

Fixes

  • 🐛 修复带 Body()Annotated 中具有鉴别器的带标记联合的支持。PR #14512 作者 @tiangolo

Refactors

Docs

  • 📝 调整链接格式。PR #14505 作者 @tiangolo
  • 📝 更新有关重新引发验证错误的文档,不要直接包含字符串,以免泄露信息。PR #14487 作者 @tiangolo
  • 🔥 移除外部链接部分。PR #14486 作者 @tiangolo

Translations

Internal

  • 👷 调整覆盖率,使其不会超过 Smokeshow 的最大文件大小限制。PR #14507 作者 @tiangolo
  • ✅ 扩展测试矩阵以包含 Windows 和 MacOS。PR #14171 作者 @svlandeg

0.124.2

Fixes

  • 🐛 修复 if TYPE_CHECKING,未评估的字符串化注解。PR #14485 作者 @tiangolo

0.124.1

Fixes

  • 🐛 修复使用 arbitrary_types_allowed=True 时处理任意类型。PR #14482 作者 @tiangolo

Docs

  • 📝 在“高级用户指南”中为代码示例添加变体。PR #14413 作者 @YuriiMotov
  • 📝 更新项目生成文档中的技术栈。PR #14472 作者 @alejsdev

Internal

  • ✅ 添加 Pydantic v2、dataclasses、UUID 和 __annotations__ 的测试。PR #14477 作者 @tiangolo

0.124.0

Features

Internal

  • ✏️ 修复 scripts/mkdocs_hooks.py 中的拼写错误。PR #14457 作者 @yujiteshima

0.123.10

Fixes

  • 🐛 修复使用具有 __call__ 方法的类(而不是实例)依赖项。PR #14458 作者 @YuriiMotov
  • 🐛 修复 separate_input_output_schemas=Falsecomputed_field。PR #14453 作者 @YuriiMotov

0.123.9

Fixes

  • 🐛 修复 OpenAPI 中 OAuth2 范围的边缘情况、带有范围的父依赖项、没有范围的子依赖项安全方案。PR #14459 作者 @tiangolo

0.123.8

Fixes

  • 🐛 修复 OpenAPI 安全方案 OAuth2 范围声明,对具有不同范围的安全方案进行去重。PR #14455 作者 @tiangolo

0.123.7

Fixes

  • 🐛 修复 Python 3.10 中字符串化注解的评估。PR #11355 作者 @chaen

0.123.6

Fixes

  • 🐛 修复 functools wraps 和 partial 组合,用于路径操作和依赖项中的异步和常规函数及类。PR #14448 作者 @tiangolo

0.123.5

Features

  • ✨ 允许使用 functools.partial() 的 dependables。PR #9753 作者 @lieryan
  • ✨ 支持与前向引用一起使用的包装函数(例如 @functools.wraps())。PR #5077 作者 @lucaswiman
  • ✨ 处理包装的依赖项。PR #9555 作者 @phy1729

Fixes

  • 🐛 修复 Python 3.10 的新联合语法中的可选序列处理。PR #14430 作者 @Viicos

Refactors

  • 🔥 移除不再需要的悬空附加条件。PR #14435 作者 @tiangolo
  • ♻️ 重构内部,将 is_coroutine 检查更新为重用内部支持的变体(解包,检查类)。PR #14434 作者 @tiangolo

Translations

0.123.4

Fixes

  • 🐛 修复使用 separate_input_output_schemas=False 时计算字段的 OpenAPI 模式支持。PR #13207 作者 @vgrafe

Docs

0.123.3

Fixes

  • 🐛 修复 Query\Header\Cookie 参数模型的别名。PR #14360 作者 @YuriiMotov
  • 🐛 修复 Pydantic V2 中序列化序列值时的可选序列处理。PR #14297 作者 @YuriiMotov

0.123.2

Fixes

  • 🐛 修复 FastAPIError 中未格式化的 {type_}。PR #14416 作者 @Just-Helpful
  • 🐛 修复解析额外的非 body 参数列表。PR #14356 作者 @YuriiMotov
  • 🐛 修复解析额外的 Form 参数列表。PR #14303 作者 @YuriiMotov
  • 🐛 修复表单值为空字符串时被解释为缺失(如果默认值为 None)的问题,以兼容 HTML 表单。PR #13537 作者 @MarinPostma

Docs

  • 📝 在 virtual-environments.md 中添加关于在 No module named pip 错误的情况下安装 pip 的提示。PR #14211 作者 @zadevhub
  • 📝 更新 SQL 数据库教程中的主键说明,以避免混淆。PR #14120 作者 @FlaviusRaducu
  • 📝 澄清文档中的估算说明。PR #14070 作者 @SaisakthiM

0.123.1

Fixes

  • 🐛 避免访问不存在的 "$ref" 键以兼容 Pydantic v2 重映射。PR #14361 作者 @svlandeg
  • 🐛 修复对带有 NaNInfinity 值的十进制数进行编码时出现 TypeError。PR #12935 作者 @kentwelcome

Internal

0.123.0

Fixes

  • 🐛 缓存不使用范围且没有子依赖项范围的依赖项。PR #14419 作者 @tiangolo

0.122.1

Fixes

Docs

  • 💅 更新 CSS 以显式使用表情符号字体。PR #14415 作者 @tiangolo

Internal

  • ⬆ 将 markdown-include-variants 从 0.0.5 升级到 0.0.6。PR #14418 作者 @YuriiMotov

0.122.0

Fixes

  • 🐛 在凭证缺失时,在安全类中使用 401 状态码。PR #13786 作者 @YuriiMotov

Internal

  • 🔧 配置 labeler 以排除以 `_` 开头的文件,以便应用 `lang-all` 标签。PR #14213 作者 @YuriiMotov
  • 👷 添加具有本地脚本的 pre-commit 配置以生成永久链接。PR #14398 作者 @tiangolo
  • 💄 使用 Fira Code 字体修复 Windows 文档中 Rich 面板的显示。PR #14387 作者 @tiangolo
  • 👷 添加自定义 pre-commit CI。PR #14397 作者 @tiangolo
  • ⬆ 将 actions/checkout 从 5 升级到 6。PR #14381 作者 @dependabot[bot]
  • 👷 升级 latest-changes GitHub Action 并固定 actions/checkout@v5。PR #14403 作者 @svlandeg
  • 🛠️ 将 add-permalinksadd-permalinks-page 添加到 scripts/docs.py。PR #14033 作者 @YuriiMotov
  • 🔧 升级 Material for MkDocs 并移除 insiders。PR #14375 作者 @tiangolo

0.121.3

Refactors

  • ♻️ 使 Depends()Security() 的结果可哈希化,作为与其他与这些内部部分交互的工具的解决方法。PR #14372 作者 @tiangolo

Upgrades

Docs

0.121.2

Fixes

  • 🐛 修复处理名为 "$ref" 的 JSON Schema 属性。PR #14349 作者 @tiangolo

Docs

  • 📝 添加 EuroPython 演讲和 Sebastián Ramírez 的播客。PR #14260 作者 @clytaemnestra
  • ✏️ 修复文档中的链接并添加缺失的永久链接。PR #14217 作者 @YuriiMotov

Translations

0.121.1

Fixes

  • 🐛 修复顶层(无参数)依赖项的 Depends(func, scope='function')。PR #14301 作者 @luzzodev

Docs

  • 📝 更新关于具有 yield 的高级依赖项的文档,注意 0.121.0 中的更改,添加 scope。PR #14287 作者 @tiangolo

Internal

0.121.0

Features

Internal

0.120.4

Fixes

  • 🐛 修复顶层 app 中添加的 OpenAPI 安全方案。PR #14266 作者 @YuriiMotov

0.120.3

Refactors

  • ♻️ 减少依赖项中的内部循环递归,从 2 个函数互相调用减少到 1 个函数调用自身。PR #14256 作者 @tiangolo
  • ♻️ 重构依赖项的内部实现,简化代码并移除 get_param_sub_dependant。PR #14255 作者 @tiangolo
  • ♻️ 重构依赖项的内部实现,简化数据类的使用。PR #14254 作者 @tiangolo

Docs

0.120.2

Fixes

  • 🐛 修复 0.119.0 版本中引入的嵌套模型模式的分离。PR #14246 作者 @tiangolo

Internal

0.120.1

Upgrades

Internal

  • 🔧 将 licenselicense-files 添加到 pyproject.toml,从 classifiers 中移除 License。PR #14230 作者 @YuriiMotov

0.120.0

本次发布没有重大或破坏性更改。☕️

内部参考文档现在使用 annotated_doc.Doc 而不是 typing_extensions.Doc,这增加了一个新的(非常小的)依赖项 annotated-doc,一个仅用于提供该 Doc 文档实用类的包。

我预计 typing_extensions.Doc 最终会被 typing_extensions 弃用并移除,因此有了新的 annotated-doc 微型包。如果您对此感到好奇,可以在 annotated-doc 的仓库中阅读更多内容。

这个新版本 0.120.0 只包含将该实用类 Doc 迁移到新主包的操作。

Translations

Internal

0.119.1

Fixes

  • 🐛 修复 Python 3.14 和 Pydantic 2.12.1 的内部 Pydantic v1 兼容性(警告)。PR #14186 作者 @svlandeg

Docs

  • 📝 将 starlette.io 替换为 starlette.dev,将 uvicorn.org 替换为 uvicorn.dev。PR #14176 作者 @Kludex

Internal

0.119.0

FastAPI 现在(暂时)支持同一应用程序中的 Pydantic v2 模型和 pydantic.v1 模型,以便任何仍在使用 Pydantic v1 的 FastAPI 应用程序能够更轻松地逐步但快速地迁移到 Pydantic v2

from fastapi import FastAPI
from pydantic import BaseModel as BaseModelV2
from pydantic.v1 import BaseModel


class Item(BaseModel):
    name: str
    description: str | None = None


class ItemV2(BaseModelV2):
    title: str
    summary: str | None = None


app = FastAPI()


@app.post("/items/", response_model=ItemV2)
def create_item(item: Item):
    return {"title": item.name, "summary": item.description}

添加此功能是一项重大工作,主要目标是让仍停留在 Pydantic v1 的少数应用程序能够更轻松地迁移到 Pydantic v2。

因此,对Pydantic v1 的支持现已弃用,并将在不久的将来的某个版本中移除

注意:请记住,Pydantic 团队已经停止支持 Python 3.14 及更高版本的 Pydantic v1。

您可以在文档中阅读更多关于如何从 Pydantic v1 迁移到 Pydantic v2 的信息。

Features

  • ✨ 添加对 from pydantic.v1 import BaseModel 的支持,允许在同一应用程序中混合 Pydantic v1 和 v2 模型。PR #14168 作者 @tiangolo

0.118.3

Upgrades

0.118.2

Fixes

  • 🐛 修复带标记的区分联合未被识别为 body 字段。PR #12942 作者 @frankie567

Internal

0.118.1

Upgrades

Docs

  • 📝 添加外部链接:FastAPI 入门登录。PR #14152 来自 @itssimon

翻译

内部

0.118.0

修复

  • 🐛 修复了对带有 yield 的依赖项或 UploadFileStreamingResponse 的支持,在响应完成后关闭。PR #14099 来自 @tiangolo

在 FastAPI 0.118.0 之前,如果您使用了带有 yield 的依赖项,则退出代码会在路径操作函数返回后,但在发送响应之前运行。

此更改还意味着,如果您返回了 StreamingResponse,那么带有 yield 的依赖项的退出代码将已被运行。

例如,如果您的依赖项中有一个带有 yield 的数据库会话,那么 StreamingResponse 在流式传输数据时将无法使用该会话,因为会话在 yield 之后的退出代码中已被关闭。

此行为在 0.118.0 版本中已恢复,以使 yield 之后的退出代码在响应发送后执行。

您可以阅读文档中的更多内容:高级依赖项 - 带有 yieldHTTPExceptionexcept 和 Background Tasks 的依赖项。包括如果您想在响应返回给客户端之前更早地关闭数据库会话,您可以做什么。

文档

  • 📝 更新 tutorial/security/oauth2-jwt/ 以使用 pwdlib 和 Argon2 替代 passlib。PR #13917 来自 @Neizvestnyj
  • ✏️ 修复 OAuth2 密码请求表单中的拼写错误。PR #14112 来自 @alv2017
  • 📝 更新贡献指南以安装要求。PR #14095 来自 @alejsdev

翻译

内部

  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #14103 来自 @pre-commit-ci[bot]
  • ♻️ 重构赞助商图片处理。PR #14102 来自 @alejsdev
  • 🐛 修复赞助商显示问题,通过在图片错误时隐藏元素。PR #14097 来自 @alejsdev
  • 🐛 隐藏赞助商徽章,当赞助商图片未显示时。PR #14096 来自 @alejsdev

0.117.1

修复

  • 🐛 修复在 Form 参数之后声明 File 时出现的验证错误。PR #11194 来自 @thomasleveil

0.117.0

新功能

  • ✨ 允许 None 作为无正文响应的返回类型。PR #9425 来自 @hofrob
  • ✨ 允许 OpenAPI schema type 字段使用数组值。PR #13639 来自 @sammasak
  • ✨ 向 FastAPI 添加 OpenAPI external_docs 参数。PR #13713 来自 @cmtoro

修复

  • ⚡️ 修复 Pydantic V1 中响应模型字段的 default_factory。PR #9704 来自 @vvanglro
  • 🐛 修复 Pydantic V1 中模型文档字符串换页符字符处理的不一致性。PR #6039 来自 @MaxwellPayne
  • 🐛 修复 jsonable_encoder 会修改 Pydantic v1 对象的 json_encoders。PR #4972 来自 @aboubacs
  • 🐛 当 API 端点上只使用一个参数时,重新启用 allow_arbitrary_types。PR #13694 来自 @rmawatson
  • 🐛 修复 inspect.getcoroutinefunction() 可能会破坏使用 unittest.mock.patch() 的测试。PR #14022 来自 @secrett2633

重构

  • ♻️ 仅当 None 时在 solve_dependencies 中创建 dependency-cache 字典(如果为空则不重新创建)。PR #13689 来自 @bokshitsky
  • ✅ 为 test_tutorial/test_header_params/test_tutorial003.py 中的重复头启用测试用例。PR #13864 来自 @Amogha-ark
  • 📌 将 httpx 锁定在 >=0.23.0,<1.0.0。PR #14086 来自 @YuriiMotov

文档

  • 📝 在 tutorial/cookie-params.md 中添加关于 Cookies 和 JavaScript 的说明。PR #13510 来自 @Kludex
  • 📝 移除 path-params-numeric-validations.md 中针对语言 enesuk 的过时格式。PR #14059 来自 @svlandeg
  • 📝 修复并改进了英语文档。PR #14048 来自 @nilslindemann

翻译

内部

0.116.2

升级

  • ⬆️ 将 Starlette 支持的版本范围升级到 >=0.40.0,<0.49.0。PR #14077 来自 @musicinmybrain

文档

  • 📝 为“代理后面的 FastAPI - 代理转发的标头”添加文档,使用 --forwarded-allow-ips="*"。PR #14028 来自 @tiangolo
  • 📝 在 docs/tutorial/body.md 中添加关于 dict() 的弃用信息块。PR #13906 来自 @jomkv
  • 📝 在整个文档中将 Twitter 改为 X (Twitter)。PR #13809 来自 @valentinDruzhinin
  • 🐛 防止在 termynal.js 中,在重新启动/快速按钮时滚动到顶部。PR #13714 来自 @Ashish-Pandey62
  • 📝 更新测试事件文档。PR #13259 来自 @z0z0r4
  • 📝 在文档的错误响应中移除过时的 url 字段。PR #13655 来自 @Taoup
  • 📝 在 docs_src/security/tutorial005.py 中将 scope claim 与标准保持一致。PR #11189 来自 @DurandA
  • 📝 更新 TrustedHostMiddleware 文档。PR #11441 来自 @soulee-dev
  • 📝 移除已不存在的 callbackhell.com 网站链接。PR #14006 来自 @dennybiasiolli
  • 📝 在英文文档中为标题添加永久链接。PR #13993 来自 @YuriiMotov
  • 📝 更新 docs/en/docs/advanced/generate-clients.md。PR #13793 来自 @mrlubos
  • 📝 添加新的语言翻译请求的讨论模板。PR #13535 来自 @alejsdev

翻译

内部

0.116.1

升级

  • ⬆️ 将 Starlette 支持的版本范围升级到 >=0.40.0,<0.48.0。PR #13884 来自 @tiangolo

文档

  • 📝 在 docs/en/docs/contributing.md 中添加关于翻译即将发生变化的通知。PR #13886 来自 @YuriiMotov

内部

0.116.0

新功能

  • ✨ 添加了使用 fastapi deploy 部署到 FastAPI Cloud 的支持。PR #13870 来自 @tiangolo

安装 fastapi[standard] 现在包含 fastapi-cloud-cli

这将允许您使用 fastapi deploy 命令部署到 FastAPI Cloud

如果您想安装具有标准依赖项但不包括 fastapi-cloud-clifastapi,您可以改为安装 fastapi[standard-no-fastapi-cloud-cli]

翻译

  • 🌐 添加 docs/docs/advanced/response-directly.md 的俄语翻译。PR #13801 来自 @NavesSapnis
  • 🌐 添加 docs/docs/advanced/additional-status-codes.md 的俄语翻译。PR #13799 来自 @NavesSapnis
  • 🌐 添加 docs/docs/tutorial/body-updates.md 的乌克兰语翻译。PR #13804 来自 @valentinDruzhinin

内部

0.115.14

修复

  • 🐛 修复使用 Form 时对联合类型的支持。PR #13827 来自 @patrick91

文档

  • ✏️ 修复 docs/en/docs/advanced/response-directly.md 中的语法错误。PR #13800 来自 @NavesSapnis
  • 📝 将 Speakeasy URL 更新为 Speakeasy Sandbox。PR #13697 来自 @ndimares

翻译

  • 🌐 添加 docs/docs/tutorial/response-model.md 的乌克兰语翻译。PR #13792 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/security/index.md 的乌克兰语翻译。PR #13805 来自 @valentinDruzhinin
  • ✏️ 修复 docs/docs/tutorial/encoder.md 中的拼写错误。PR #13815 来自 @ruzia
  • ✏️ 修复 docs/docs/tutorial/handling-errors.md 中的拼写错误。PR #13814 来自 @ruzia
  • ✏️ 修复 docs/docs/tutorial/body-fields.md 中的拼写错误。PR #13802 来自 @ruzia
  • 🌐 添加 docs/docs/advanced/index.md 的俄语翻译。PR #13797 来自 @NavesSapnis

内部

0.115.13

修复

  • 🐛 修复 Pydantic V2 中模型描述被换页符 (\f) 字符截断的问题。PR #13698 来自 @YuriiMotov

重构

升级

文档

  • 📝 为 HTTP 中间件示例添加注解。PR #11530 来自 @Kilo59
  • 📝 在 CORS 文档中说明通配符和凭证是互斥的。PR #9829 来自 @dfioravanti
  • ✏️ 修复文档字符串中的拼写错误。PR #13532 来自 @comp64
  • 📝 澄清关于使用 async def 而不使用 await 的指导。PR #13642 来自 @swastikpradhan1999
  • 📝 更新 exclude-parameters-from-openapi 文档链接。PR #13600 来自 @timonrieger
  • 📝 在文档中澄清中间件执行顺序。PR #13699 来自 @YuriiMotov
  • 🍱 更新 Drawio 图表 SVGs,每个图表一个文件,无衬线字体。PR #13706 来自 @tiangolo
  • 📝 更新“帮助 FastAPI”的文档,简化并减少“赞助商”部分。PR #13670 来自 @tiangolo
  • 📝 移除文档中不必要的项目符号。PR #13641 来自 @Adamowoc
  • ✏️ 修复 docs/en/docs/tutorial/handling-errors.md 中的语法错误。PR #13623 来自 @gsheni
  • 📝 修复文档中的拼写错误。PR #13599 来自 @Taoup
  • 📝 修复 liblab 客户端生成文档链接。PR #13571 来自 @EFord36
  • ✏️ 修复演讲信息中的拼写错误。PR #13544 来自 @blueswen
  • 📝 添加外部链接:关于 FastAPI 和可观测性的台湾演讲。PR #13527 来自 @blueswen

翻译

  • 🌐 添加 docs/docs/advanced/response-change-status-code.md 的俄语翻译。PR #13791 来自 @NavesSapnis
  • 🌐 添加 docs/docs/learn/index.md 的波斯语翻译。PR #13518 来自 @Mohammad222PR
  • 🌐 添加 docs/docs/advanced/sub-applications.md 的韩语翻译。PR #4543 来自 @NinaHwang
  • 🌐 添加 docs/docs/tutorial/schema-extra-example.md 的乌克兰语翻译。PR #13769 来自 @valentinDruzhinin
  • ✏️ 移除 docs/docs/python-types.md 中多余的词语。PR #13774 来自 @CharleeWa
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 页面的乌克兰语翻译。PR #13748 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/environment-variables.md 的孟加拉语翻译。PR #13629 来自 @SakibSibly
  • 🌐 添加 docs/docs/tutorial/query-params-str-validations.md 页面的乌克兰语翻译。PR #13546 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 的俄语翻译。PR #13616 来自 @EgorOnishchuk
  • 🌐 添加 docs/docs/tutorial/extra-models.md 的韩语翻译。PR #13063 来自 @timothy-jeong
  • 🌐 添加 docs/docs/tutorial/path-params-numeric-validations.md 页面的乌克兰语翻译。PR #13548 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/middleware.md 页面的乌克兰语翻译。PR #13520 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/background-tasks.md 页面的乌克兰语翻译。PR #13502 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/cors.md 页面的乌克兰语翻译。PR #13519 来自 @valentinDruzhinin
  • 🌐 更新 docs/docs/advanced/events.md 的韩语翻译。PR #13487 来自 @bom1215
  • 🌐 添加 docs/docs/tutorial/handling-errors.md 页面的乌克兰语翻译。PR #13420 来自 @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/request-form-models.md 的俄语翻译。PR #13552 来自 @EgorOnishchuk
  • 📝 修复西班牙语部署文档中的内部锚点链接。PR #13737 来自 @fabianfalon
  • 🌐 更新 docs/docs/virtual-environments.md 的韩语翻译。PR #13630 来自 @sungchan1
  • 🌐 添加 docs/docs/tutorial/header-param-models.md 的俄语翻译。PR #13526 来自 @minaton-ru
  • 🌐 更新 docs/docs/tutorial/index.md 的中文翻译。PR #13374 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/deployment/manually.md 的中文翻译。PR #13324 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/deployment/server-workers.md 的中文翻译。PR #13292 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/tutorial/first-steps.md 的中文翻译。PR #13348 来自 @Zhongheng-Cheng

内部

0.115.12

Fixes

  • 🐛 Fix convert_underscores=False for header Pydantic models. PR #13515 by @tiangolo

Docs

Translations

  • 🌐 Add Ukrainian translation for docs/docs/tutorial/metadata.md page. PR #13459 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/response-status-code.md page. PR #13462 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/cookie-param-models.md page. PR #13460 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/header-param-models.md page. PR #13461 by @valentinDruzhinin
  • 🌐 Add Japanese translation for docs/docs/virtual-environments.md. PR #13304 by @k94-ishi
  • 🌐 Add Korean translation for docs/docs/tutorial/security/oauth2-jwt.md. PR #13333 by @yes0ng
  • 🌐 Add Vietnamese translation for docs/docs/deployment/cloud.md. PR #13407 by @ptt3199

Internal

0.115.11

Fixes

Translations

  • 🌐 Add Russian translation for docs/docs/tutorial/middleware.md. PR #13412 by @alv2017

Internal

0.115.10

Fixes

  • ♻️ Update internal annotation usage for compatibility with Pydantic 2.11. PR #13314 by @Viicos

Upgrades

Translations

  • 🌐 Add Ukrainian translation for docs/docs/tutorial/debugging.md. PR #13370 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/query-params.md. PR #13362 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/path-params.md. PR #13354 by @valentinDruzhinin
  • 🌐 Add Japanese translation for docs/docs/tutorial/cookie-param-models.md. PR #13330 by @k94-ishi
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/body-multiple-params.md. PR #13408 by @valentinDruzhinin
  • 🌐 Add Japanese translation for docs/docs/tutorial/query-param-models.md. PR #13323 by @k94-ishi
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/body-nested-models.md. PR #13409 by @valentinDruzhinin
  • 🌐 Add Vietnamese translation for docs/docs/deployment/versions.md. PR #13406 by @ptt3199
  • 🌐 Add Vietnamese translation for docs/docs/deployment/index.md. PR #13405 by @ptt3199
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/request-forms.md. PR #13383 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/testing.md. PR #13371 by @valentinDruzhinin

0.115.9

Fixes

  • 🐛 Ensure that HTTPDigest only raises an exception when auto_error is True. PR #2939 by @arthurio

Refactors

Docs

  • 🍱 Update sponsors: CodeRabbit logo. PR #13424 by @tiangolo
  • 🩺 Unify the badges across all tutorial translations. PR #13329 by @svlandeg
  • 📝 Fix typos in virtual environments documentation. PR #13396 by @bullet-ant
  • 🐛 Fix issue with Swagger theme change example in the official tutorial. PR #13289 by @Zerohertz
  • 📝 Add more precise description of HTTP status code range in docs. PR #13347 by @DanielYang59
  • 🔥 Remove manual type annotations in JWT tutorial to avoid typing expectations (JWT doesn't provide more types). PR #13378 by @tiangolo
  • 📝 Update docs for Query Params and String Validations, remove obsolete Ellipsis docs (...). PR #13377 by @tiangolo
  • ✏️ Remove duplicate title in docs body-multiple-params. PR #13345 by @DanielYang59
  • 📝 Fix test badge. PR #13313 by @esadek

Translations

  • 🌐 Add Ukrainian translation for docs/docs/tutorial/header-params.md. PR #13381 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/request-files.md. PR #13395 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/request-form-models.md. PR #13384 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/request-forms-and-files.md. PR #13386 by @valentinDruzhinin
  • 🌐 Update Korean translation for docs/docs/help-fastapi.md. PR #13262 by @Zerohertz
  • 🌐 Add Korean translation for docs/docs/advanced/custom-response.md. PR #13265 by @11kkw
  • 🌐 Update Korean translation for docs/docs/tutorial/security/simple-oauth2.md. PR #13335 by @yes0ng
  • 🌐 Add Russian translation for docs/docs/advanced/response-cookies.md. PR #13327 by @Stepakinoyan
  • 🌐 Add Vietnamese translation for docs/docs/tutorial/static-files.md. PR #11291 by @ptt3199
  • 🌐 Add Korean translation for docs/docs/tutorial/dependencies/dependencies-with-yield.md. PR #13257 by @11kkw
  • 🌐 Add Vietnamese translation for docs/docs/virtual-environments.md. PR #13282 by @ptt3199
  • 🌐 Add Ukrainian translation for docs/docs/tutorial/static-files.md. PR #13285 by @valentinDruzhinin
  • 🌐 Add Vietnamese translation for docs/docs/environment-variables.md. PR #13287 by @ptt3199
  • 🌐 Add Vietnamese translation for docs/docs/fastapi-cli.md. PR #13294 by @ptt3199
  • 🌐 Add Ukrainian translation for docs/docs/features.md. PR #13308 by @valentinDruzhinin
  • 🌐 Add Ukrainian translation for docs/docs/learn/index.md. PR #13306 by @valentinDruzhinin
  • 🌐 Update Portuguese Translation for docs/docs/deployment/https.md. PR #13317 by @Joao-Pedro-P-Holanda
  • 🌐 Update Portuguese Translation for docs/docs/index.md. PR #13328 by @ceb10n
  • 🌐 Add Russian translation for docs/docs/advanced/websockets.md. PR #13279 by @Rishat-F

Internal

0.115.8

Fixes

  • 🐛 Fix OAuth2PasswordRequestForm and OAuth2PasswordRequestFormStrict fixed grant_type "password" RegEx. PR #9783 by @skarfie123

Refactors

  • ✅ Simplify tests for body_multiple_params . PR #13237 by @alejsdev
  • ♻️ Move duplicated code portion to a static method in the APIKeyBase super class. PR #3142 by @ShahriyarR
  • ✅ Simplify tests for request_files. PR #13182 by @alejsdev

Docs

  • 📝 Change the word "unwrap" to "unpack" in docs/en/docs/tutorial/extra-models.md. PR #13061 by @timothy-jeong
  • 📝 Update Request Body's tutorial002 to deal with tax=0 case. PR #13230 by @togogh
  • 👥 Update FastAPI People - Experts. PR #13269 by @tiangolo

Translations

  • 🌐 Add Japanese translation for docs/docs/environment-variables.md. PR #13226 by @k94-ishi
  • 🌐 Add Russian translation for docs/docs/advanced/async-tests.md. PR #13227 by @Rishat-F
  • 🌐 Update Russian translation for docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md. PR #13252 by @Rishat-F
  • 🌐 Add Russian translation for docs/docs/tutorial/bigger-applications.md. PR #13154 by @alv2017

Internal

  • ⬆️ Add support for Python 3.13. PR #13274 by @tiangolo
  • ⬆️ Upgrade AnyIO max version for tests, new range: >=3.2.1,<5.0.0. PR #13273 by @tiangolo
  • 🔧 Update Sponsors badges. PR #13271 by @tiangolo
  • ♻️ Fix notify_translations.py empty env var handling for PR label events vs workflow_dispatch. PR #13272 by @tiangolo
  • ♻️ Refactor and move scripts/notify_translations.py, no need for a custom GitHub Action. PR #13270 by @tiangolo
  • 🔨 Update FastAPI People Experts script, refactor and optimize data fetching to handle rate limits. PR #13267 by @tiangolo
  • ⬆ Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4. PR #13251 by @dependabot[bot]

0.115.7

Upgrades

Refactors

Docs

  • ✏️ Update Strawberry integration docs. PR #13155 by @kinuax
  • 🔥 Remove unused Peewee tutorial files. PR #13158 by @alejsdev
  • 📝 Update image in body-nested-model docs. PR #11063 by @untilhamza
  • 📝 Update fastapi-cli UI examples in docs. PR #13107 by @Zhongheng-Cheng
  • 👷 Add new GitHub Action to update contributors, translators, and translation reviewers. PR #13136 by @tiangolo
  • ✏️ Fix typo in docs/en/docs/virtual-environments.md. PR #13124 by @tiangolo
  • ✏️ Fix error in docs/en/docs/contributing.md. PR #12899 by @kingsubin
  • 📝 Minor corrections in docs/en/docs/tutorial/sql-databases.md. PR #13081 by @alv2017
  • 📝 Update includes in docs/docs/tutorial/query-param-models.md. PR #12994 by @alejsdev
  • ✏️ Fix typo in README installation instructions. PR #13011 by @dave-hay
  • 📝 Update docs for fastapi-cli. PR #13031 by @tiangolo

Translations

  • 🌐 Update Portuguese Translation for docs/docs/tutorial/request-forms.md. PR #13216 by @Joao-Pedro-P-Holanda
  • 🌐 Update Portuguese translation for docs/docs/advanced/settings.md. PR #13209 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/security/oauth2-jwt.md 的葡萄牙语翻译。PR #13205 来自 @ceb10n
  • 🌐 添加 docs/docs/index.md 的印度尼西亚语翻译。PR #13191 来自 @gerry-sabar
  • 🌐 添加 docs/docs/tutorial/static-files.md 的印度尼西亚语翻译。PR #13092 来自 @guspan-tanadi
  • 🌐 添加 docs/docs/tutorial/security/get-current-user.md 的葡萄牙语翻译。PR #13188 来自 @ceb10n
  • 🌐 移除 docs/docs/advanced/benchmarks.md 错误的葡萄牙语翻译位置。PR #13187 来自 @ceb10n
  • 🌐 更新葡萄牙语翻译。PR #13156 来自 @nillvitor
  • 🌐 更新 docs/docs/tutorial/security/first-steps.md 的俄语翻译。PR #13159 来自 @Yarous
  • ✏️ 删除 docs/docs/tutorial/path-params-numeric-validations.md 中不必要的退格符。PR #12238 来自 @FakeDocument
  • 🌐 更新 docs/docs/fastapi-cli.md 的中文翻译。PR #13102 来自 @Zhongheng-Cheng
  • 🌐 使用新的 PydanticAI 辅助的 LLM 系统,添加所有文档的西班牙语新翻译。PR #13122 来自 @tiangolo
  • 🌐 使用新的 PydanticAI 辅助的 LLM 系统,更新现有的西班牙语翻译。PR #13118 来自 @tiangolo
  • 🌐 更新 docs/docs/advanced/security/oauth2-scopes.md 的中文翻译。PR #13110 来自 @ChenPu2002
  • 🌐 添加 docs/docs/tutorial/path-params.md 的印度尼西亚语翻译。PR #13086 来自 @gerry-sabar
  • 🌐 添加 docs/docs/tutorial/sql-databases.md 的韩语翻译。PR #13093 来自 @GeumBinLee
  • 🌐 更新 docs/docs/async.md 的中文翻译。PR #13095 来自 @Zhongheng-Cheng
  • 🌐 添加 docs/docs/advanced/openapi-webhooks.md 的中文翻译。PR #13091 来自 @Zhongheng-Cheng
  • 🌐 添加 docs/docs/advanced/async-tests.md 的中文翻译。PR #13074 来自 @Zhongheng-Cheng
  • 🌐 添加 docs/docs/fastapi-cli.md 的乌克兰语翻译。PR #13020 来自 @ykertytsky
  • 🌐 添加 docs/docs/advanced/events.md 的中文翻译。PR #12512 来自 @ZhibangYue
  • 🌐 添加 /docs/docs/tutorial/sql-databases.md 的俄语翻译。PR #13079 来自 @alv2017
  • 🌐 更新 docs/docs/advanced/testing-dependencies.md 的中文翻译。PR #13066 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/tutorial/index.md 的繁体中文翻译。PR #13075 来自 @codingjenny
  • 🌐 添加 docs/docs/tutorial/sql-databases.md 的中文翻译。PR #13051 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/tutorial/query-params-str-validations.md 的中文翻译。PR #12928 来自 @Vincy1230
  • 🌐 添加 docs/docs/tutorial/header-param-models.md 的中文翻译。PR #13040 来自 @Zhongheng-Cheng
  • 🌐 更新 docs/docs/tutorial/path-params.md 的中文翻译。PR #12926 来自 @Vincy1230
  • 🌐 更新 docs/docs/tutorial/first-steps.md 的中文翻译。PR #12923 来自 @Vincy1230
  • 🌐 更新 docs/docs/deployment/docker.md 的俄语翻译。PR #13048 来自 @anklav24
  • 🌐 添加 docs/docs/advanced/generate-clients.md 的葡萄牙语翻译。PR #13030 来自 @vitumenezes
  • 🌐 添加 docs/docs/tutorial/first-steps.md 的印度尼西亚语翻译。PR #13042 来自 @gerry-sabar
  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 的中文翻译。PR #13038 来自 @Zhongheng-Cheng
  • 🌐 添加 docs/docs/tutorial/request-form-models.md 的中文翻译。PR #13045 来自 @Zhongheng-Cheng
  • 🌐 添加 docs/docs/virtual-environments.md 的俄语翻译。PR #13026 来自 @alv2017
  • 🌐 添加 docs/docs/tutorial/testing.md 的韩语翻译。PR #12968 来自 @jts8257
  • 🌐 添加 docs/docs/advanced/async-test.md 的韩语翻译。PR #12918 来自 @icehongssii
  • 🌐 添加 docs/docs/tutorial/security/oauth2-jwt.md 的俄语翻译。PR #10601 来自 @AlertRED
  • 🌐 添加 docs/docs/tutorial/security/simple-oauth2.md 的俄语翻译。PR #10599 来自 @AlertRED
  • 🌐 添加 docs/docs/tutorial/security/get-current-user.md 的俄语翻译。PR #10594 来自 @AlertRED
  • 🌐 添加 docs/docs/features.md 的繁体中文翻译。PR #12441 来自 @codingjenny
  • 🌐 添加 docs/docs/virtual-environments.md 的繁体中文翻译。PR #12791 来自 @Vincy1230
  • 🌐 添加 docs/docs/advanced/templates.md 的韩语翻译。PR #12726 来自 @Heumhub
  • 🌐 添加 docs/docs/fastapi-cli.md 的俄语翻译。PR #13041 来自 @alv2017
  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 的韩语翻译。PR #13000 来自 @hard-coders
  • 🌐 添加 docs/docs/tutorial/header-param-models.md 的韩语翻译。PR #13001 来自 @hard-coders
  • 🌐 添加 docs/docs/tutorial/request-form-models.md 的韩语翻译。PR #13002 来自 @hard-coders
  • 🌐 添加 docs/docs/tutorial/request-forms.md 的韩语翻译。PR #13003 来自 @hard-coders
  • 🌐 添加 docs/docs/resources/index.md 的韩语翻译。PR #13004 来自 @hard-coders
  • 🌐 添加 docs/docs/how-to/configure-swagger-ui.md 的韩语翻译。PR #12898 来自 @nahyunkeem
  • 🌐 添加 docs/docs/advanced/additional-status-codes.md 的韩语翻译。PR #12715 来自 @nahyunkeem
  • 🌐 添加 docs/docs/tutorial/first-steps.md 的繁体中文翻译。PR #12467 来自 @codingjenny

Internal

0.115.6

Fixes

  • 🐛 当在具有 yield 的同步依赖项中引发异常时,保留 traceback。PR #5823 来自 @sombek

Refactors

  • ♻️ 更新测试和内部代码以兼容 Pydantic >=2.10。PR #12971 来自 @tamird

Docs

  • 📝 使用自动化脚本更新文档中的 includes 格式。PR #12950 来自 @tiangolo
  • 📝 更新 docs/docs/advanced/using-request-directly.md 的 includes。PR #12685 来自 @alissadb
  • 📝 更新 docs/docs/how-to/conditional-openapi.md 的 includes。PR #12689 来自 @alissadb

Translations

  • 🌐 添加 docs/docs/async.md 的繁体中文翻译。PR #12990 来自 @ILoveSorasakiHina
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 的繁体中文翻译。PR #12932 来自 @Vincy1230
  • 🌐 添加 docs/docs/advanced/testing-dependencies.md 的韩语翻译。PR #12992 来自 @Limsunoh
  • 🌐 添加 docs/docs/advanced/websockets.md 的韩语翻译。PR #12991 来自 @kwang1215
  • 🌐 添加 docs/docs/tutorial/response-model.md 的葡萄牙语翻译。PR #12933 来自 @AndreBBM
  • 🌐 添加 docs/docs/advanced/middlewares.md 的韩语翻译。PR #12753 来自 @nahyunkeem
  • 🌐 添加 docs/docs/advanced/openapi-webhooks.md 的韩语翻译。PR #12752 来自 @saeye
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 的中文翻译。PR #12931 来自 @Vincy1230
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 的俄语翻译。PR #12445 来自 @gitgernit
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 的韩语翻译。PR #12940 来自 @jts8257
  • 🔥 移除过时的中文翻译 docs/docs/tutorial/sql-databases.md,它引用了仓库中已不存在的文件。PR #12949 来自 @tiangolo

Internal

0.115.5

Refactors

  • ♻️ 更新内部检查以支持 Pydantic 2.10。PR #12914 来自 @tiangolo

Docs

  • 📝 更新 docs/en/docs/tutorial/body.md 中的 includes。PR #12757 来自 @gsheni
  • 📝 更新 docs/en/docs/advanced/testing-dependencies.md 中的 includes。PR #12647 来自 @AyushSinghal1794
  • 📝 更新 docs/en/docs/tutorial/metadata.md 的 includes。PR #12773 来自 @Nimitha-jagadeesha
  • 📝 更新 docs/en/docs/tutorial/dependencies/dependencies-with-yield.md。PR #12045 来自 @xuvjso
  • 📝 更新 docs/en/docs/tutorial/dependencies/global-dependencies.md 的 includes。PR #12653 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/body-updates.md 的 includes。PR #12712 来自 @davioc
  • 📝 从项目生成器中移除 Celery 的提及。PR #12742 来自 @david-caro
  • 📝 更新 docs/en/docs/tutorial/header-param-models.md 中的 includes。PR #12814 来自 @zhaohan-dong
  • 📝 更新 contributing.md 文档,包含关于不翻译此页的说明。PR #12841 来自 @tiangolo
  • 📝 更新 docs/en/docs/tutorial/request-forms.md 中的 includes。PR #12648 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/request-form-models.md 中的 includes。PR #12649 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/security/oauth2-jwt.md 中的 includes。PR #12650 来自 @OCE1960
  • 📝 更新 docs/docs/tutorial/first-steps.md 中的 includes。PR #12754 来自 @MxPy
  • 📝 更新 docs/docs/advanced/wsgi.md 的 includes。PR #12769 来自 @Nimitha-jagadeesha
  • 📝 更新 docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 的 includes。PR #12815 来自 @handabaldeep
  • 📝 更新 docs/en/docs/tutorial/dependencies/classes-as-dependencies.md 的 includes。PR #12813 来自 @handabaldeep
  • ✏️ 修复 docs/en/docs/tutorial/middleware.md 中的错误。PR #12819 来自 @alejsdev
  • 📝 更新 docs/en/docs/tutorial/security/get-current-user.md 中的 includes。PR #12645 来自 @OCE1960
  • 📝 更新 docs/en/docs/tutorial/security/first-steps.md 中的 includes。PR #12643 来自 @OCE1960
  • 📝 更新 docs/docs/advanced/additional-responses.md 中的 includes。PR #12821 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/advanced/generate-clients.md 中的 includes。PR #12642 来自 @AyushSinghal1794
  • 📝 修复了使用新语法时的 admonition 双引号。PR #12835 来自 @tiangolo
  • 📝 更新 docs/docs/advanced/additional-responses.md 中的 includes。PR #12828 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/tutorial/path-params-numeric-validations.md 中的 includes。PR #12825 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/advanced/testing-websockets.md 的 includes。PR #12761 来自 @hamidrasti
  • 📝 更新 docs/en/docs/advanced/using-request-directly.md 的 includes。PR #12760 来自 @hamidrasti
  • 📝 更新 docs/advanced/wsgi.md 的 includes。PR #12758 来自 @hamidrasti
  • 📝 更新 docs/docs/tutorial/middleware.md 中的 includes。PR #12729 来自 @paintdog
  • 📝 更新 docs/en/docs/tutorial/schema-extra-example.md 的 includes。PR #12822 来自 @tiangolo
  • 📝 更新 docs/docs/advanced/additional-responses.md 中的 includes。PR #12634 来自 @fegmorte
  • 📝 更新 docs/docs/advanced/path-operation-advanced-configuration.md 中的 includes。PR #12633 来自 @kantandane
  • 📝 更新 docs/docs/advanced/response-directly.md 中的 includes。PR #12632 来自 @kantandane
  • 📝 更新 docs/en/docs/tutorial/header-params.md 的 includes。PR #12640 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/cookie-param-models.md 中的 includes。PR #12639 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/extra-models.md 的 includes。PR #12638 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/cors.md 的 includes。PR #12637 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/dependencies/sub-dependencies.md 的 includes。PR #12810 来自 @handabaldeep
  • 📝 更新 docs/en/docs/tutorial/body-nested-models.md 中的 includes。PR #12812 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/tutorial/path-operation-configuration.md 中的 includes。PR #12809 来自 @AlexWendland
  • 📝 更新 docs/en/docs/tutorial/request-files.md 中的 includes。PR #12818 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/tutorial/query-param-models.md 的 includes。PR #12817 来自 @handabaldeep
  • 📝 更新 docs/en/docs/tutorial/path-params.md 中的 includes。PR #12811 来自 @AlexWendland
  • 📝 更新 docs/en/docs/tutorial/response-model.md 中的 includes。PR #12621 来自 @kantandane
  • 📝 更新 docs/en/docs/advanced/websockets.md 中的 includes。PR #12606 来自 @vishnuvskvkl
  • 📝 更新 docs/en/docs/tutorial/cookie-params.md 的 includes。PR #12808 来自 @handabaldeep
  • 📝 更新 docs/en/docs/tutorial/middleware.md 中的 includes。PR #12807 来自 @AlexWendland
  • 📝 更新 docs/en/docs/advanced/sub-applications.md 中的 includes。PR #12806 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/advanced/response-headers.md 中的 includes。PR #12805 来自 @zhaohan-dong
  • 📝 更新 docs/docs/tutorial/first-steps.md 中的 includes。PR #12594 来自 @kantandane
  • 📝 更新 docs/en/docs/advanced/response-cookies.md 中的 includes。PR #12804 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/advanced/path-operation-advanced-configuration.md 中的 includes。PR #12802 来自 @zhaohan-dong
  • 📝 更新 docs/en/docs/advanced/response-directly.md 的 includes。PR #12803 来自 @handabaldeep
  • 📝 更新 docs/docs/tutorial/background-tasks.md 中的 includes。PR #12798 来自 @zhaohan-dong
  • 📝 更新 docs/docs/tutorial/body-multiple-params.md 的 includes。PR #12699 来自 @alissadb
  • 📝 更新 docs/docs/tutorial/body-updates.md 中的 includes。PR #12799 来自 @AlexWendland
  • 📝 更新 docs/en/docs/advanced/response-change-status-code.md 的 includes。PR #12801 来自 @handabaldeep
  • 📝 更新 docs/en/docs/advanced/openapi-callbacks.md 的 includes。PR #12800 来自 @handabaldeep
  • 📝 更新 docs/docs/tutorial/body-multiple-params.md 中的 includes。PR #12598 来自 @kantandane
  • 📝 更新 docs/en/docs/tutorial/body-multiple-params.md 中的 includes。PR #12593 来自 @Tashanam-Shahbaz
  • 📝 更新 docs/docs/tutorial/background-tasks.md 的 includes。PR #12736 来自 @bhunao
  • 📝 更新 docs/en/docs/advanced/custom-response.md 的 includes。PR #12797 来自 @handabaldeep
  • 📝 更新 docs/docs/python-types.md 的 includes。PR #12671 来自 @ceb10n
  • 📝 更新 docs/docs/python-types.md 的 includes。PR #12660 来自 @alissadb
  • 📝 更新 docs/docs/advanced/dataclasses.md 的 includes。PR #12658 来自 @alissadb
  • 📝 更新 docs/docs/tutorial/path-params.md 中的 includes。PR #12592 来自 @kantandane
  • 📝 更新 docs/docs/how-to/configure-swagger-ui.md 的 includes。PR #12690 来自 @alissadb
  • 📝 更新 docs/en/docs/advanced/security/oauth2-scopes.md 中的 includes。PR #12572 来自 @krishnamadhavan
  • 📝 更新 docs/en/docs/how-to/conditional-openapi.md 的 includes。PR #12624 来自 @rabinlamadong
  • 📝 更新 docs/en/docs/tutorial/dependencies/index.md 中的 includes。PR #12615 来自 @bharara
  • 📝 更新 docs/en/docs/tutorial/response-status-code.md 中的 includes。PR #12620 来自 @kantandane
  • 📝 更新 docs/en/docs/how-to/custom-docs-ui-assets.md 中的 includes。PR #12623 来自 @rabinlamadong
  • 📝 更新 docs/en/docs/advanced/openapi-webhooks.md 中的 includes。PR #12605 来自 @salmantec
  • 📝 更新 docs/en/docs/advanced/events.md 中的 includes。PR #12604 来自 @salmantec
  • 📝 更新 docs/en/docs/advanced/dataclasses.md 中的 includes。PR #12603 来自 @salmantec
  • 📝 更新 docs/docs/tutorial/cookie-params.md 中的 includes。PR #12602 来自 @antonyare93
  • 📝 更新 docs/docs/tutorial/path-params-numeric-validations.md 中的 includes。PR #12601 来自 @kantandane
  • 📝 更新 docs/docs/tutorial/background-tasks.md 中的 includes。PR #12600 来自 @kantandane
  • 📝 更新 docs/en/docs/tutorial/encoder.md 中的 includes。PR #12597 来自 @tonyjly
  • 📝 更新 docs/en/docs/how-to/custom-docs-ui-assets.md 中的 includes。PR #12557 来自 @philipokiokio
  • 🎨 调整间距。PR #12635 来自 @alejsdev
  • 📝 更新 docs/en/docs/how-to/custom-request-and-route.md 的 includes。PR #12560 来自 @philipokiokio

Translations

  • 🌐 添加 docs/docs/advanced/testing-websockets.md 的韩语翻译。PR #12739 来自 @Limsunoh
  • 🌐 添加 docs/docs/environment-variables.md 的繁体中文翻译。PR #12785 来自 @Vincy1230
  • 🌐 添加 docs/docs/environment-variables.md 的中文翻译。PR #12784 来自 @Vincy1230
  • 🌐 添加 ko/docs/advanced/response-headers.md 的韩语翻译。PR #12740 来自 @kwang1215
  • 🌐 添加 docs/docs/virtual-environments.md 的中文翻译。PR #12790 来自 @Vincy1230
  • 🌐 添加 /docs/docs/environment-variables.md 的韩语翻译。PR #12526 来自 @Tolerblanc
  • 🌐 添加 docs/docs/history-design-future.md 的韩语翻译。PR #12646 来自 @saeye
  • 🌐 添加 docs/docs/advanced/advanced-dependencies.md 的韩语翻译。PR #12675 来自 @kim-sangah
  • 🌐 添加 docs/docs/how-to/conditional-openapi.md 的韩语翻译。PR #12731 来自 @sptcnl
  • 🌐 添加 docs/docs/advanced/using_request_directly.md 的韩语翻译。PR #12738 来自 @kwang1215
  • 🌐 添加 docs/docs/advanced/testing-events.md 的韩语翻译。PR #12741 来自 @9zimin9
  • 🌐 添加 docs/docs/security/index.md 的韩语翻译。PR #12743 来自 @kim-sangah
  • 🌐 添加 docs/docs/advanced/path-operation-advanced-configuration.md 的葡萄牙语翻译。PR #12762 来自 @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/advanced/wsgi.md 的韩语翻译。PR #12659 来自 @Limsunoh
  • 🌐 添加 docs/docs/advanced/websockets.md 的葡萄牙语翻译。PR #12703 来自 @devfernandoa
  • 🌐 添加 docs/docs/tutorial/security/simple-oauth2.md 的葡萄牙语翻译。PR #12520 来自 @LidiaDomingos
  • 🌐 添加 docs/docs/advanced/response-directly.md 的韩语翻译。PR #12674 来自 @9zimin9
  • 🌐 添加 docs/docs/advanced/middleware.md 的葡萄牙语翻译。PR #12704 来自 @devluisrodrigues
  • 🌐 添加 docs/docs/advanced/openapi-callbacks.md 的葡萄牙语翻译。PR #12705 来自 @devfernandoa
  • 🌐 添加 docs/docs/tutorial/request-files.md 的葡萄牙语翻译。PR #12706 来自 @devluisrodrigues
  • 🌐 添加 docs/docs/advanced/custom-response.md 的葡萄牙语翻译。PR #12631 来自 @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/tutorial/metadata.md 的葡萄牙语翻译。PR #12538 来自 @LinkolnR
  • 🌐 添加 docs/docs/tutorial/metadata.md 的韩语翻译。PR #12541 来自 @kwang1215
  • 🌐 添加 docs/docs/advanced/response-cookies.md 的韩语翻译。PR #12546 来自 @kim-sangah
  • 🌐 添加 docs/docs/fastapi-cli.md 的韩语翻译。PR #12515 来自 @dhdld
  • 🌐 添加 docs/docs/advanced/response-change-status-code.md 的韩语翻译。PR #12547 来自 @9zimin9

Internal

0.115.4

重构

  • ♻️ 更新逻辑以导入并检查 python-multipart 以便与新版本兼容。PR #12627@tiangolo 提交。

文档

  • 📝 更新 docs/docs/tutorial/body.md 中的包含项。PR #12596@kantandane 提交。
  • 📝 更新 docs/docs/tutorial/debugging.md 中的包含项。PR #12595@kantandane 提交。
  • 📝 更新 docs/docs/tutorial/query-params-str-validations.md 中的包含项。PR #12591@kantandane 提交。
  • 📝 更新 docs/docs/tutorial/query-params.md 中的包含项。PR #12589@kantandane 提交。
  • 📝 更新 docs/en/tutorial/body-fields.md 中的包含项。PR #12588@lucaromagnoli 提交。
  • 📝 更新 docs/docs/tutorial/response-status-code.md 中的包含项。PR #12585@abejaranoh 提交。
  • 📝 更新 docs/en/docs/tutorial/body.md 中的包含项。PR #12586@lucaromagnoli 提交。
  • 📝 更新 docs/en/docs/advanced/behind-a-proxy.md 中的包含项。PR #12583@imjuanleonard 提交。
  • 📝 更新 docs/docs/tutorial/first-steps.md 的包含项语法。PR #12584@sebkozlo 提交。
  • 📝 更新 docs/en/docs/advanced/middleware.md 中的包含项。PR #12582@montanarograziano 提交。
  • 📝 更新 docs/en/docs/advanced/additional-status-codes.md 中的包含项。PR #12577@krishnamadhavan 提交。
  • 📝 更新 docs/en/docs/advanced/advanced-dependencies.md 中的包含项。PR #12578@krishnamadhavan 提交。
  • 📝 更新 docs/en/docs/advanced/additional-responses.md 中的包含项。PR #12576@krishnamadhavan 提交。
  • 📝 更新 docs/en/docs/tutorial/static-files.md 中的包含项。PR #12575@lucaromagnoli 提交。
  • 📝 更新 docs/en/docs/advanced/async-tests.md 中的包含项。PR #12568@krishnamadhavan 提交。
  • 📝 更新 docs/docs/advanced/behind-a-proxy.md 中的包含项。PR #12563@asmioglou 提交。
  • 📝 更新 docs/docs/advanced/security/http-basic-auth.md 中的包含项。PR #12561@Nimitha-jagadeesha 提交。
  • 📝 更新 docs/en/docs/tutorial/background-tasks.md 中的包含项。PR #12559@FarhanAliRaza 提交。
  • 📝 更新 docs/docs/python-types.md 中的包含项。PR #12558@Ismailtlem 提交。
  • 📝 更新 docs/en/docs/how-to/graphql.md 中的包含项。PR #12564@philipokiokio 提交。
  • 📝 更新 docs/en/docs/how-to/extending-openapi.md 中的包含项。PR #12562@philipokiokio 提交。
  • 📝 更新 docs/en/docs/how-to/configure-swagger-ui.md 的包含项。PR #12556@tiangolo 提交。
  • 📝 更新 docs/en/docs/how-to/separate-openapi-schemas.md 的包含项。PR #12555@tiangolo 提交。
  • 📝 更新 docs/en/docs/advanced/security/http-basic-auth.md 的包含项。PR #12553@tiangolo 提交。
  • 📝 更新 docs/en/docs/tutorial/first-steps.md 中的包含项。PR #12552@tiangolo 提交。
  • 📝 更新 docs/en/docs/python-types.md 中的包含项。PR #12551@tiangolo 提交。
  • 📝 修复 OAuth2 文档中的链接。PR #12550@tiangolo 提交。
  • 📝 添加外部链接:FastAPI do Zero。PR #12533@rennerocha 提交。
  • 📝 修复少量拼写错误。PR #12516@kkirsche 提交。
  • 🌐 修复翻译中的渲染问题。PR #12509@alejsdev 提交。

翻译

  • 📝 更新 docs/docs/advanced/async-tests.md 中的包含项。PR #12567@imjuanleonard 提交。
  • 🌐 添加 docs/docs/tutorial/sql-databases.md 的葡萄牙语翻译。PR #12530@ilacftemp 提交。
  • 🌐 添加 docs/docs/benchmarks.md 的韩语翻译。PR #12540@Limsunoh 提交。
  • 🌐 添加 docs/docs/how-to/separate-openapi-schemas.md 的葡萄牙语翻译。PR #12518@ilacftemp 提交。
  • 🌐 更新 docs/docs/deployment/index.md 的繁体中文翻译。PR #12521@codingjenny 提交。
  • 🌐 更新 docs/docs/deployment/cloud.md 的繁体中文翻译。PR #12522@codingjenny 提交。
  • 🌐 更新 docs/docs/how-to/index.md 的繁体中文翻译。PR #12523@codingjenny 提交。
  • 🌐 更新 docs/docs/tutorial/index.md 的繁体中文翻译。PR #12524@codingjenny 提交。
  • 🌐 添加 docs/docs/how-to/index.md 的繁体中文翻译。PR #12468@codingjenny 提交。
  • 🌐 添加 docs/docs/tutorial/index.md 的繁体中文翻译。PR #12466@codingjenny 提交。
  • 🌐 添加 docs/docs/tutorial/header-param-models.md 的葡萄牙语翻译。PR #12437@Joao-Pedro-P-Holanda 提交。
  • 🌐 添加 docs/docs/how-to/extending-openapi.md 的葡萄牙语翻译。PR #12470@ilacftemp 提交。
  • 🌐 添加 docs/docs/advanced/dataclasses.md 的葡萄牙语翻译。PR #12475@leoscarlato 提交。
  • 🌐 添加 docs/docs/how-to/custom-request-and-route.md 的葡萄牙语翻译。PR #12483@devfernandoa 提交。

内部

0.115.3

升级

  • ⬆️ 将 Starlette 升级到 >=0.40.0,<0.42.0。PR #12469@defnull 提交。

文档

翻译

  • 🌐 添加 docs/docs/fastapi-cli.md 的繁体中文翻译。PR #12444@codingjenny 提交。
  • 🌐 添加 docs/docs/deployment/index.md 的繁体中文翻译。PR #12439@codingjenny 提交。
  • 🌐 添加 docs/docs/how-to/testing-database.md 的葡萄牙语翻译。PR #12472@GuilhermeRameh 提交。
  • 🌐 添加 docs/docs/how-to/custom-docs-ui-assets.md 的葡萄牙语翻译。PR #12473@devluisrodrigues 提交。
  • 🌐 添加 docs/docs/advanced/response-headers.md 的葡萄牙语翻译。PR #12458@leonardopaloschi 提交。
  • 🌐 添加 docs/docs/deployment/cloud.md 的繁体中文翻译。PR #12440@codingjenny 提交。
  • 🌐 更新 docs/docs/python-types.md 的葡萄牙语翻译。PR #12428@ceb10n 提交。
  • 🌐 添加 docs/docs/environment-variables.md 的俄语翻译。PR #12436@wisderfin 提交。
  • 🌐 添加 docs/docs/resources/index.md 的繁体中文翻译。PR #12443@codingjenny 提交。
  • 🌐 添加 docs/docs/about/index.md 的繁体中文翻译。PR #12438@codingjenny 提交。
  • 🌐 添加 docs/docs/tutorial/query-param-models.md 的葡萄牙语翻译。PR #12414@ceb10n 提交。
  • 🌐 删除 docs/docs/deployment.md 的葡萄牙语翻译。PR #12427@ceb10n 提交。
  • 🌐 添加 docs/docs/tutorial/body-updates.md 的葡萄牙语翻译。PR #12381@andersonrocha0 提交。
  • 🌐 添加 docs/docs/advanced/response-cookies.md 的葡萄牙语翻译。PR #12417@Paulofalcao2002 提交。

内部

  • 👷 更新 issue manager 工作流。PR #12457@alejsdev 提交。
  • 🔧 更新团队,加入 YuriiMotov 🚀。PR #12453@tiangolo 提交。
  • 👷 重构 label-approved,将其作为内部脚本而非外部 GitHub Action。PR #12280@tiangolo 提交。
  • 👷 修复 smokeshow,在 CI 中检出文件。PR #12434@tiangolo 提交。
  • 👷 在 CI 中使用 uv。PR #12281@tiangolo 提交。
  • ⬆ 将 httpx 要求从 <0.25.0,>=0.23.0 更新到 >=0.23.0,<0.28.0。PR #11509@dependabot[bot] 提交。

0.115.2

升级

  • ⬆️ 将 Starlette 升级到 >=0.37.2,<0.41.0。PR #12431@tiangolo 提交。

0.115.1

修复

  • 🐛 修复使用 Pydantic v2 时 responses 参数的 openapi 生成。PR #10895@flxdot 提交。
  • 🐛 使用 Pydantic v2 移除 fastapi 中的 Required 遮蔽。PR #12197@pachewise 提交。

重构

  • ♻️ 更新类型注解以改进 python-multipart。PR #12407@tiangolo 提交。

文档

  • ✨ 添加使用 SQLModel 进行 SQL 数据库的新教程。PR #12285@tiangolo 提交。
  • 📝 添加外部链接:如何剖析 FastAPI 异步请求。PR #12389@brouberol 提交。
  • 🔧 从 MkDocs 的 mdx_include Markdown 扩展中删除 base_path。PR #12391@tiangolo 提交。
  • 📝 更新 Swagger UI 配置文档的链接。PR #12264@makisukurisu 提交。
  • 📝 在 docs/project-generation.md 中添加 Playwright 和 Vite 的链接。PR #12274@kayqueGovetri 提交。
  • 📝 修复文档中的少量拼写错误。PR #12213@svlandeg 提交。

翻译

  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 的葡萄牙语翻译。PR #12298@ceb10n 提交。
  • 🌐 添加 docs/docs/how-to/graphql.md 的葡萄牙语翻译。PR #12215@AnandaCampelo 提交。
  • 🌐 添加 docs/docs/advanced/security/oauth2-scopes.md 的葡萄牙语翻译。PR #12263@ceb10n 提交。
  • 🌐 添加 docs/docs/deployment/concepts.md 的葡萄牙语翻译。PR #12219@marcelomarkus 提交。
  • 🌐 添加 docs/docs/how-to/conditional-openapi.md 的葡萄牙语翻译。PR #12221@marcelomarkus 提交。
  • 🌐 添加 docs/docs/advanced/response-directly.md 的葡萄牙语翻译。PR #12266@Joao-Pedro-P-Holanda 提交。
  • 🌐 更新 docs/docs/tutorial/cookie-params.md 的葡萄牙语翻译。PR #12297@ceb10n 提交。
  • 🌐 修复 docs/docs/tutorial/index.md 的韩语翻译。PR #12278@kkotipy 提交。
  • 🌐 更新 docs/docs/advanced/security/http-basic-auth.md 的葡萄牙语翻译。PR #12275@andersonrocha0 提交。
  • 🌐 添加 docs/docs/deployment/cloud.md 的葡萄牙语翻译。PR #12217@marcelomarkus 提交。
  • ✏️ 修复 docs/docs/python-types.md 中的拼写错误。PR #12235@JavierSanchezCastro 提交。
  • 🌐 添加 docs/docs/environment-variables.md 的荷兰语翻译。PR #12200@maxscheijen 提交。
  • 🌐 添加 docs/docs/deployment/manually.md 的葡萄牙语翻译。PR #12210@JoaoGustavoRogel 提交。
  • 🌐 添加 docs/docs/deployment/server-workers.md 的葡萄牙语翻译。PR #12220@marcelomarkus 提交。
  • 🌐 添加 docs/docs/how-to/configure-swagger-ui.md 的葡萄牙语翻译。PR #12222@marcelomarkus 提交。

内部

0.115.0

亮点

现在您可以使用 Pydantic 模型声明 QueryHeaderCookie 参数。🎉

Query 参数模型

Query 参数使用 Pydantic 模型

from typing import Annotated, Literal

from fastapi import FastAPI, Query
from pydantic import BaseModel, Field

app = FastAPI()


class FilterParams(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/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):
    return filter_query

阅读新文档:Query Parameter Models

Header 参数模型

Header 参数使用 Pydantic 模型

from typing import Annotated

from fastapi import FastAPI, Header
from pydantic import BaseModel

app = FastAPI()


class CommonHeaders(BaseModel):
    host: str
    save_data: bool
    if_modified_since: str | None = None
    traceparent: str | None = None
    x_tag: list[str] = []


@app.get("/items/")
async def read_items(headers: Annotated[CommonHeaders, Header()]):
    return headers

阅读新文档:Header Parameter Models

Cookie 参数使用 Pydantic 模型

from typing import Annotated

from fastapi import Cookie, FastAPI
from pydantic import BaseModel

app = FastAPI()


class Cookies(BaseModel):
    session_id: str
    fatebook_tracker: str | None = None
    googall_tracker: str | None = None


@app.get("/items/")
async def read_items(cookies: Annotated[Cookies, Cookie()]):
    return cookies

阅读新文档:Cookie Parameter Models

使用 Pydantic 模型来限制 Query 参数的额外值(也适用于 HeaderCookie 参数)。

要实现此目的,请使用 Pydantic 的 model_config = {"extra": "forbid"}

from typing import Annotated, Literal

from fastapi import FastAPI, Query
from pydantic import BaseModel, Field

app = FastAPI()


class FilterParams(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/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):
    return filter_query

这适用于 QueryHeaderCookie 参数,请阅读新文档

特性

  • ✨ 添加了对使用 QueryCookieHeader 的参数的 Pydantic 模型支持。PR #12199@tiangolo 提交。

翻译

  • 🌐 添加 docs/docs/advanced/security/http-basic-auth.md 的葡萄牙语翻译。PR #12195@ceb10n 提交。

内部

0.114.2

修复

  • 🐛 修复带 alias 的 form 字段回归。PR #12194@Wurstnase 提交。

翻译

  • 🌐 添加 docs/docs/tutorial/request-form-models.md 的葡萄牙语翻译。PR #12175@ceb10n 提交。
  • 🌐 添加 docs/docs/project-generation.md 的中文翻译。PR #12170@waketzheng 提交。
  • 🌐 添加 docs/docs/python-types.md 的荷兰语翻译。PR #12158@maxscheijen 提交。

内部

  • 💡 添加 Playwright 截图脚本的说明注释。PR #12193@tiangolo 提交。
  • ➕ 为测试添加 inline-snapshot。PR #12189@tiangolo 提交。

0.114.1

重构

  • ⚡️ 通过内部模型字段的缓存,提高请求体解析性能。PR #12184@tiangolo 提交。

文档

  • 📝 删除 docs/en/docs/environment-variables.md 文档中的重复行。PR #12169@prometek 提交。

翻译

  • 🌐 添加 docs/docs/virtual-environments.md 的葡萄牙语翻译。PR #12163@marcelomarkus 提交。
  • 🌐 添加 docs/docs/environment-variables.md 的葡萄牙语翻译。PR #12162@marcelomarkus 提交。
  • 🌐 添加 docs/docs/tutorial/testing.md 的葡萄牙语翻译。PR #12164@marcelomarkus 提交。
  • 🌐 添加 docs/docs/tutorial/debugging.md 的葡萄牙语翻译。PR #12165@marcelomarkus 提交。
  • 🌐 添加 docs/docs/project-generation.md 的韩语翻译。PR #12157@BORA040126 提交。

内部

0.114.0

您可以使用 Pydantic 的 model_config = {"extra": "forbid"} 来限制表单字段仅包含 Pydantic 模型中声明的字段,并禁止请求中发送的任何额外字段。

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str
    model_config = {"extra": "forbid"}


@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
    return data

阅读新文档:Form Models - Forbid Extra Form Fields

特性

  • ✨ 添加了使用 Pydantic 模型禁止额外表单字段的支持。PR #12134@tiangolo 提交。

文档

  • 📝 更新文档,将 Form Models 部分的标题改为与配置名称匹配。PR #12152@tiangolo 提交。

内部

  • ✅ 更新内部测试以支持最新 Pydantic,包括 CI 中安装最新 Pydantic 的调整。PR #12147@tiangolo 提交。

0.113.0

现在您可以使用 Pydantic 模型声明表单字段

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


class FormData(BaseModel):
    username: str
    password: str


@app.post("/login/")
async def login(data: Annotated[FormData, Form()]):
    return data

阅读新文档:Form Models

特性

  • ✨ 添加了对 Form 参数中使用 Pydantic 模型支持。PR #12129@tiangolo 提交。

内部

  • 🔧 更新赞助商:Coherence 链接。PR #12130@tiangolo 提交。

0.112.4

本次发布主要是一个大的内部重构,以便能够添加对 Form 字段的 Pydantic 模型支持,但该功能将在下一个版本中推出。

此版本不应影响使用 FastAPI 的应用程序。您甚至不必立即升级到此版本。它只是一个检查点。🤓

重构

  • ♻️ 重构了决定是否 embed body 字段的逻辑,不覆盖字段,每个路由器计算一次,重构内部结构以准备在 FormQuery 等中使用 Pydantic 模型。PR #12117@tiangolo 提交。

内部

  • ⏪️ 临时回滚 "✨ 添加对 Form 参数的 Pydantic 模型支持",以发布一个检查点。PR #12128@tiangolo 提交。由 PR #12129 恢复。
  • ✨ 添加了对 Form 参数的 Pydantic 模型支持。PR #12127@tiangolo 提交。由 PR #12128 回滚,以便发布一个仅包含重构的检查点版本。由 PR #12129 恢复。

0.112.3

本次发布主要是内部重构,不应影响使用 FastAPI 的应用程序。您甚至不必立即升级到此版本。后面将有几次数个大版本发布。🚀

重构

  • ♻️ 重构内部 check_file_field(),重命名为 ensure_multipart_is_installed() 以明确其用途。PR #12106@tiangolo 提交。
  • ♻️ 重命名内部 create_response_field()create_model_field(),因为它用于更多而不仅仅是响应模型。PR #12103@tiangolo 提交。
  • ♻️ 使用 dataclasses 重构和简化 solve_dependencies() 的内部数据。PR #12100@tiangolo 提交。
  • ♻️ 使用 dataclasses 重构和简化内部 analyze_param(),以使用 dataclasses 结构化数据而不是元组。PR #12099@tiangolo 提交。
  • ♻️ 使用 dataclasses 重构和简化内部依赖关系数据结构。PR #12098@tiangolo 提交。

文档

  • 📝 添加外部链接:SQLAlchemy 全局过滤器在 FastAPI 中的技术和应用。PR #12109@TheShubhendra 提交。
  • 📝 在中间件中添加关于 time.perf_counter() 的注释。PR #12095@tiangolo 提交。
  • 📝 调整中间件代码示例将 time.time() 改为 time.perf_counter()。PR #11957@domdent 提交。
  • 🔧 更新赞助商:Coherence。PR #12093@tiangolo 提交。
  • 📝 修复异步测试示例,避免触发 DeprecationWarning。PR #12084@marcinsulikowski 提交。
  • 📝 更新 docs_src/path_params_numeric_validations/tutorial006.py。PR #11478@MuhammadAshiqAmeer 提交。
  • 📝 更新 docs/en/docs/async.md 中的逗号。PR #12062@Alec-Gillis 提交。
  • 📝 更新关于部署 FastAPI 的文档:ASGI 服务器、Docker 容器等。PR #12069@tiangolo 提交。
  • 📝 澄清 response_class 参数、验证以及直接返回响应。PR #12067@tiangolo 提交。
  • 📝 修复文档中的少量拼写错误和问题。PR #12063@svlandeg 提交。
  • 📝 在 Docker 文档中添加关于使用 CMD exec 形式确保优雅关闭和生命周期事件的注释。PR #11960@GPla 提交。

翻译

  • 🌐 添加 docs/docs/features.md 的荷兰语翻译。PR #12101@maxscheijen 提交。
  • 🌐 添加 docs/docs/advanced/testing-events.md 的葡萄牙语翻译。PR #12108@ceb10n 提交。
  • 🌐 添加 docs/docs/advanced/security/index.md 的葡萄牙语翻译。PR #12114@ceb10n 提交。
  • 🌐 添加 docs/docs/index.md 的荷兰语翻译。PR #12042@svlandeg 提交。
  • 🌐 更新 docs/docs/how-to/index.md 的中文翻译。PR #12070@synthpop123 提交。

内部

0.112.2

修复

  • 🐛 修复 Param 和 Body 类的 allow_inf_nan 选项。PR #11867 by @giunio-prc
  • 🐛 确保 app.include_router 合并嵌套的 lifespan。PR #9630 by @Lancetnik

重构

文档

  • 📝 修复 docs/en/docs/virtual-environments.md 中的拼写错误。PR #12064 by @aymenkrifa
  • 📝 添加关于环境变量和虚拟环境的文档。PR #12054 by @tiangolo
  • 📝 在 async 文档中提及 Asyncer。PR #12037 by @tiangolo
  • 📝 将 Features 文档移至顶层,以改进主页菜单。PR #12036 by @tiangolo
  • ✏️ 修复 Security 参考示例中的导入拼写错误。PR #11168 by @0shah0
  • 📝 在教程 docs/en/docs/tutorial/body-multiple-params.md 中高亮显示正确行。PR #11978 by @svlandeg
  • 🔥 从 Advanced Middleware 文档中移除 Sentry 链接。PR #12031 by @alejsdev
  • 📝 阐明翻译的管理任务,一次一个 PR 处理多个文件。PR #12030 by @tiangolo
  • 📝 在“OpenAPI 中的附加响应”部分编辑指向 OpenAPI “Responses Object”和“Response Object”部分的链接。PR #11996 by @VaitoSoi
  • 🔨 使用连字符指定 email-validator 依赖项。PR #11515 by @jirikuncar
  • 🌐 添加 docs/docs/project-generation.md 的西班牙语翻译。PR #11947 by @alejsdev
  • 📝 修复小的拼写错误。PR #12026 by @MicaelJarniac
  • 📝 多项文档改进、调整和澄清。PR #11390 by @nilslindemann
  • 📝 在 GZipMiddleware 的文档中添加缺失的 compresslevel 参数。PR #11350 by @junah201
  • 📝 修复文档中关于测试时项目已存在的响应码不一致问题。PR #11818 by @lokomilo
  • 📝 使用 Python 3.10 union type 示例更新 docs/en/docs/tutorial/body.md。PR #11415 by @rangzen

翻译

  • 🌐 添加 docs/docs/tutorial/request_file.md 的葡萄牙语翻译。PR #12018 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/learn/index.md 的日语翻译。PR #11592 by @ukwhatn
  • 📝 更新西班牙语翻译文档以保持一致性。PR #12044 by @alejsdev
  • 🌐 更新 docs/docs/tutorial/dependencies/dependencies-with-yield.md 的中文翻译。PR #12028 by @xuvjso
  • 📝 更新 FastAPI People,不翻译以保留最新信息。PR #12034 by @tiangolo
  • 🌐 更新 docs/docs/benchmarks.md 的乌尔都语翻译。PR #10046 by @AhsanSheraz

内部

0.112.1

升级

  • ⬆️ 允许 Starlette 0.38.x,将固定版本更新为 >=0.37.2,<0.39.0。PR #11876 by @musicinmybrain

文档

  • 📝 更新关于“请勿翻译这些页面”的文档部分。PR #12022 by @tiangolo
  • 📝 添加关于未翻译页面和验证它们的脚本的文档。PR #12020 by @tiangolo
  • 📝 更新关于讨论问题的文档。PR #11985 by @tiangolo

翻译

  • 🌐 添加 docs/docs/tutorial/bigger-applications.md 的葡萄牙语翻译。PR #11971 by @marcelomarkus
  • 🌐 添加 docs/docs/advanced/testing-websockets.md 的葡萄牙语翻译。PR #11994 by @ceb10n
  • 🌐 添加 docs/docs/advanced/testing-dependencies.md 的葡萄牙语翻译。PR #11995 by @ceb10n
  • 🌐 添加 docs/docs/advanced/using-request-directly.md 的葡萄牙语翻译。PR #11956 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/body-multiple-params.md 的法语翻译。PR #11796 by @pe-brian
  • 🌐 更新 docs/docs/tutorial/query-params.md 的中文翻译。PR #11557 by @caomingpei
  • 🌐 更新 docs/docs/advanced/testing-dependencies.md 的中文翻译中的拼写错误。PR #11944 by @bestony
  • 🌐 添加 docs/docs/advanced/sub-applications.mddocs/docs/advanced/behind-a-proxy.md 的葡萄牙语翻译。PR #11856 by @marcelomarkus
  • 🌐 添加 docs/docs/tutorial/cors.mddocs/docs/tutorial/middleware.md 的葡萄牙语翻译。PR #11916 by @wesinalves
  • 🌐 添加 docs/docs/tutorial/path-params-numeric-validations.md 的法语翻译。PR #11788 by @pe-brian

内部

  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.14 升级到 1.9.0。PR #11727 by @dependabot[bot]
  • 🔧 将 changelog URL 添加到 pyproject.toml,显示在 PyPI 上。PR #11152 by @Pierre-VF
  • 👷 不同步标签,因为它会覆盖手动添加的标签。PR #12024 by @tiangolo
  • 👷🏻 更新 Labeler GitHub Actions。PR #12019 by @tiangolo
  • 🔧 更新 MkDocs 的语言和社交卡片配置。PR #12016 by @tiangolo
  • 👷 更新 labeler GitHub Action 的权限和配置。PR #12008 by @tiangolo
  • 👷🏻 添加 GitHub Action label-checker。PR #12005 by @tiangolo
  • 👷 添加 label checker GitHub Action。PR #12004 by @tiangolo
  • 👷 更新 GitHub Action add-to-project。PR #12002 by @tiangolo
  • 🔧 更新 labeler GitHub Action。PR #12001 by @tiangolo
  • 👷 添加 GitHub Action labeler。PR #12000 by @tiangolo
  • 👷 添加 GitHub Action add-to-project。PR #11999 by @tiangolo
  • 📝 更新文档中缺失的 admonitions。PR #11998 by @tiangolo
  • 🔨 更新 docs.py 脚本以有条件地启用脏重载。PR #11986 by @tiangolo
  • 🔧 更新 MkDocs 即时预览。PR #11982 by @tiangolo
  • 🐛 修复 deploy docs 预览脚本以处理 mkdocs.yml 文件。PR #11984 by @tiangolo
  • 💡 添加关于自定义 Termynal 行高的注释。PR #11976 by @tiangolo
  • 👷 为 test-redistribute 添加 alls-green。PR #11974 by @tiangolo
  • 👷 更新 docs-previews 以处理无文档更改的情况。PR #11975 by @tiangolo
  • 🔨 重构脚本 deploy_docs_status.py 以处理带或不带尾部斜杠的部署 URL。PR #11965 by @tiangolo
  • 🔒️ 更新 deploy-docs action 的权限。PR #11964 by @tiangolo
  • 👷🏻 将部署文档状态和预览链接添加到 PR。PR #11961 by @tiangolo
  • 🔧 使用最新配置和插件更新文档设置。PR #11953 by @tiangolo
  • 🔇 忽略 Trio 中 attrs 的警告。PR #11949 by @tiangolo

0.112.0

重大更改

  • ♻️ 添加对 pip install "fastapi[standard]" 的支持,包含标准依赖项和 python -m fastapi。PR #11935 by @tiangolo

总结

安装方式

pip install "fastapi[standard]"

其他更改

  • 这增加了对调用 CLI 的支持,例如
python -m fastapi
  • 并升级了 fastapi-cli[standard] >=0.0.5

技术细节

在此之前,fastapi 会包含标准依赖项,包括 Uvicorn 和 fastapi-cli 等。

fastapi-slim 则不包含这些标准依赖项。

现在,除非您使用 pip install "fastapi[standard]" 进行安装,否则 fastapi 不会包含这些标准依赖项。

以前,您会安装 pip install fastapi,现在您应该包含 standard 可选依赖项(除非您想排除其中某一个):pip install "fastapi[standard]"

此更改是因为默认安装标准可选依赖项给许多用户带来了不便,而改为安装 fastapi-slim 并非可行的解决方案。

讨论于:#11522#11525

文档

翻译

  • 🌐 更新 docs/docs/alternatives.md 的葡萄牙语翻译。PR #11931 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/dependencies/sub-dependencies.md 的俄语翻译。PR #10515 by @AlertRED
  • 🌐 添加 docs/docs/advanced/response-change-status-code.md 的葡萄牙语翻译。PR #11863 by @ceb10n
  • 🌐 添加 docs/docs/reference/background.md 的葡萄牙语翻译。PR #11849 by @lucasbalieiro
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-with-yield.md 的葡萄牙语翻译。PR #11848 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/reference/apirouter.md 的葡萄牙语翻译。PR #11843 by @lucasbalieiro

内部

  • 🔧 更新赞助商:添加 liblab。PR #11934 by @tiangolo
  • 👷 更新 GitHub Action label-approved 权限。PR #11933 by @tiangolo
  • 👷 重构 GitHub Action 以评论文档部署 URL 并更新令牌。PR #11925 by @tiangolo
  • 👷 更新 GitHub Actions 的令牌。PR #11924 by @tiangolo
  • 👷 更新令牌权限以在 PR 中评论部署 URL。PR #11917 by @tiangolo
  • 👷 更新 GitHub Actions 的令牌权限。PR #11915 by @tiangolo
  • 👷 更新 GitHub Actions 令牌的使用。PR #11914 by @tiangolo
  • 👷 更新 GitHub Action 以使用标签 approved-1 通知翻译。PR #11907 by @tiangolo
  • 🔧 更新赞助商,移除 Reflex。PR #11875 by @tiangolo
  • 🔧 更新赞助商:移除 TalkPython。PR #11861 by @tiangolo
  • 🔨 更新文档 Termynal 脚本,在本地开发时排除行号。PR #11854 by @tiangolo

0.111.1

升级

  • ➖ 从默认依赖项中移除 orjsonujson。PR #11842 by @tiangolo
    • 这些依赖项在您使用 pip install "fastapi[all]" 进行安装时仍然会被安装。但它们不包含在 pip install fastapi 中。
  • 📝 恢复 Swagger-UI 链接,使用最新可用版本。PR #11459 by @UltimateLobster

文档

  • ✏️ 修改 docs/en/docs/fastapi-cli.md 中的措辞。PR #11716 by @alejsdev
  • 📝 更新所有文档中的 Hypercorn 链接。PR #11744 by @kittydoor
  • 📝 在文档中更新 Ariadne 的引用,从 Starlette 改为 FastAPI。PR #11797 by @DamianCzajkowski
  • 📝 更新 fastapi instrumentation 外部链接。PR #11317 by @softwarebloat
  • ✏️ 修复文档中到 alembic 示例仓库的链接。PR #11628 by @augiwan
  • ✏️ 更新 docs/en/docs/fastapi-cli.md。PR #11715 by @alejsdev
  • 📝 更新外部链接。PR #11500 by @devon2018
  • 📝 添加外部链接:FastAPI 教程,最好的 Python 框架?PR #11618 by @EduardoZepeda
  • 📝 修复 docs/en/docs/tutorial/body-multiple-params.md 中的拼写错误。PR #11698 by @mwb-u
  • 📝 添加外部链接:使用 Neon Postgres 和 AWS App Runner 部署无服务器 FastAPI 应用。PR #11633 by @ananis25
  • 📝 更新 security/first-steps.md。PR #11674 by @alejsdev
  • 📝 更新 security/first-steps.md。PR #11673 by @alejsdev
  • 📝 更新 path-params-numeric-validations.md 中的注意事项。PR #11672 by @alejsdev
  • 📝 调整关于 AnnotatedQuery() 参数的简介文档。PR #11664 by @tiangolo
  • 📝 更新 JWT 认证文档,使用 PyJWT 代替 python-jose。PR #11589 by @estebanx64
  • 📝 更新文档。PR #11603 by @alejsdev
  • ✏️ 修复拼写错误:将所有 're-use' 替换为 'reuse'。PR #11598 by @hasansezertasan
  • ✏️ 修复 fastapi/applications.py 中的拼写错误。PR #11593 by @petarmaric
  • ✏️ 修复 fastapi-cli.md 中的链接。PR #11524 by @svlandeg

翻译

  • 🌐 添加 docs/docs/how-to/graphql.md 的西班牙语翻译。PR #11697 by @camigomezdev
  • 🌐 添加 docs/docs/reference/index.md 的葡萄牙语翻译。PR #11840 by @lucasbalieiro
  • 🌐 修复德语翻译中的链接。PR #11836 by @anitahammer
  • 🌐 添加 docs/docs/tutorial/dependencies/sub-dependencies.md 的葡萄牙语翻译。PR #11792 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/tutorial/request-forms.md 的土耳其语翻译。PR #11553 by @hasansezertasan
  • 🌐 添加 docs/docs/reference/exceptions.md 的葡萄牙语翻译。PR #11834 by @lucasbalieiro
  • 🌐 添加 docs/docs/tutorial/dependencies/global-dependencies.md 的葡萄牙语翻译。PR #11826 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/how-to/general.md 的葡萄牙语翻译。PR #11825 by @lucasbalieiro
  • 🌐 添加 docs/docs/advanced/async-tests.md 的葡萄牙语翻译。PR #11808 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/first-steps.md 的乌克兰语翻译。PR #11809 by @vkhoroshchak
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-in-path-operation-operators.md 的葡萄牙语翻译。PR #11804 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/fastapi-cli.md 的中文翻译。PR #11786 by @logan2d5
  • 🌐 添加 docs/docs/advanced/openapi-webhooks.md 的葡萄牙语翻译。PR #11791 by @ceb10n
  • 🌐 更新 docs/docs/tutorial/security/oauth2-jwt.md 的中文翻译。PR #11781 by @logan2d5
  • 📝 修复法语翻译 docs/docs/async.md 中的图片缺失。PR #11787 by @pe-brian
  • 🌐 添加 docs/docs/advanced/advanced-dependencies.md 的葡萄牙语翻译。PR #11775 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/dependencies/classes-as-dependencies.md 的葡萄牙语翻译。PR #11768 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/advanced/additional-status-codes.md 的葡萄牙语翻译。PR #11753 by @ceb10n
  • 🌐 添加 docs/docs/tutorial/dependencies/index.md 的葡萄牙语翻译。PR #11757 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/advanced/settings.md 的葡萄牙语翻译。PR #11739 by @Joao-Pedro-P-Holanda
  • 🌐 添加 docs/docs/learn/index.md 的法语翻译。PR #11712 by @benjaminvandammeholberton
  • 🌐 添加 docs/docs/how-to/index.md 的葡萄牙语翻译。PR #11731 by @vhsenna
  • 🌐 添加 docs/docs/advanced/additional-responses.md 的葡萄牙语翻译。PR #11736 by @ceb10n
  • 🌐 添加 docs/docs/advanced/benchmarks.md 的葡萄牙语翻译。PR #11713 by @ceb10n
  • 🌐 修复韩语翻译 docs/docs/tutorial/response-status-code.md。PR #11718 by @nayeonkinn
  • 🌐 添加 docs/docs/tutorial/extra-data-types.md 的韩语翻译。PR #11711 by @nayeonkinn
  • 🌐 修复韩语翻译 docs/docs/tutorial/body-nested-models.md。PR #11710 by @nayeonkinn
  • 🌐 添加 docs/docs/advanced/fastapi-cli.md 的葡萄牙语翻译。PR #11641 by @ayr-ton
  • 🌐 添加 docs/docs/fastapi-people.md 的繁体中文翻译。PR #11639 by @hsuanchi
  • 🌐 添加 docs/docs/advanced/index.md 的土耳其语翻译。PR #11606 by @hasansezertasan
  • 🌐 添加 docs/docs/deployment/cloud.md 的土耳其语翻译。PR #11610 by @hasansezertasan
  • 🌐 添加 docs/docs/advanced/security/index.md 的土耳其语翻译。PR #11609 by @hasansezertasan
  • 🌐 添加 docs/docs/advanced/testing-websockets.md 的土耳其语翻译。PR #11608 by @hasansezertasan
  • 🌐 添加 docs/docs/how-to/general.md 的土耳其语翻译。PR #11607 by @hasansezertasan
  • 🌐 更新 docs/docs/advanced/templates.md 的中文翻译。PR #11620 by @chaoless
  • 🌐 添加 docs/docs/deployment/index.md 的土耳其语翻译。PR #11605 by @hasansezertasan
  • 🌐 添加 docs/docs/tutorial/static-files.md 的土耳其语翻译。PR #11599 by @hasansezertasan
  • 🌐 docs/docs/fastapi-people.md 的波兰语翻译。PR #10196 by @isulim
  • 🌐 添加 docs/docs/advanced/wsgi.md 的土耳其语翻译。PR #11575 by @hasansezertasan
  • 🌐 添加 docs/docs/tutorial/cookie-params.md 的土耳其语翻译。PR #11561 by @hasansezertasan
  • 🌐 添加 docs/docs/about/index.md 的俄语翻译。PR #10961 by @s111d
  • 🌐 更新 docs/docs/tutorial/sql-databases.md 的中文翻译。PR #11539 by @chaoless
  • 🌐 添加 docs/docs/how-to/configure-swagger-ui.md 的中文翻译。PR #11501 by @Lucas-lyh
  • 🌐 更新 /docs/advanced/security/http-basic-auth.md 的中文翻译。PR #11512 by @nick-cjyx9

内部

0.111.0

功能

尝试使用

$ pip install --upgrade fastapi

$ fastapi dev main.py


 ╭────────── FastAPI CLI - Development mode ───────────╮
 │                                                     │
 │  Serving at: http://127.0.0.1:8000                  │
 │                                                     │
 │  API docs: http://127.0.0.1:8000/docs               │
 │                                                     │
 │  Running in development mode, for production use:   │
 │                                                     │
 │  fastapi run                                        │
 │                                                     │
 ╰─────────────────────────────────────────────────────╯

INFO:     Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [2248755] using WatchFiles
INFO:     Started server process [2248757]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

重构

  • 🔧 添加 fastapi-slim 的配置和设置,包括可选的 extras fastapi-slim[standard],以及 fastapi 默认包含相同的 standard extras。PR #11503 by @tiangolo

0.110.3

文档

  • 📝 更新 Python 版本引用,FastAPI 支持所有当前版本,无需显式声明版本。PR #11496 by @tiangolo
  • ✏️ 修复 fastapi/security/api_key.py 中的拼写错误。PR #11481 by @ch33zer
  • ✏️ 修复 security/http.py 中的拼写错误。PR #11455 by @omarmoo5

翻译

  • 🌐 添加 docs/benchmarks.md 的繁体中文翻译。PR #11484 by @KNChiu
  • 🌐 更新 docs/docs/fastapi-people.md 的中文翻译。PR #11476 by @billzhong
  • 🌐 添加 docs/docs/how-to/index.mddocs/docs/how-to/general.md 的中文翻译。PR #11443 by @billzhong
  • 🌐 添加 docs/docs/tutorial/cookie-params.md 的西班牙语翻译。PR #11410 by @fabianfalon

内部

0.110.2

修复

  • 🐛 修复对带有列表类型的查询参数的支持,处理 Pydantic UndefinedType 的 JSON 编码。PR #9929 by @arjwilliams

重构

  • ♻️ 简化 fastapi/openapi/models.py 中的 OpenAPI 模型 Pydantic 配置。PR #10886 by @JoeTanto2
  • ✨ 支持 Pydantic 2.7 新的已弃用 Field 参数,移除验证错误响应中的 URL。PR #11461 by @tiangolo

文档

翻译

  • 🌐 更新 docs/docs/index.html 的中文翻译。PR #11430 by @waketzheng
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 的俄语翻译。PR #11411 by @anton2yakovlev
  • 🌐 添加 learn/index.md resources/index.md help/index.md about/index.md 的葡萄牙语翻译。PR #10807 by @nazarepiedady
  • 🌐 更新部署文档的俄语翻译。PR #11271 by @Lufa1u
  • 🌐 添加 docs/docs/python-types.md 的孟加拉语翻译。PR #11376 by @imtiaz101325
  • 🌐 添加 docs/docs/tutorial/security/simple-oauth2.md 的韩语翻译。PR #5744 by @KdHyeon0661
  • 🌐 添加 docs/docs/help-fastapi.md 的韩语翻译。PR #4139 by @kty4119
  • 🌐 添加 docs/docs/advanced/events.md 的韩语翻译。PR #5087 by @pers0n4
  • 🌐 添加 docs/docs/tutorial/path-operation-configuration.md 的日语翻译。PR #1954 by @SwftAlpc
  • 🌐 添加 docs/docs/tutorial/request-forms-and-files.md 的日语翻译。PR #1946 by @SwftAlpc
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-with-yield.md 的俄语翻译。PR #10532 by @AlertRED
  • 🌐 添加 docs/docs/tutorial/debugging.md 的韩语翻译。PR #5695 by @JungWooGeon

内部

0.110.1

修复

  • 🐛 修正带泛型的无参数 Depends()。PR #9479 by @nzig

重构

  • ♻️ 更新 mypy。PR #11049 by @k0t3n
  • ♻️ 在 fastapi/applications.py 中使用 f-string 简化字符串格式化。PR #11335 by @igeni

升级

  • ⬆ 将 Starlette 升级到 >=0.37.2, <0.38.0,并移除 Starlette 过滤器警告以支持内部测试。PR #11266 by @nothielf

文档

  • 📝 调整文档和翻译链接,并移除旧的文档翻译。PR #11381 by @tiangolo
  • ✏️ 修正 fastapi/security/oauth2.py 中的拼写错误。PR #11368 by @shandongbinzhou
  • 📝 更新 Pydantic 文档链接,指向新网站。PR #11328 by @alejsdev
  • ✏️ 修正 docs/en/docs/tutorial/extra-models.md 中的拼写错误。PR #11329 by @alejsdev
  • 📝 更新 project-generation.md。PR #11326 by @alejsdev
  • 📝 更新外部链接。PR #11327 by @alejsdev
  • 🔥 移除 Pydantic 的基准测试链接,以及其他 i18n 页面上的链接。PR #11224 by @hirotoKirimaru
  • ✏️ 修正 docstrings 中的拼写错误。PR #11295 by @davidhuser
  • 🛠️ 改进文档中的 Node.js 脚本,用于生成 TypeScript 客户端。PR #11293 by @alejsdev
  • 📝 更新测试示例,将 "inexistent" 替换为 "nonexistent"。PR #11220 by @Homesteady
  • 📝 在所有文档中将 python-multipart 的 GitHub 链接从 https://andrew-d.github.io/python-multipart/ 更新为 https://github.com/Kludex/python-multipart。PR #11239 by @joshjhans

翻译

  • 🌐 添加 docs/docs/tutorial/response-status-code.md 的德语翻译。PR #10357 by @nilslindemann
  • 🌐 更新 docs/docs/tutorial/query-params.md 的中文翻译。PR #3480 by @jaystone776
  • 🌐 更新 docs/docs/tutorial/body.md 的中文翻译。PR #3481 by @jaystone776
  • 🌐 更新 docs/docs/tutorial/path-params.md 的中文翻译。PR #3479 by @jaystone776
  • 🌐 更新 docs/tutorial/body-fields.md 的中文翻译。PR #3496 by @jaystone776
  • 🌐 更新 docs/tutorial/extra-models.md 的中文翻译。PR #3497 by @jaystone776
  • 🌐 添加 docs/docs/tutorial/metadata.md 的日语翻译。PR #2667 by @tokusumi
  • 🌐 添加 docs/docs/contributing.md 的德语翻译。PR #10487 by @nilslindemann
  • 🌐 更新 docs/docs/tutorial/query-params.md 的日语翻译。PR #10808 by @urushio
  • 🌐 更新 docs/docs/tutorial/security/get-current-user.md 的中文翻译。PR #3842 by @jaystone776
  • 🌐 添加 docs/docs/advanced/openapi-callbacks.md 的中文翻译。PR #3825 by @jaystone776
  • 🌐 添加 docs/docs/advanced/extending-openapi.md 的中文翻译。PR #3823 by @jaystone776
  • 🌐 添加 docs/docs/advanced/testing-dependencies.md 的中文翻译。PR #3819 by @jaystone776
  • 🌐 添加 docs/docs/advanced/custom-request-and-route.md 的中文翻译。PR #3816 by @jaystone776
  • 🌐 添加 docs/docs/external-links.md 的中文翻译。PR #3833 by @jaystone776
  • 🌐 添加 docs/docs/advanced/templates.md 的中文翻译。PR #3812 by @jaystone776
  • 🌐 添加 docs/docs/advanced/sub-applications.md 的中文翻译。PR #3811 by @jaystone776
  • 🌐 添加 docs/docs/advanced/async-sql-databases.md 的中文翻译。PR #3805 by @jaystone776
  • 🌐 添加 docs/docs/advanced/middleware.md 的中文翻译。PR #3804 by @jaystone776
  • 🌐 添加 docs/docs/advanced/dataclasses.md 的中文翻译。PR #3803 by @jaystone776
  • 🌐 添加 docs/docs/advanced/using-request-directly.md 的中文翻译。PR #3802 by @jaystone776
  • 🌐 添加 docs/docs/advanced/security/http-basic-auth.md 的中文翻译。PR #3801 by @jaystone776
  • 🌐 添加 docs/docs/advanced/security/oauth2-scopes.md 的中文翻译。PR #3800 by @jaystone776
  • 🌐 更新 docs/docs/tutorial/cookie-params.md 的中文翻译。PR #3486 by @jaystone776
  • 🌐 更新 docs/docs/tutorial/header-params.md 的中文翻译。PR #3487 by @jaystone776
  • 🌐 更新 docs/tutorial/response-status-code.md 的中文翻译。PR #3498 by @jaystone776
  • 🌐 添加 docs/docs/tutorial/security/first-steps.md 的德语翻译。PR #10432 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/events.md 的德语翻译。PR #10693 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/cloud.md 的德语翻译。PR #10746 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/behind-a-proxy.md 的德语翻译。PR #10675 by @nilslindemann
  • 🌐 添加 docs/docs/help-fastapi.md 的德语翻译。PR #10455 by @nilslindemann
  • 🌐 更新 docs/docs/python-types.md 的德语翻译。PR #10287 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/path-params.md 的德语翻译。PR #10290 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/handling-errors.md 的德语翻译。PR #10379 by @nilslindemann
  • 🌐 更新 docs/docs/index.md 的德语翻译。PR #10283 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/security/http-basic-auth.md 的德语翻译。PR #10651 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/bigger-applications.md 的德语翻译。PR #10554 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/path-operation-advanced-configuration.md 的德语翻译。PR #10612 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/static-files.md 的德语翻译。PR #10584 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/security/oauth2-jwt.md 的德语翻译。PR #10522 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/response-model.md 的德语翻译。PR #10345 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/extra-models.md 的德语翻译。PR #10351 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/body-updates.md 的德语翻译。PR #10396 by @nilslindemann
  • 🌐 添加 docs/docs/alternatives.md 的德语翻译。PR #10855 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/templates.md 的德语翻译。PR #10678 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/security/oauth2-scopes.md 的德语翻译。PR #10643 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/async-tests.md 的德语翻译。PR #10708 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/metadata.md 的德语翻译。PR #10581 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/testing.md 的德语翻译。PR #10586 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/schema-extra-example.md 的德语翻译。PR #10597 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/index.md 的德语翻译。PR #10611 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/response-directly.md 的德语翻译。PR #10618 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/additional-responses.md 的德语翻译。PR #10626 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/response-cookies.md 的德语翻译。PR #10627 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/response-headers.md 的德语翻译。PR #10628 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/response-change-status-code.md 的德语翻译。PR #10632 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/advanced-dependencies.md 的德语翻译。PR #10633 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/security/index.md 的德语翻译。PR #10635 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/using-request-directly.md 的德语翻译。PR #10653 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/dataclasses.md 的德语翻译。PR #10667 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/middleware.md 的德语翻译。PR #10668 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/sub-applications.md 的德语翻译。PR #10671 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/websockets.md 的德语翻译。PR #10687 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/testing-websockets.md 的德语翻译。PR #10703 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/testing-events.md 的德语翻译。PR #10704 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/testing-dependencies.md 的德语翻译。PR #10706 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/openapi-callbacks.md 的德语翻译。PR #10710 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/settings.md 的德语翻译。PR #10709 by @nilslindemann
  • 🌐 添加 docs/docs/advanced/wsgi.md 的德语翻译。PR #10713 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/index.md 的德语翻译。PR #10733 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/https.md 的德语翻译。PR #10737 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/manually.md 的德语翻译。PR #10738 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/concepts.md 的德语翻译。PR #10744 by @nilslindemann
  • 🌐 更新 docs/docs/features.md 的德语翻译。PR #10284 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/server-workers.md 的德语翻译。PR #10747 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/docker.md 的德语翻译。PR #10759 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/index.md 的德语翻译。PR #10769 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/general.md 的德语翻译。PR #10770 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/graphql.md 的德语翻译。PR #10788 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/custom-request-and-route.md 的德语翻译。PR #10789 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/conditional-openapi.md 的德语翻译。PR #10790 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/separate-openapi-schemas.md 的德语翻译。PR #10796 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/configure-swagger-ui.md 的德语翻译。PR #10804 by @nilslindemann
  • 🌐 添加 docs/docs/how-to/custom-docs-ui-assets.md 的德语翻译。PR #10803 by @nilslindemann
  • 🌐 添加 docs/docs/reference/parameters.md 的德语翻译。PR #10814 by @nilslindemann
  • 🌐 添加 docs/docs/reference/status.md 的德语翻译。PR #10815 by @nilslindemann
  • 🌐 添加 docs/docs/reference/uploadfile.md 的德语翻译。PR #10816 by @nilslindemann
  • 🌐 添加 docs/docs/reference/exceptions.md 的德语翻译。PR #10817 by @nilslindemann
  • 🌐 添加 docs/docs/reference/dependencies.md 的德语翻译。PR #10818 by @nilslindemann
  • 🌐 添加 docs/docs/reference/apirouter.md 的德语翻译。PR #10819 by @nilslindemann
  • 🌐 添加 docs/docs/reference/websockets.md 的德语翻译。PR #10822 by @nilslindemann
  • 🌐 添加 docs/docs/reference/httpconnection.md 的德语翻译。PR #10823 by @nilslindemann
  • 🌐 添加 docs/docs/reference/response.md 的德语翻译。PR #10824 by @nilslindemann
  • 🌐 添加 docs/docs/reference/middleware.md 的德语翻译。PR #10837 by @nilslindemann
  • 🌐 添加 docs/docs/reference/openapi/*.md 的德语翻译。PR #10838 by @nilslindemann
  • 🌐 添加 docs/docs/reference/security/index.md 的德语翻译。PR #10839 by @nilslindemann
  • 🌐 添加 docs/docs/reference/staticfiles.md 的德语翻译。PR #10841 by @nilslindemann
  • 🌐 添加 docs/docs/reference/testclient.md 的德语翻译。PR #10843 by @nilslindemann
  • 🌐 添加 docs/docs/project-generation.md 的德语翻译。PR #10851 by @nilslindemann
  • 🌐 添加 docs/docs/history-design-future.md 的德语翻译。PR #10865 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-with-yield.md 的德语翻译。PR #10422 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/global-dependencies.md 的德语翻译。PR #10420 by @nilslindemann
  • 🌐 更新 docs/docs/fastapi-people.md 的德语翻译。PR #10285 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/sub-dependencies.md 的德语翻译。PR #10409 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/security/index.md 的德语翻译。PR #10429 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 的德语翻译。PR #10411 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/extra-data-types.md 的德语翻译。PR #10534 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/security/simple-oauth2.md 的德语翻译。PR #10504 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/security/get-current-user.md 的德语翻译。PR #10439 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/request-forms-and-files.md 的德语翻译。PR #10368 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/encoder.md 的德语翻译。PR #10385 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/request-forms.md 的德语翻译。PR #10361 by @nilslindemann
  • 🌐 添加 docs/docs/deployment/versions.md 的德语翻译。PR #10491 by @nilslindemann
  • 🌐 添加 docs/docs/async.md 的德语翻译。PR #10449 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/cookie-params.md 的德语翻译。PR #10323 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/classes-as-dependencies.md 的德语翻译。PR #10407 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/dependencies/index.md 的德语翻译。PR #10399 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/header-params.md 的德语翻译。PR #10326 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/path-params-numeric-validations.md 的德语翻译。PR #10307 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/query-params-str-validations.md 的德语翻译。PR #10304 by @nilslindemann
  • 🌐 添加 docs/docs/tutorial/request-files.md 的德语翻译。PR #10364 by @nilslindemann
  • :globe_with_meridians: 添加 docs/docs/advanced/templates.md 的葡萄牙语翻译。PR #11338 by @SamuelBFavarin
  • 🌐 添加 docs/docs/learn/index.md 的孟加拉语翻译。PR #11337 by @imtiaz101325
  • 🌐 修正 docs/docs/index.md 的韩语翻译。PR #11296 by @choi-haram
  • 🌐 添加 docs/docs/about/index.md 的韩语翻译。PR #11299 by @choi-haram
  • 🌐 添加 docs/docs/advanced/index.md 的韩语翻译。PR #9613 by @ElliottLarsen
  • 🌐 添加 docs/docs/how-to/extending-openapi.md 的德语翻译。PR #10794 by @nilslindemann
  • 🌐 更新 docs/docs/tutorial/metadata.md 的中文翻译。PR #11286 by @jackleeio
  • 🌐 更新 docs/docs/contributing.md 的中文翻译。PR #10887 by @Aruelius
  • 🌐 添加 docs/docs/fastapi-people.md 的阿塞拜疆语翻译。PR #11195 by @vusallyv
  • 🌐 添加 docs/docs/tutorial/dependencies/index.md 的俄语翻译。PR #11223 by @kohiry
  • 🌐 更新 docs/docs/tutorial/query-params.md 的中文翻译。PR #11242 by @jackleeio
  • 🌐 添加 docs/learn/index.md 的阿塞拜疆语翻译。PR #11192 by @vusallyv

内部

0.110.0

重大更改

  • 🐛 修正内部服务器错误时未处理的内存增长问题,重构带 yieldexcept 的依赖项,使其需要像常规 Python 一样重新抛出异常。PR #11191 by @tiangolo
    • 如果您使用了带 yield 的依赖项,并在这些依赖项中使用了 except,但没有重新抛出异常,那么这是一个(微小的)重大更改。
    • 这由 @rushilsrivastava 在内部报告为服务器出现未处理的异常导致内部服务器错误时存在内存泄漏,那时分配的内存不会被释放。
    • 阅读新文档:yieldexcept 的依赖项

简而言之,如果您有看起来像这样的依赖项:

def my_dep():
    try:
        yield
    except SomeException:
        pass

现在您需要确保在 except 之后重新抛出异常,就像在常规 Python 中一样:

def my_dep():
    try:
        yield
    except SomeException:
        raise

文档

  • ✏️ 修正 docs/docs/ 中的轻微拼写错误。PR #11126 by @KaniKim
  • ✏️ 修正 fastapi/applications.py 中的轻微拼写错误。PR #11099 by @JacobHayes

翻译

  • 🌐 添加 docs/docs/reference/background.md 的德语翻译。PR #10820 by @nilslindemann
  • 🌐 添加 docs/docs/reference/templating.md 的德语翻译。PR #10842 by @nilslindemann
  • 🌐 添加 docs/docs/external-links.md 的德语翻译。PR #10852 by @nilslindemann
  • 🌐 更新 docs/docs/tutorial/query-params.md 的土耳其语翻译。PR #11162 by @hasansezertasan
  • 🌐 添加 docs/docs/reference/encoders.md 的德语翻译。PR #10840 by @nilslindemann
  • 🌐 添加 docs/docs/reference/responses.md 的德语翻译。PR #10825 by @nilslindemann
  • 🌐 添加 docs/docs/reference/request.md 的德语翻译。PR #10821 by @nilslindemann
  • 🌐 为 docs/docs/tutorial/query-params.md 添加土耳其语翻译。PR #11078@emrhnsyts
  • 🌐 为 docs/docs/reference/fastapi.md 添加德语翻译。PR #10813@nilslindemann
  • 🌐 为 docs/docs/newsletter.md 添加德语翻译。PR #10853@nilslindemann
  • 🌐 为 docs/docs/learn/index.md 添加繁体中文翻译。PR #11142@hsuanchi
  • 🌐 为 /docs/docs/tutorial/dependencies/global-dependencies.md 添加韩语翻译。PR #11123@riroan
  • 🌐 为 /docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 添加韩语翻译。PR #11124@riroan
  • 🌐 为 /docs/docs/tutorial/schema-extra-example.md 添加韩语翻译。PR #11121@KaniKim
  • 🌐 为 /docs/docs/tutorial/body-fields.md 添加韩语翻译。PR #11112@KaniKim
  • 🌐 为 /docs/docs/tutorial/cookie-params.md 添加韩语翻译。PR #11118@riroan
  • 🌐 更新 /docs/docs/dependencies/index.md 的韩语翻译。PR #11114@KaniKim
  • 🌐 更新 /docs/docs/deployment/docker.md 的韩语翻译。PR #11113@KaniKim
  • 🌐 更新 docs/docs/tutorial/first-steps.md 的土耳其语翻译。PR #11094@hasansezertasan
  • 🌐 为 docs/docs/advanced/security/index.md 添加西班牙语翻译。PR #2278@Xaraxx
  • 🌐 为 docs/docs/advanced/response-headers.md 添加西班牙语翻译。PR #2276@Xaraxx
  • 🌐 为 docs/docs/deployment/index.md~/deployment/versions.md 添加西班牙语翻译。PR #9669@pabloperezmoya
  • 🌐 为 docs/docs/benchmarks.md 添加西班牙语翻译。PR #10928@pablocm83
  • 🌐 为 docs/docs/advanced/response-change-status-code.md 添加西班牙语翻译。PR #11100@alejsdev

0.109.2

升级

  • ⬆️ 将 Starlette 版本升级到 >= 0.36.3。PR #11086@tiangolo

翻译

  • 🌐 更新 docs/docs/fastapi-people.md 的土耳其语翻译。PR #10547@alperiox

内部

0.109.1

安全修复

  • ⬆️ 将 python-multipart 的最低版本升级到 >=0.0.7,以修复在使用表单数据时发生的 ReDos 攻击漏洞。您也可以简单地升级 python-multipart

安全公告:Content-Type Header ReDoS 中阅读更多内容。

功能

  • ✨ 在没有正文的状态码中包含 HTTP 205。PR #10969@tiangolo

重构

  • ✅ 重构重复操作 ID 生成的测试,以兼容其他运行 FastAPI 测试套件的工具。PR #10876@emmettbutler
  • ♻️ 在 fastapi/utils.py 中使用 f-strings 简化字符串格式。PR #10576@eukub
  • 🔧 修复 Ruff 配置意外启用并重新禁用 mccabe 复杂度检查。PR #10893@jiridanek
  • ✅ 在 Starlette 中修复后,重新启用 tests/test_tutorial/test_header_params/test_tutorial003.py 中的测试。PR #10904@ooknimm

文档

  • 📝 调整 help-fastapi.md 中的措辞。PR #11040@tiangolo
  • 📝 调整关于代理服务器的文档。PR #11038@tiangolo
  • 📝 添加外部链接:将 SQLAlchemy 添加到 FastAPI 的 10 个技巧。PR #11036@Donnype
  • 📝 添加外部链接:关于从 Flask 迁移到 FastAPI 及反之亦然的技巧。PR #11029@jtemporal
  • 📝 弃用旧教程:Peewee、Couchbase、encode/databases。PR #10979@tiangolo
  • ✏️ 修复 fastapi/security/oauth2.py 中的拼写错误。PR #10972@RafalSkolasinski
  • 📝 更新 docs/en/docs/tutorial/handling-errors.md 中的 HTTPException 详情。PR #5418@papb
  • ✏️ 调整 docs/docs/tutorial/first-steps.md 中的一些内容。PR #10959@nilslindemann
  • ✏️ 修复 docs/en/docs/advanced/async-tests.md 中的链接。PR #10960@nilslindemann
  • ✏️ 修复西班牙语文档中的拼写错误。PR #10957@jlopezlira
  • 📝 添加关于 lifespan 函数和向后兼容事件的警告。PR #10734@jacob-indigo
  • ✏️ 修复多个语言中 docs/tutorial/sql-databases.md 的失效链接。PR #10716@theoohoho
  • ✏️ 从 external_links.yml 中移除失效链接。PR #10943@Torabek
  • 📝 更新模板文档,增加关于 url_for 的信息。PR #5937@EzzEddin
  • 📝 更新安全文档中的 Token 模型用法。PR #9313@piotrszacilowski
  • ✏️ 更新 docs/en/docs/tutorial/bigger-applications.md 中高亮显示的行。PR #5490@papb
  • 📝 添加外部链接:探索如何有效地使用 JWT 与 FastAPI。PR #10212@aanchlia
  • 📝 为 docs/en/docs/tutorial/static-files.md 添加超链接。PR #10243@hungtsetse
  • 📝 添加外部链接:使用 FastAPI 包装一个 FastAPI 服务,添加 OpenTelemetry 追踪,并在 Grafana Tempo 中发送/显示追踪。PR #9440@softwarebloat
  • 📝 查看和改写 en/docs/contributing.md。PR #10480@nilslindemann
  • 📝 添加外部链接:使用 FastAPI 和 Evidently 进行 ML 服务和监控。PR #9701@mnrozhkov
  • 📝 在文档中改写措辞,从 "have in mind" 改为 "keep in mind"。PR #10376@malicious
  • 📝 添加外部链接:Jeny Sadadia 的演讲。PR #10265@JenySadadia
  • 📝 为 docs/tutorial/bigger-applications.md 添加位置信息。PR #10552@nilslindemann
  • ✏️ 修复 docs/en/docs/advanced/path-operation-advanced-configuration.md 中的 Pydantic 方法名。PR #10826@ahmedabdou14

翻译

  • 🌐 为 docs/docs/external-links.md 添加西班牙语翻译。PR #10933@pablocm83
  • 🌐 更新 docs/docs/tutorial/first-steps.mddocs/docs/tutorial/index.mddocs/docs/tutorial/path-params.mddocs/docs/tutorial/query-params.md 的韩语翻译。PR #4218@SnowSuno
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-with-yield.md 添加中文翻译。PR #10870@zhiquanchi
  • 🌐 为 docs/docs/deployment/concepts.md 添加中文翻译。PR #10282@xzmeng
  • 🌐 为 docs/docs/index.md 添加阿塞拜疆语翻译。PR #11047@aykhans
  • 🌐 为 docs/docs/tutorial/middleware.md 添加韩语翻译。PR #2829@JeongHyeongKim
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加德语翻译。PR #10313@nilslindemann
  • 🌐 为 docs/docs/tutorial/middleware.md 添加波斯语翻译。PR #9695@mojtabapaso
  • 🌐 更新 docs/docs/index.md 的波斯语翻译。PR #10216@theonlykingpin
  • 🌐 为 docs/docs/tutorial/body-fields.md 添加德语翻译。PR #10310@nilslindemann
  • 🌐 为 docs/docs/tutorial/body.md 添加德语翻译。PR #10295@nilslindemann
  • 🌐 为 docs/docs/tutorial/body-multiple-params.md 添加德语翻译。PR #10308@nilslindemann
  • 🌐 为 docs/docs/tutorial/security/get-current-user.md 添加日语翻译。PR #2681@sh0nk
  • 🌐 为 docs/docs/advanced/advanced-dependencies.md 添加中文翻译。PR #3798@jaystone776
  • 🌐 为 docs/docs/advanced/events.md 添加中文翻译。PR #3815@jaystone776
  • 🌐 为 docs/docs/advanced/behind-a-proxy.md 添加中文翻译。PR #3820@jaystone776
  • 🌐 为 docs/docs/advanced/testing-events.md 添加中文翻译。PR #3818@jaystone776
  • 🌐 为 docs/docs/advanced/testing-websockets.md 添加中文翻译。PR #3817@jaystone776
  • 🌐 为 docs/docs/advanced/testing-database.md 添加中文翻译。PR #3821@jaystone776
  • 🌐 为 docs/docs/deployment/deta.md 添加中文翻译。PR #3837@jaystone776
  • 🌐 为 docs/docs/history-design-future.md 添加中文翻译。PR #3832@jaystone776
  • 🌐 为 docs/docs/project-generation.md 添加中文翻译。PR #3831@jaystone776
  • 🌐 为 docs/docs/deployment/docker.md 添加中文翻译。PR #10296@xzmeng
  • 🌐 更新 docs/docs/features.md 的西班牙语翻译。PR #10884@pablocm83
  • 🌐 为 docs/docs/newsletter.md 添加西班牙语翻译。PR #10922@pablocm83
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加韩语翻译。PR #5910@junah201
  • :globe_with_meridians: 为 docs/docs/alternatives.md 添加土耳其语翻译。PR #10502@alperiox
  • 🌐 为 docs/docs/tutorial/dependencies/index.md 添加韩语翻译。PR #10989@KaniKim
  • 🌐 为 /docs/docs/tutorial/body.md 添加韩语翻译。PR #11000@KaniKim
  • 🌐 为 docs/docs/tutorial/schema-extra-example.md 添加葡萄牙语翻译。PR #4065@luccasmmg
  • 🌐 为 docs/docs/history-design-future.md 添加土耳其语翻译。PR #11012@hasansezertasan
  • 🌐 为 docs/docs/resources/index.md 添加土耳其语翻译。PR #11020@hasansezertasan
  • 🌐 为 docs/docs/how-to/index.md 添加土耳其语翻译。PR #11021@hasansezertasan
  • 🌐 为 docs/docs/tutorial/query-params.md 添加德语翻译。PR #10293@nilslindemann
  • 🌐 为 docs/docs/benchmarks.md 添加德语翻译。PR #10866@nilslindemann
  • 🌐 为 docs/docs/learn/index.md 添加土耳其语翻译。PR #11014@hasansezertasan
  • 🌐 为 docs/docs/tutorial/security/index.md 添加波斯语翻译。PR #9945@mojtabapaso
  • 🌐 为 docs/docs/help/index.md 添加土耳其语翻译。PR #11013@hasansezertasan
  • 🌐 为 docs/docs/about/index.md 添加土耳其语翻译。PR #11006@hasansezertasan
  • 🌐 更新 docs/docs/benchmarks.md 的土耳其语翻译。PR #11005@hasansezertasan
  • 🌐 为 docs/docs/index.md 添加意大利语翻译。PR #5233@matteospanio
  • 🌐 为 docs/docs/help/index.md 添加韩语翻译。PR #10983@KaniKim
  • 🌐 为 docs/docs/features.md 添加韩语翻译。PR #10976@KaniKim
  • 🌐 为 docs/docs/tutorial/security/get-current-user.md 添加韩语翻译。PR #5737@KdHyeon0661
  • 🌐 为 docs/docs/tutorial/security/first-steps.md 添加俄语翻译。PR #10541@AlertRED
  • 🌐 为 docs/docs/tutorial/handling-errors.md 添加俄语翻译。PR #10375@AlertRED
  • 🌐 为 docs/docs/tutorial/encoder.md 添加俄语翻译。PR #10374@AlertRED
  • 🌐 为 docs/docs/tutorial/body-updates.md 添加俄语翻译。PR #10373@AlertRED
  • 🌐 俄语翻译:更新了 fastapi-people.md。PR #10255@NiKuma0
  • 🌐 为 docs/docs/tutorial/security/index.md 添加日语翻译。PR #5798@3w36zj6
  • 🌐 为 docs/docs/advanced/generate-clients.md 添加德语翻译。PR #10725@nilslindemann
  • 🌐 为 docs/docs/advanced/openapi-webhooks.md 添加德语翻译。PR #10712@nilslindemann
  • 🌐 为 docs/docs/advanced/custom-response.md 添加德语翻译。PR #10624@nilslindemann
  • 🌐 为 docs/docs/advanced/additional-status-codes.md 添加德语翻译。PR #10617@nilslindemann
  • 🌐 为 docs/docs/tutorial/middleware.md 添加德语翻译。PR #10391@JohannesJungbluth
  • 🌐 为入门文档添加德语翻译。PR #10497@nilslindemann
  • 🌐 为 docs/docs/tutorial/encoder.md 添加日语翻译。PR #1955@SwftAlpc
  • 🌐 为 docs/docs/tutorial/extra-data-types.md 添加日语翻译。PR #1932@SwftAlpc
  • 🌐 为 docs/docs/async.md 添加土耳其语翻译。PR #5191@BilalAlpaslan
  • 🌐 为 docs/docs/project-generation.md 添加土耳其语翻译。PR #5192@BilalAlpaslan
  • 🌐 为 docs/docs/deployment/docker.md 添加韩语翻译。PR #5657@nearnear
  • 🌐 为 docs/docs/deployment/server-workers.md 添加韩语翻译。PR #4935@jujumilk3
  • 🌐 为 docs/docs/deployment/index.md 添加韩语翻译。PR #4561@jujumilk3
  • 🌐 为 docs/docs/tutorial/path-operation-configuration.md 添加韩语翻译。PR #3639@jungsu-kwon
  • 🌐 修改 zh - 繁体中文的描述。PR #10889@cherinyy
  • 🌐 为 docs/docs/tutorial/static-files.md 添加韩语翻译。PR #2957@jeesang7
  • 🌐 为 docs/docs/tutorial/response-model.md 添加韩语翻译。PR #2766@hard-coders
  • 🌐 为 docs/docs/tutorial/body-multiple-params.md 添加韩语翻译。PR #2461@PandaHun
  • 🌐 为 docs/docs/tutorial/query-params-str-validations.md 添加韩语翻译。PR #2415@hard-coders
  • 🌐 为 docs/docs/python-types.md 添加韩语翻译。PR #2267@jrim
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加韩语翻译。PR #2506@hard-coders
  • 🌐 为 docs/docs/learn/index.md 添加韩语翻译。PR #10977@KaniKim
  • 🌐 初始化繁体中文翻译。PR #10505@hsuanchi
  • ✏️ 调整 docs/docs/tutorial/index.md 的德语翻译。PR #10962@nilslindemann
  • ✏️ 修复 docs/docs/tutorial/path-params.md 中的拼写错误。PR #10758@2chanhaeng
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-with-yield.md 添加日语翻译。PR #1961@SwftAlpc
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 添加日语翻译。PR #1960@SwftAlpc
  • 🌐 为 docs/docs/tutorial/dependencies/sub-dependencies.md 添加日语翻译。PR #1959@SwftAlpc
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加日语翻译。PR #2668@tokusumi
  • 🌐 为 docs/docs/tutorial/dependencies/index.mddocs/docs/tutorial/dependencies/classes-as-dependencies.md 添加日语翻译。PR #1958@SwftAlpc
  • 🌐 为 docs/docs/tutorial/response-model.md 添加日语翻译。PR #1938@SwftAlpc
  • 🌐 为 docs/docs/tutorial/body-multiple-params.md 添加日语翻译。PR #1903@SwftAlpc
  • 🌐 为 docs/docs/tutorial/path-params-numeric-validations.md 添加日语翻译。PR #1902@SwftAlpc
  • 🌐 为 docs/docs/python-types.md 添加日语翻译。PR #1899@SwftAlpc
  • 🌐 为 docs/docs/tutorial/handling-errors.md 添加日语翻译。PR #1953@SwftAlpc
  • 🌐 为 docs/docs/tutorial/response-status-code.md 添加日语翻译。PR #1942@SwftAlpc
  • 🌐 为 docs/docs/tutorial/extra-models.md 添加日语翻译。PR #1941@SwftAlpc
  • 🌐 为 docs/docs/tutorial/schema-extra-example.md 添加日语翻译。PR #1931@SwftAlpc
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加日语翻译。PR #1930@SwftAlpc
  • 🌐 为 docs/docs/tutorial/body-fields.md 添加日语翻译。PR #1923@SwftAlpc
  • 🌐 为 docs/docs/tutorial/index.md 添加德语翻译。PR #9502@fhabers21
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加德语翻译。PR #10566@nilslindemann
  • ✏️ 修复 docs/docs/index.md 中的拼写错误。PR #10672@Delitel-WEB
  • ✏️ 修复 docs/docs/tutorial/extra-data-types.md 中的拼写错误。PR #10727@HiemalBeryl
  • 🌐 为 docs/docs/tutorial/dependencies/classes-as-dependencies.md 添加俄语翻译。PR #10410@AlertRED

内部

  • 👥 更新 FastAPI People。PR #11074@tiangolo
  • 🔧 更新赞助商:添加 Coherence。PR #11066@tiangolo
  • 👷 升级 GitHub Action issue-manager。PR #11056@tiangolo
  • 🍱 更新赞助商:TalkPython badge。PR #11052@tiangolo
  • 🔧 更新赞助商:TalkPython badge image。PR #11048@tiangolo
  • 🔧 更新赞助商,移除 Deta。PR #11041@tiangolo
  • 💄 修复导致 RTL 语言崩溃的 CSS(由之前的 RTL PR 错误引入)。PR #11039@tiangolo
  • 🔧 将意大利语添加到 mkdocs.yml。PR #11016@alejsdev
  • 🔨 在 CI 中验证 mkdocs.yml 语言,更新 docs.py。PR #11009@tiangolo
  • 🔧 更新 label-approved.yml 中的配置,以接受有 1 位审稿人的翻译。PR #11007@alejsdev
  • 👷 在 GitHub Action issue manager 中添加 changes-requested 处理。PR #10971@tiangolo
  • 🔧 在 dependabot 更新中分组依赖。PR #10952@Kludex
  • ⬆ 将 actions/setup-python 从 4 升级到 5。PR #10764@dependabot[bot]
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.10 升级到 1.8.11。PR #10731@dependabot[bot]
  • ⬆ 将 dawidd6/action-download-artifact 从 2.28.0 升级到 3.0.0。PR #10777@dependabot[bot]
  • 🔧 支持像 zh-hant 这样代码名称更长的语言的翻译。PR #10950@tiangolo

0.109.0

功能

  • ✨ 添加对 Python 3.12 的支持。PR #10666@Jamim

升级

  • ⬆️ 将 Starlette 升级到 >=0.35.0,<0.36.0。PR #10938@tiangolo

文档

  • ✏️ 修复 docs/en/docs/alternatives.md 中的拼写错误。PR #10931@s111d
  • 📝 在 docs_src/security/tutorial007 代码示例中将 email 替换为 username。PR #10649@nilslindemann
  • 📝 添加 VS Code 教程链接。PR #10592@nilslindemann
  • 📝 添加关于 Pydantic v2 新的 .model_dump() 的说明。PR #10929@tiangolo
  • 📝 修复 docs/en/docs/tutorial/sql-databases.md 中的失效链接。PR #10765@HurSungYun
  • 📝 添加外部链接:FastAPI 应用监控变得容易。PR #10917@tiangolo
  • ✨ 为文档翻译生成自动语言名称。PR #5354@jakul
  • ✏️ 修复 docs/en/docs/alternatives.mddocs/en/docs/tutorial/dependencies/index.md 中的拼写错误。PR #10906@s111d
  • ✏️ 修复 docs/en/docs/tutorial/dependencies/dependencies-with-yield.md 中的拼写错误。PR #10834@Molkree
  • 📝 添加文章:“使用 FastAPI 构建 RESTful API:包含安全的注册和登录功能”。PR #9733@dxphilo
  • 📝 添加关于 lifecycle 事件与 AsyncClient 的警告。PR #4167@andrew-chang-dewitt
  • ✏️ 修复 /docs/reference/exceptions.md/en/docs/reference/status.md 中的拼写错误。PR #10809@clarencepenz
  • ✏️ 修复 openapi-callbacks.md 中的拼写错误。PR #10673@kayjan
  • ✏️ 修复 fastapi/routing.py 中的拼写错误。PR #10520@sepsh
  • 📝 替换测试中用户已存在错误情况下的 HTTP 返回码。PR #4482@TristanMarion
  • 📝 添加 FastAPI & Supabase 的博客。PR #6018@theinfosecguy
  • 📝 更新 SQLAlchemy 与 FastAPI SQL 数据库的示例源文件。PR #9508@s-mustafa
  • 📝 更新请求体文档中的代码示例,将 create_item 改为 update_item(在适当时)。PR #5913@OttoAndrey
  • ✏️ 修复 yield 依赖项示例源文件中的拼写错误。PR #10847@tiangolo

翻译

  • 🌐 为 docs/docs/index.md 添加孟加拉语翻译。PR #9177@Fahad-Md-Kamal
  • ✏️ 在多个语言的 index.md 中更新 Python 版本。PR #10711@tamago3keran
  • 🌐 为 docs/docs/tutorial/request-forms-and-files.md 添加俄语翻译。PR #10347@AlertRED
  • 🌐 为 docs/docs/index.md 添加乌克兰语翻译。PR #10362@rostik1410
  • ✏️ 更新 docs/docs/index.md 中的 Python 版本。PR #10680@Eeap
  • 🌐 为 docs/docs/features.md 添加波斯语翻译。PR #5887@amirilf
  • 🌐 为 docs/docs/advanced/additional-responses.md 添加中文翻译。PR #10325@ShuibeiC
  • 🌐 修复 docs/docs/tutorial/background-tasks.mddocs/docs/tutorial/body-nested-models.mddocs/docs/tutorial/debugging.mddocs/docs/tutorial/testing.md 的俄语翻译拼写错误。PR #10311@AlertRED
  • 🌐 为 docs/docs/tutorial/request-files.md 添加俄语翻译。PR #10332@AlertRED
  • 🌐 为 docs/docs/deployment/server-workers.md 添加中文翻译。PR #10292@xzmeng
  • 🌐 为 docs/docs/deployment/cloud.md 添加中文翻译。PR #10291@xzmeng
  • 🌐 为 docs/docs/deployment/manually.md 添加中文翻译。PR #10279@xzmeng
  • 🌐 为 docs/docs/deployment/https.md 添加中文翻译。PR #10277@xzmeng
  • 🌐 为 docs/docs/deployment/index.md 添加中文翻译。PR #10275 by @xzmeng
  • 🌐 为 docs/docs/tutorial/first-steps.md 添加德语翻译。PR #9530 by @fhabers21
  • 🌐 更新 docs/docs/index.md 的土耳其语翻译。PR #10444 by @hasansezertasan
  • 🌐 为 docs/docs/learn/index.md 添加中文翻译。PR #10479 by @KAZAMA-DREAM
  • 🌐 为 docs/docs/learn/index.md 添加俄语翻译。PR #10539 by @AlertRED
  • 🌐 更新 docs/docs/tutorial/sql-databases.md 中的 SQLAlchemy 说明的中文翻译。PR #9712 by @Royc30ne
  • 🌐 为 docs/docs/external-links.md 添加土耳其语翻译。PR #10549 by @hasansezertasan
  • 🌐 为 docs/docs/learn/index.md 添加西班牙语翻译。PR #10885 by @pablocm83
  • 🌐 为 docs/docs/tutorial/body-fields.md 添加乌克兰语翻译。PR #10670 by @ArtemKhymenko
  • 🌐 为 /docs/docs/index.md 添加匈牙利语翻译。PR #10812 by @takacs
  • 🌐 为 docs/docs/newsletter.md 添加土耳其语翻译。PR #10550 by @hasansezertasan
  • 🌐 为 docs/docs/help/index.md 添加西班牙语翻译。PR #10907 by @pablocm83
  • 🌐 为 docs/docs/about/index.md 添加西班牙语翻译。PR #10908 by @pablocm83
  • 🌐 为 docs/docs/resources/index.md 添加西班牙语翻译。PR #10909 by @pablocm83

内部

0.108.0

升级

  • ⬆️ 将 Starlette 升级到 >=0.29.0,<0.33.0,更新文档和模板的使用,以适应 Starlette 的新参数。移除 AnyIO 的固定版本 >=3.7.1,<4.0.0,增加对 AnyIO 4.x.x 的支持。PR #10846 by @tiangolo

0.107.0

升级

文档

  • 📝 添加文档:用于更新 OpenAPI 以生成客户端的 Node.js 脚本替代方案。PR #10845 by @alejsdev
  • 📝 重构贡献页面中的文档部分。PR #10844 by @alejsdev

0.106.0

重大更改

不再支持在后台任务中使用 yield 从依赖项中获取资源。

此更改支持新功能,请阅读下文。🤓

yield 的依赖项、HTTPException 和后台任务

yield 的依赖项现在可以在 yield 之后引发 HTTPException 和其他异常。🎉

在此处阅读新文档:yieldHTTPException 的依赖项

from fastapi import Depends, FastAPI, HTTPException
from typing_extensions import Annotated

app = FastAPI()


data = {
    "plumbus": {"description": "Freshly pickled plumbus", "owner": "Morty"},
    "portal-gun": {"description": "Gun to create portals", "owner": "Rick"},
}


class OwnerError(Exception):
    pass


def get_username():
    try:
        yield "Rick"
    except OwnerError as e:
        raise HTTPException(status_code=400, detail=f"Owner error: {e}")


@app.get("/items/{item_id}")
def get_item(item_id: str, username: Annotated[str, Depends(get_username)]):
    if item_id not in data:
        raise HTTPException(status_code=404, detail="Item not found")
    item = data[item_id]
    if item["owner"] != username:
        raise OwnerError(username)
    return item

在 FastAPI 0.106.0 之前,在 yield 之后引发异常是不可能的,带 yield 的依赖项中的退出代码是在响应发送之后执行的,因此 异常处理程序 已经运行。

此设计主要是为了允许在后台任务中使用由依赖项 "yield" 的相同对象,因为退出代码将在后台任务完成后执行。

然而,由于这会延长持有依赖项(例如数据库连接)的资源,同时等待响应通过网络传输,因此在 FastAPI 0.106.0 中对此进行了更改。

此外,后台任务通常是一组独立逻辑,应单独处理,并具有自己的资源(例如,自己的数据库连接)。

如果您过去依赖于此行为,现在应在后台任务本身内部创建后台任务的资源,并且仅在内部使用不依赖于带 yield 的依赖项的资源的数据。

例如,您将不会使用相同的数据库会话,而是会在后台任务内部创建一个新的数据库会话,并使用此新会话通过数据库获取对象。然后,您不会将数据库中的对象作为参数传递给后台任务函数,而是会传递该对象的 ID,然后在后台任务函数内部再次获取该对象。

FastAPI 0.106.0 之前的执行顺序如下所示

时间从上到下流动。每一列代表一个交互或执行代码的部分。

sequenceDiagram

participant client as Client
participant handler as Exception handler
participant dep as Dep with yield
participant operation as Path Operation
participant tasks as Background tasks

    Note over client,tasks: Can raise exception for dependency, handled after response is sent
    Note over client,operation: Can raise HTTPException and can change the response
    client ->> dep: Start request
    Note over dep: Run code up to yield
    opt raise
        dep -->> handler: Raise HTTPException
        handler -->> client: HTTP error response
        dep -->> dep: Raise other exception
    end
    dep ->> operation: Run dependency, e.g. DB session
    opt raise
        operation -->> dep: Raise HTTPException
        dep -->> handler: Auto forward exception
        handler -->> client: HTTP error response
        operation -->> dep: Raise other exception
        dep -->> handler: Auto forward exception
    end
    operation ->> client: Return response to client
    Note over client,operation: Response is already sent, can't change it anymore
    opt Tasks
        operation -->> tasks: Send background tasks
    end
    opt Raise other exception
        tasks -->> dep: Raise other exception
    end
    Note over dep: After yield
    opt Handle other exception
        dep -->> dep: Handle exception, can't change response. E.g. close DB session.
    end

新的执行流程可以在文档中找到:yield 的依赖项的执行

功能

  • ✨ 支持在带 yield 的依赖项的退出代码中引发异常(包括 HTTPException),但不支持在后台任务中引发。PR #10831 by @tiangolo

内部

0.105.0

功能

  • ✨ 支持多个 Annotated 注释,例如 Annotated[str, Field(), Query()]。PR #10773 by @tiangolo

重构

文档

  • 📝 调整生成客户端的默认建议配置。PR #10736 by @tiangolo

内部

0.104.1

修复

  • 📌 暂时将 Swagger UI 版本固定到 5.9.0,以解决 5.9.1 中导致其崩溃的 bug。PR #10529 by @alejandraklachquin
    • 这并不是 FastAPI 的 bug,而是 Swagger UI 的 bug,但固定版本将在 Swagger UI 方面 找到解决方案时生效。

文档

  • 📝 更新 external-links 的数据结构和渲染。PR #10495 by @tiangolo
  • ✏️ 在 docs/en/docs/tutorial/metadata.md 中修正 SPDX 许可证标识符链接。PR #10433 by @worldworm
  • 📝 在 docs/en/docs/tutorial/path-params.md 中更新 Pydantic v1 的示例验证错误,以匹配 Pydantic v2。PR #10043 by @giuliowaitforitdavide
  • ✏️ 修正 emoji 文档和一些源示例中的拼写错误。PR #10438 by @afuetterer
  • ✏️ 修正 docs/en/docs/reference/dependencies.md 中的拼写错误。PR #10465 by @suravshresth
  • ✏️ 修正 docs/en/docs/tutorial/body-nested-models.md 中的拼写错误和措辞。PR #10468 by @yogabonito
  • 📝 更新文档,在 docs/en/docs/tutorial/query-params-str-validations.md 中移除对已移除的 pydantic.Required 的引用。PR #10469 by @yogabonito
  • ✏️ 修正 docs/en/docs/reference/index.md 中的拼写错误。PR #10467 by @tarsil
  • 🔥 移除不必要的重复文档字符串。PR #10484 by @tiangolo

内部

  • ✏️ 更新 Pydantic 链接到 dotenv 支持。PR #10511 by @White-Mask
  • ✏️ 在 docs/en/docs/async.mddocs/docs/async.md 中更新链接,使其成为相对链接。PR #10498 by @hasnatsajid
  • ✏️ 修正 docs/docs/async.md 中的链接。PR #10507 by @hasnatsajid
  • ✏️ 修正 docs/docs/index.md 中的拼写错误,Python 3.8。PR #10521 by @kerriop
  • ⬆ 将 pillow 从 9.5.0 升级到 10.1.0。PR #10446 by @dependabot[bot]
  • ⬆ 将 mkdocs-material 的要求从 <9.0.0,>=8.1.4 更新为 >=8.1.4,<10.0.0。PR #5862 by @dependabot[bot]
  • ⬆ 将 mkdocs-material 从 9.1.21 升级到 9.4.7。PR #10545 by @dependabot[bot]
  • 👷 仅当 secrets 可用时,才为 Dependabot 安装 MkDocs Material Insiders。PR #10544 by @tiangolo
  • 🔧 更新赞助商徽章,Databento。PR #10519 by @tiangolo
  • 👷 采用 Ruff 格式化。PR #10517 by @tiangolo
  • 🔧 添加 CITATION.cff 文件用于学术引用。PR #10496 by @tiangolo
  • 🐛 修复 hook 中 MKDocs 主题 lang 的覆盖问题。PR #10490 by @tiangolo
  • 🔥 关闭 Gitter 聊天。问题应转到 GitHub Discussions,免费讨论转到 Discord。PR #10485 by @tiangolo

0.104.0

功能

  • ✨ 添加 PEP 727 的参考(代码 API)文档,添加自定义文档字符串的子类以用于 BackgroundTasks,重构文档结构。PR #10392 by @tiangolo。新文档位于 FastAPI Reference - Code API

升级

  • ⬆️ 放弃对 Python 3.7 的支持,要求 Python 3.8 或更高版本。PR #10442 by @tiangolo

内部

0.103.2

重构

  • ⬆️ 升级与 Pydantic v2.4 的兼容性,新的重命名函数和具有默认值的 JSON Schema 输入/输出模型。PR #10344 by @tiangolo

翻译

  • 🌐 为 docs/docs/tutorial/extra-data-types.md 添加乌克兰语翻译。PR #10132 by @ArtemKhymenko
  • 🌐 修正法语翻译中的拼写错误,涉及 docs/docs/advanced/path-operation-advanced-configuration.mddocs/docs/alternatives.mddocs/docs/async.mddocs/docs/features.mddocs/docs/help-fastapi.mddocs/docs/index.mddocs/docs/python-types.mddocs/docs/tutorial/body.mddocs/docs/tutorial/first-steps.mddocs/docs/tutorial/query-params.md。PR #10154 by @s-rigaud
  • 🌐 为 docs/docs/async.md 添加中文翻译。PR #5591 by @mkdir700
  • 🌐 更新 docs/tutorial/security/simple-oauth2.md 的中文翻译。PR #3844 by @jaystone776
  • 🌐 为 docs/docs/deployment/cloud.md 添加韩语翻译。PR #10191 by @Sion99
  • 🌐 为 docs/docs/deployment/https.md 添加日语翻译。PR #10298 by @tamtam-fitness
  • 🌐 修正俄语翻译中 docs/docs/tutorial/body-fields.md 的拼写错误。PR #10224 by @AlertRED
  • 🌐 为 docs/docs/help-fastapi.md 添加波兰语翻译。PR #10121 by @romabozhanovgithub
  • 🌐 为 docs/docs/tutorial/header-params.md 添加俄语翻译。PR #10226 by @AlertRED
  • 🌐 为 docs/docs/deployment/versions.md 添加中文翻译。PR #10276 by @xzmeng

内部

  • 🔧 更新赞助商,移除 Flint。PR #10349 by @tiangolo
  • 🔧 重命名标签 "awaiting review" 为 "awaiting-review",以简化搜索查询。PR #10343 by @tiangolo
  • 🔧 更新赞助商,重新启用 Svix(撤销 #10228)。PR #10253 by @tiangolo
  • 🔧 更新赞助商,移除 Svix。PR #10228 by @tiangolo
  • 🔧 更新赞助商,添加 Bump.sh。PR #10227 by @tiangolo

0.103.1

修复

  • 📌 将 AnyIO 固定到 < 4.0.0,以处理升级到 Starlette 0.31.1 时的不兼容性。PR #10194 by @tiangolo

文档

  • ✏️ 修正文档中的验证参数名称,从 regex 改为 pattern。PR #10085 by @pablodorrio
  • ✏️ 修正 docs/en/docs/deployment/server-workers.md 中的缩进格式。PR #10066 by @tamtam-fitness
  • ✏️ 修正教程中 Pydantic 示例关于 Python 类型的部分。PR #9961 by @rahulsalgare
  • ✏️ 修正 docs/en/docs/tutorial/extra-data-types.md 中 Pydantic 文档的链接。PR #10155 by @hasnatsajid
  • ✏️ 修正 docs/en/docs/tutorial/handling-errors.md 中的拼写错误。PR #10170 by @poupapaa
  • ✏️ 修正 docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 中的拼写错误。PR #10172 by @ragul-kachiappan

翻译

  • 🌐 移除 docs/docs/tutorial/path-params.md 翻译中的重复行。PR #10126 by @LecoOliveira
  • 🌐 为 docs/docs/index.md 添加约鲁巴语翻译。PR #10033 by @AfolabiOlaoluwa
  • 🌐 为 docs/docs/python-types.md 添加乌克兰语翻译。PR #10080 by @rostik1410
  • 🌐 为 docs/docs/tutorial/first-steps.mddocs/docs/tutorial/index.md 添加越南语翻译。PR #10088 by @magiskboy
  • 🌐 为 docs/docs/alternatives.md 添加乌克兰语翻译。PR #10060 by @whysage
  • 🌐 为 docs/docs/tutorial/index.md 添加乌克兰语翻译。PR #10079 by @rostik1410
  • ✏️ 修正 docs/en/docs/how-to/separate-openapi-schemas.mddocs/en/docs/tutorial/schema-extra-example.md 中的拼写错误。PR #10189 by @xzmeng
  • 🌐 为 docs/docs/advanced/generate-clients.md 添加中文翻译。PR #9883 by @funny-cat-happy

重构

  • ✏️ 修正 fastapi/applications.py 中注释的拼写错误。PR #10045 by @AhsanSheraz
  • ✅ 为 OpenAPI 示例添加缺失的测试,它在覆盖率中是缺失的。PR #10188 by @tiangolo

内部

0.103.0

功能

文档

  • 📝 在文档中添加关于按 FastAPI 版本区分输入和输出模式的说明。PR #10150 by @tiangolo

0.102.0

功能

  • ✨ 使用 Pydantic v2 的 separate_input_output_schemas=False 添加对禁用 OpenAPI 中输入和输出 JSON Schema 分隔的支持。PR #10145 by @tiangolo

重构

  • ♻️ 重构测试以兼容新的 Pydantic 2.2.1。PR #10115 by @tiangolo

文档

  • 📝 添加新的文档部分,如何操作 - 示例,将不需要每个人都阅读的文档移动到如何操作部分。PR #10114 by @tiangolo
  • 📝 更新高级文档,添加赞助商课程链接。PR #10113 by @tiangolo
  • 📝 更新生成客户端的文档。PR #10112 by @tiangolo
  • 📝 调整 MkDocs 并添加重定向。PR #10111 by @tiangolo
  • 📝 重构云服务提供商的文档,包含赞助商链接。PR #10110 by @tiangolo

内部

0.101.1

修复

  • ✨ 添加 ResponseValidationError 的可打印详细信息,用于在服务器错误日志中显示。PR #10078 by @tiangolo

重构

  • ✏️ 修正 fastapi/params.py 中弃用警告的拼写错误。PR #9854 by @russbiggs
  • ✏️ 修正 fastapi/concurrency.pyfastapi/routing.py 中内部代码注释的拼写错误。PR #9590 by @ElliottLarsen

文档

  • ✏️ 修正发布说明中的拼写错误。PR #9835 by @francisbergin
  • 📝 添加外部文章:使用 FaunaDB 和 FastAPI 构建 SMS 垃圾邮件分类器无服务器数据库。PR #9847 by @adejumoridwan
  • 📝 修正 docs/en/docs/contributing.md 中的拼写错误。PR #9878 by @VicenteMerino
  • 📝 修正 docs/en/docs/tutorial/bigger-applications.md 中的代码高亮。PR #9806 by @theonlykingpin

翻译

  • 🌐 为 docs/docs/deployment/concepts.md 添加日语翻译。PR #10062 by @tamtam-fitness
  • 🌐 为 docs/docs/deployment/server-workers.md 添加日语翻译。PR #10064 by @tamtam-fitness
  • 🌐 更新 docs/docs/deployment/docker.md 的日语翻译。PR #10073 by @tamtam-fitness
  • 🌐 为 docs/docs/fastapi-people.md 添加乌克兰语翻译。PR #10059 by @rostik1410
  • 🌐 为 docs/docs/tutorial/cookie-params.md 添加乌克兰语翻译。PR #10032 by @rostik1410
  • 🌐 为 docs/docs/deployment/docker.md 添加俄语翻译。PR #9971 by @Xewus
  • 🌐 为 docs/docs/python-types.md 添加越南语翻译。PR #10047 by @magiskboy
  • 🌐 为 docs/docs/tutorial/dependencies/global-dependencies.md 添加俄语翻译。PR #9970 by @dudyaosuplayer
  • 🌐 为 docs/docs/benchmarks.md 添加乌尔都语翻译。PR #9974 by @AhsanSheraz

内部

0.101.0

功能

  • ✨ 启用 Pydantic 的响应序列化模式,添加对 Pydantic 的 computed_field 的支持,改进 OpenAPI 响应模型,正确的必需属性,更好的生成客户端。PR #10011 by @tiangolo

重构

  • ✅ 修复与 pydantic 2.1.1 的兼容性测试。PR #9943 by @dmontagu
  • ✅ 修复 Windows 下 jsonable_encoder 的测试错误。PR #9840 by @iudeen

升级

  • 📌 不允许 Pydantic 2.1.0,因为它会中断(需要 2.1.1)。PR #10012@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/tutorial/security/index.md 添加俄语翻译。PR #9963@eVery1337 提交。
  • 🌐 移除关于缺少翻译的越南语注释。PR #9957@tiangolo 提交。

内部

  • 👷 添加 GitHub Actions 步骤 dump context 以调试外部失败。PR #10008@tiangolo 提交。
  • 🔧 修复后恢复 MkDocs Material 钉扎。PR #10001@tiangolo 提交。
  • 🔧 更新问题模板,要求提供 Pydantic 版本。PR #10000@tiangolo 提交。
  • 📍 更新 MkDocs Material 依赖。PR #9986@tiangolo 提交。
  • 👥 更新 FastAPI People。PR #9999@tiangolo 提交。
  • 🐳 更新 Dockerfile 中的兼容版本,以便稍后升级。PR #9998@tiangolo 提交。
  • ➕ 将 pydantic-settings 添加到 FastAPI People 依赖中。PR #9988@tiangolo 提交。
  • ♻️ 使用新的 Pydantic 更新 FastAPI People 逻辑。PR #9985@tiangolo 提交。
  • 🍱 更新赞助商,Fern 徽章。PR #9982@tiangolo 提交。
  • 👷 将文档部署到 Cloudflare Pages。PR #9978@tiangolo 提交。
  • 🔧 更新赞助商 Fern。PR #9979@tiangolo 提交。
  • 👷 使用 Tmate 更新 CI 调试模式。PR #9977@tiangolo 提交。

0.100.1

修复

  • 🐛 将 MultHostUrl 替换为 AnyUrl,以兼容旧版 Pydantic v1。PR #9852@Kludex 提交。

文档

  • 📝 更新自托管 Swagger UI 的链接,指向 v5,用于 OpenAPI 31.0。PR #9834@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/tutorial/body.md 添加乌克兰语翻译。PR #4574@ss-o-furda 提交。
  • 🌐 为 docs/docs/features.mddocs/docs/index.md 添加越南语翻译。PR #3006@magiskboy 提交。
  • 🌐 为 docs/docs/async.md 添加韩语翻译。PR #4179@NinaHwang 提交。
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加中文翻译。PR #9812@wdh99 提交。
  • 🌐 为 docs/docs/tutorial/query-params-str-validations.md 添加法语翻译。PR #4075@Smlep 提交。
  • 🌐 为 docs/docs/tutorial/index.md 添加法语翻译。PR #2234@JulianMaurin 提交。
  • 🌐 为 docs/docs/contributing.md 添加法语翻译。PR #2132@JulianMaurin 提交。
  • 🌐 为 docs/docs/benchmarks.md 添加法语翻译。PR #2155@clemsau 提交。
  • 🌐 使用新的源文件更新中文翻译。PR #9738@mahone3297 提交。
  • 🌐 为 docs/docs/tutorial/request-forms.md 添加俄语翻译。PR #9841@dedkot01 提交。
  • 🌐 更新 docs/docs/tutorial/handling-errors.md 的中文翻译。PR #9485@Creat55 提交。

内部

0.100.0

✨ 支持 Pydantic v2

Pydantic 版本 2 在 核心 部分使用 Rust 重写,并包含许多改进和新功能,例如:

  • 改进了边界情况下的准确性
  • 更安全的类型。
  • 更好的性能更低的能耗
  • 更好的可扩展性
  • 等等。

...所有这些都保持了相同的 Python API。在大多数情况下,对于简单的模型,您只需升级 Pydantic 版本即可获得所有好处。 🚀

在某些情况下,对于纯数据验证和处理,您可以获得20 倍或更高的性能提升。这意味着 2000% 或更高。🤯

当您使用 FastAPI 时,还有更多工作要做,例如处理请求和响应,处理依赖项,执行您自己的代码,特别是等待网络。但您可能仍然会从升级中获得一些不错的性能提升。

此版本关注的是与 Pydantic v1 和 v2 的兼容性,以确保您当前的应用程序继续正常运行。之后将更侧重于重构、准确性、代码改进,然后是性能改进。一些第三方早期 Beta 测试者在 FastAPI 的 Beta 版本上进行了基准测试,报告了2 倍 - 3 倍的改进。虽然这不是官方基准测试,我也没亲自验证过,但这仍然是个好兆头。

迁移

查看 Pydantic 迁移指南

对于 Pydantic 模型中需要更改的部分,Pydantic 团队构建了 bump-pydantic

这是一个命令行工具,可以自动处理您的代码并更新大部分内容。请确保在运行之前将您的代码保存在 git 中,并仔细审查每次更改是否正确,然后再提交。

Pydantic v1

此版本的 FastAPI 仍然支持 Pydantic v1。尽管 Pydantic v1 最终会被弃用,但它仍将支持一段时间。

这意味着您可以安装新的 Pydantic v2,如果出现问题,可以在修复问题期间安装 Pydantic v1,同时保持最新的 FastAPI。

我们为 Pydantic v1 和 v2 都提供了测试,并且测试覆盖率保持在100%

变更

  • Pydantic Field() 支持了新的参数字段,用于

    • Path()
    • Query()
    • Header()
    • Cookie()
    • Body()
    • Form()
    • File()
  • 新的参数字段有:

    • default_factory
    • alias_priority
    • validation_alias
    • serialization_alias
    • discriminator
    • strict
    • multiple_of
    • allow_inf_nan
    • max_digits
    • decimal_places
    • json_schema_extra

...您可以在 Pydantic 文档中阅读更多信息。

  • 参数 regex 已弃用,并被 pattern 取代。
  • 新的 Pydantic 模型使用改进和简化的 model_config 属性,该属性接受一个简单的 dict 而不是内部类 Config 来进行配置。
  • 内部类 Config 的属性 schema_extra 已被新的 model_config dict 中的键 json_schema_extra 取代。
  • 当您安装 "fastapi[all]" 时,它现在还包括:
  • 现在 Pydantic Settings 是一个额外的可选包(包含在 "fastapi[all]" 中)。要使用设置,您现在应该导入 from pydantic_settings import BaseSettings,而不是直接从 pydantic 导入。

  • PR #9816@tiangolo 提交,包含了在 Beta 分支 (main-pv2) 上完成的所有工作(分布在多个 PR 中)。

0.99.1

修复

  • 🐛 修复 JSON Schema 接受布尔值作为有效的 JSON Schemas,例如 additionalProperties: false。PR #9781@tiangolo 提交。

文档

  • 📝 更新源示例以使用新的 JSON Schema 示例字段。PR #9776@tiangolo 提交。

0.99.0

特性

  • ✨ 添加对 OpenAPI 3.1.0 的支持。PR #9770@tiangolo 提交。

    • 新增对文档Webhook的支持,请在此处阅读新文档:高级用户指南:OpenAPI Webhooks
    • 升级 OpenAPI 3.1.0,使用 JSON Schema 2020-12。
    • 升级 Swagger UI 至版本 5.x.x,支持 OpenAPI 3.1.0。
    • 更新了 Query()Cookie()Body() 等的 examples 字段,基于最新的 JSON Schema 和 OpenAPI。现在它接受一个示例列表,并直接包含在 JSON Schema 中,而不是外部。阅读更新的文档了解更多信息(包括历史技术细节):教程:声明请求示例数据
  • ✨ 在 jsonable_encoder 中添加对 deque 对象及其子对象#9433@cranium 提交。

文档

  • 📝 修复 FastAPI 及相关通讯的表单。PR #9749@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/advanced/sub-applications.md 添加波斯语翻译。PR #9692@mojtabapaso 提交。
  • 🌐 为 docs/docs/tutorial/response-model.md 添加俄语翻译。PR #9675@glsglsgls 提交。

内部

  • 🔨 在本地实时开发中启用 MkDocs Material 中的行号,以简化代码高亮。PR #9769@tiangolo 提交。
  • ⬆ 将 httpx 要求从 <0.24.0,>=0.23.0 升级到 >=0.23.0,<0.25.0。PR #9724@dependabot[bot] 提交。
  • ⬆ 将 mkdocs-material 从 9.1.16 升级到 9.1.17。PR #9746@dependabot[bot] 提交。
  • 🔥 移除缺失翻译的占位页面,不再需要。PR #9751@tiangolo 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #9259@pre-commit-ci[bot] 提交。
  • ✨ 添加 Material for MkDocs Insiders 功能和卡片。PR #9748@tiangolo 提交。
  • 🔥 移除没有翻译的语言。PR #9743@tiangolo 提交。
  • ✨ 重构文档构建脚本,使用 MkDocs hooks,简化(移除)语言配置。PR #9742@tiangolo 提交。
  • 🔨 添加 MkDocs hook,该 hook 根据第一个索引文件重命名节。PR #9737@tiangolo 提交。
  • 👷 仅在主仓库运行 cron 作业,不在 fork 中运行,以避免因缺少 token 而产生的错误通知。PR #9735@tiangolo 提交。
  • 🔧 更新其他语言的 MkDocs。PR #9734@tiangolo 提交。
  • 👷 重构 Docs CI,使用多工作节点以动态矩阵运行,以优化速度。PR #9732@tiangolo 提交。
  • 🔥 移除旧的内部 GitHub Action watch-previews,不再需要。PR #9730@tiangolo 提交。
  • ⬆️ 升级 MkDocs 和 MkDocs Material。PR #9729@tiangolo 提交。
  • 👷 仅在 docs 更改时构建和部署文档。PR #9728@tiangolo 提交。

0.98.0

特性

  • ✨ 允许在 FastAPI 应用级别禁用 redirect_slashes。PR #3432@cyberlis 提交。

文档

  • 📝 更新关于 Pydantic 内部使用 ujson 的文档。PR #5804@mvasilkov 提交。
  • ✏️ 在 docs/en/docs/tutorial/debugging.md 中修改措辞。PR #9581@ivan-abc 提交。
  • 📝 添加德语博客文章(领域驱动设计与 Python 和 FastAPI)。PR #9261@msander 提交。
  • ✏️ 在 docs/en/docs/tutorial/security/index.md 中调整措辞。PR #9561@jyothish-mohan 提交。
  • 📝 在 docs/en/docs/tutorial/schema-extra-example.md 中更新 Annotated 的注释。PR #9620@Alexandrhub 提交。
  • ✏️ 在 docs/en/docs/tutorial/query-params-str-validations.md 中修复拼写错误 Annotation -> Annotated。PR #9625@mccricardo 提交。
  • 📝 在文档中使用内存数据库测试 SQL。PR #1223@HarshaLaxman 提交。

翻译

  • 🌐 为 docs/docs/tutorial/metadata.md 添加俄语翻译。PR #9681@TabarakoAkula 提交。
  • 🌐 修复西班牙语翻译中 docs/docs/tutorial/first-steps.md 的拼写错误。PR #9571@lilidl-nft 提交。
  • 🌐 为 docs/tutorial/path-operation-configuration.md 添加俄语翻译。PR #9696@TabarakoAkula 提交。
  • 🌐 为 docs/docs/advanced/security/index.md 添加中文翻译。PR #9666@lordqyxz 提交。
  • 🌐 为 docs/docs/advanced/settings.md 添加中文翻译。PR #9652@ChoyeonChern 提交。
  • 🌐 为 docs/docs/advanced/websockets.md 添加中文翻译。PR #9651@ChoyeonChern 提交。
  • 🌐 为 docs/docs/tutorial/testing.md 添加中文翻译。PR #9641@wdh99 提交。
  • 🌐 为 docs/tutorial/extra-models.md 添加俄语翻译。PR #9619@ivan-abc 提交。
  • 🌐 为 docs/tutorial/cors.md 添加俄语翻译。PR #9608@ivan-abc 提交。
  • 🌐 为 docs/docs/features.md 添加波兰语翻译。PR #5348@mbroton 提交。
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加俄语翻译。PR #9605@Alexandrhub 提交。

内部

  • ⬆ 将 ruff 从 0.0.272 升级到 0.0.275。PR #9721@dependabot[bot] 提交。
  • ⬆ 将 uvicorn[standard] 要求从 <0.21.0,>=0.12.0 升级到 >=0.12.0,<0.23.0。PR #9463@dependabot[bot] 提交。
  • ⬆ 将 mypy 从 1.3.0 升级到 1.4.0。PR #9719@dependabot[bot] 提交。
  • ⬆ 将 pre-commit 要求从 <3.0.0,>=2.17.0 升级到 >=2.17.0,<4.0.0。PR #9251@dependabot[bot] 提交。
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.5 升级到 1.8.6。PR #9482@dependabot[bot] 提交。
  • ✏️ 修复文档中切换浅色/深色主题的工具提示。PR #9588@pankaj1707k 提交。
  • 🔧 设置构建包所需的最低 hatchling 版本。PR #9240@mgorny 提交。
  • 📝 将仓库链接添加到 PyPI。PR #9559@JacobCoffee 提交。
  • ✏️ 修复测试数据中的拼写错误。PR #4958@ryanrussell 提交。
  • 🔧 更新赞助商,添加 Flint。PR #9699@tiangolo 提交。
  • 👷 CI 中只执行一次 linting,只使用一个 Python 版本,并使用所有版本运行测试。PR #9686@tiangolo 提交。

0.97.0

特性

  • ✨ 为 WebSocket 路由添加对 dependencies 的支持。PR #4534@paulo-raca 提交。
  • ✨ 为 WebSocketRequestValidationError 添加异常处理程序(也允许覆盖它)。PR #6030@kristjanvalur 提交。

重构

  • ⬆️ 升级并完全迁移到 Ruff,移除 isort,包含新版 Ruff 建议的几项调整。PR #9660@tiangolo 提交。
  • ♻️ 更新内部类型注解并升级 mypy。PR #9658@tiangolo 提交。
  • ♻️ 简化 AsyncExitStackMiddleware,因为没有 Python 3.6 时 AsyncExitStack 始终可用。PR #9657@tiangolo 提交。

升级

内部

  • 💚 更新 CI 缓存以在依赖项更改时修复安装问题。PR #9659@tiangolo 提交。
  • ⬇️ 将开发所需的环境分离到单独的 requirements.txt 文件中,它们不应是可选的。PR #9655@tiangolo 提交。

0.96.1

修复

  • 🐛 修复 HTTPException 头部类型注解。PR #9648@tiangolo 提交。
  • 🐛 修复 OpenAPI 模型字段整数验证,将 gte 改为 ge。PR #9635@tiangolo 提交。

升级

  • 📌 将 Pydantic 的最低版本更新到 >=1.7.4。这修复了尝试使用旧版本 Pydantic 的问题。PR #9567@Kludex 提交。

重构

  • ♻ 从 ORJSONResponse 中移除 media_type,因为它继承自父类。PR #5805@Kludex 提交。
  • ♻ 仅在需要时实例化 HTTPException,优化重构。PR #5356@pawamoy 提交。

文档

  • 🔥 移除 Pydantic 的基准测试链接,因为该链接已被移除。PR #5811@Kludex 提交。

翻译

  • 🌐 修复印度尼西亚语翻译 docs/docs/tutorial/index.md 中的拼写错误。PR #5635@purwowd 提交。
  • 🌐 为 docs/docs/tutorial/index.md 添加俄语翻译。PR #5896@Wilidon 提交。
  • 🌐 为 docs/docs/advanced/response-change-status-code.mddocs/docs/advanced/response-headers.md 添加中文翻译。PR #9544@ChoyeonChern 提交。
  • 🌐 为 docs/docs/tutorial/schema-extra-example.md 添加俄语翻译。PR #9621@Alexandrhub 提交。

内部

  • 🔧 添加赞助商 Platform.sh。PR #9650@tiangolo 提交。
  • 👷 为 Smokeshow 和 Preview Docs 添加下载工件 (download-artifact) 的自定义 token,以防止 API 速率限制。PR #9646@tiangolo 提交。
  • 👷 为 GitHub Actions 添加自定义 token 以避免速率限制。PR #9647@tiangolo 提交。

0.96.0

特性

  • ⚡ 更新 create_cloned_field 以使用全局缓存并提高启动性能。PR #4645@madkinsz 提交,以及 @huonw 的原始 PR。

文档

  • 📝 更新 Deta 部署教程,以兼容 Deta Space。PR #6004@mikBighne98 提交。
  • ✏️ 修复 Deta 部署教程中的拼写错误。PR #9501@lemonyte 提交。

翻译

  • 🌐 为 docs/tutorial/body.md 添加俄语翻译。PR #3885@solomein-sv 提交。
  • 🌐 为 docs/docs/tutorial/static-files.md 添加俄语翻译。PR #9580@Alexandrhub 提交。
  • 🌐 为 docs/docs/tutorial/query-params.md 添加俄语翻译。PR #9584@Alexandrhub 提交。
  • 🌐 为 docs/docs/tutorial/first-steps.md 添加俄语翻译。PR #9471@AGolicyn 提交。
  • 🌐 为 docs/docs/tutorial/debugging.md 添加俄语翻译。PR #9579@Alexandrhub 提交。
  • 🌐 为 docs/docs/tutorial/path-params.md 添加俄语翻译。PR #9519@AGolicyn 提交。
  • 🌐 为 docs/docs/tutorial/static-files.md 添加中文翻译。PR #9436@wdh99 提交。
  • 🌐 更新西班牙语翻译,包括 docs/docs/async.md 中的新插图。PR #9483@andresbermeoq 提交。
  • 🌐 为 docs/docs/tutorial/path-params-numeric-validations.md 添加俄语翻译。PR #9563@ivan-abc 提交。
  • 🌐 为 docs/docs/deployment/concepts.md 添加俄语翻译。PR #9577@Xewus 提交。
  • 🌐 为 docs/docs/tutorial/body-multiple-params.md 添加俄语翻译。PR #9586@Alexandrhub 提交。

内部

0.95.2

翻译

  • 🌐 为 docs/docs/advanced/events.md 添加葡萄牙语翻译。PR #9326@oandersonmagalhaes 提交。
  • 🌐 为 docs/docs/deployment/manually.md 添加俄语翻译。PR #9417@Xewus 提交。
  • 🌐 为老挝语添加翻译设置。PR #9396@TheBrown 提交。
  • 🌐 为 docs/docs/tutorial/testing.md 添加俄语翻译。PR #9403@Xewus 提交。
  • 🌐 为 docs/docs/deployment/https.md 添加俄语翻译。PR #9428@Xewus 提交。
  • ✏ 修复 Windows 上安装需求的命令。PR #9445@MariiaRomanuik 提交。
  • 🌐 为 docs/docs/advanced/response-directly.md 添加法语翻译。PR #9415@axel584 提交。
  • 🌐 初始化捷克语翻译设置。PR #9288@3p1463k 提交。
  • ✏ 修复葡萄牙语文档 docs/docs/index.md 中的拼写错误。PR #9337@lucasbalieiro 提交。
  • 🌐 为 docs/docs/tutorial/response-status-code.md 添加俄语翻译。PR #9370@nadia3373 提交。

内部

  • 🐛 修复内部测试中的 flask.escape 警告。PR #9468@samuelcolvin 提交。
  • ✅ 重构 2 个测试,以保持一致性和简化。PR #9504@tiangolo 提交。
  • ✅ 重构 OpenAPI 测试,为 Pydantic v2 做准备。PR #9503@tiangolo 提交。
  • ⬆ 将 dawidd6/action-download-artifact 从 2.26.0 升级到 2.27.0。PR #9394@dependabot[bot] 提交。
  • 💚 在 CI 中禁用 setup-python pip 缓存。PR #9438@tiangolo 提交。
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.6.4 升级到 1.8.5。PR #9346@dependabot[bot] 提交。

0.95.1

修复

  • 🐛 修复在多次装饰的路由或路径操作中使用 Annotated 的问题。PR #9315@sharonyogev 提交。

文档

  • 🌐 🔠 📄 🐢 将文档翻译成 Emoji 🥳 🎉 💥 🤯 🤯。PR #5385@LeeeeT 提交。
  • 📝 添加通知消息,警告旧版本的 FastAPI 不支持 Annotated。PR #9298@grdworkin 提交。
  • 📝 修复 docs/en/docs/advanced/behind-a-proxy.md 中的拼写错误。PR #5681@Leommjr 提交。
  • ✏ 修复波斯语翻译中 docs/docs/index.mdtyping 模块的错误导入。PR #6083@Kimiaattaei 提交。
  • ✏️ 修复 docs/en/docs/help-fastapi.md 中的格式,删除不必要的星号。PR #9249@armgabrielyan 提交。
  • ✏ 修复 docs/en/docs/tutorial/query-params-str-validations.md 中的拼写错误。PR #9272@nicornk 提交。
  • ✏ 修复 docs/en/docs/tutorial/query-params-str-validations.md 中的拼写错误/bug 内联代码示例。PR #9273@tim-habitat 提交。
  • ✏ 修复 docs/en/docs/tutorial/path-params-numeric-validations.md 中的拼写错误。PR #9282@aadarsh977 提交。
  • ✏ 修复拼写错误:将 docs/en/docs/tutorial/query-params-str-validations.md 中的 'wll' 改为 'will'。PR #9380@dasstyxx 提交。

翻译

  • 🌐 为 docs/docs/advanced/index.md 添加法语翻译。PR #5673@axel584 提交。
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加葡萄牙语翻译。PR #4053@luccasmmg 提交。
  • 🌐 为 docs/docs/alternatives.md 添加俄语翻译。PR #5994@Xewus 提交。
  • 🌐 为 docs/docs/tutorial/extra-models.md 添加葡萄牙语翻译。PR #5912@LorhanSohaky 提交。
  • 🌐 为 docs/docs/tutorial/path-operation-configuration.md 添加葡萄牙语翻译。PR #5936@LorhanSohaky 提交。
  • 🌐 为 docs/docs/contributing.md 添加俄语翻译。PR #6002@stigsanek 提交。
  • 🌐 为 docs/tutorial/dependencies/classes-as-dependencies.md 添加韩语翻译。PR #9176@sehwan505 提交。
  • 🌐 为 docs/docs/project-generation.md 添加俄语翻译。PR #9243@Xewus 提交。
  • 🌐 为 docs/docs/index.md 添加法语翻译。PR #9265@frabc 提交。
  • 🌐 为 docs/docs/tutorial/query-params-str-validations.md 添加俄语翻译。PR #9267@dedkot01 提交。
  • 🌐 为 docs/docs/benchmarks.md 添加俄语翻译。PR #9271@Xewus 提交。

内部

  • 🔧 更新赞助商:移除 Jina。PR #9388@tiangolo 提交。
  • 🔧 更新赞助商,添加 databento,移除 Ines's course 和 StriveWorks。PR #9351@tiangolo 提交。

0.95.0

亮点

此版本增加了对使用 Annotated 的依赖项和参数的支持,并推荐使用它。✨

这有诸多好处,其中一个主要好处是,现在带有 Annotated 的函数的参数不会受到任何影响

如果在你代码的其他地方调用这些函数,实际的默认值将被保留,你的编辑器会帮助你注意到缺失的必需参数,Python 会要求你在运行时传入必需参数,你将能够使用相同的函数处理不同的事物和不同的库(例如,Typer 很快也将支持 Annotated,届时你就可以为 API 和 CLI 使用相同的函数),等等。

由于 Annotated标准 Python,你仍然可以获得编辑器和工具的所有好处,例如自动补全内联错误等。

其中一个最大的好处是,现在你可以创建 Annotated 依赖项,然后这些依赖项可以被多个路径操作函数共享,这将允许你大大减少代码库中的代码重复,同时保留来自编辑器和工具的所有支持。

例如,你可以有这样的代码

def get_current_user(token: str):
    # authenticate user
    return User()


@app.get("/items/")
def read_items(user: User = Depends(get_current_user)):
    ...


@app.post("/items/")
def create_item(*, user: User = Depends(get_current_user), item: Item):
    ...


@app.get("/items/{item_id}")
def read_item(*, user: User = Depends(get_current_user), item_id: int):
    ...


@app.delete("/items/{item_id}")
def delete_item(*, user: User = Depends(get_current_user), item_id: int):
    ...

依赖项存在一些代码重复

user: User = Depends(get_current_user)

…代码库越大,越明显。

现在你可以一次性创建一个带注释的依赖项,如下所示

CurrentUser = Annotated[User, Depends(get_current_user)]

然后你可以重用这个 Annotated 依赖项

CurrentUser = Annotated[User, Depends(get_current_user)]


@app.get("/items/")
def read_items(user: CurrentUser):
    ...


@app.post("/items/")
def create_item(user: CurrentUser, item: Item):
    ...


@app.get("/items/{item_id}")
def read_item(user: CurrentUser, item_id: int):
    ...


@app.delete("/items/{item_id}")
def delete_item(user: CurrentUser, item_id: int):
    ...

…并且 CurrentUser 拥有与 User 相同的类型信息,所以你的编辑器将按预期工作(自动补全等),并且FastAPI能够理解 Annotated 中定义的依赖项。😎

大致所有文档都已重写,以使用 Annotated 作为声明参数依赖项的主要方式。文档中的所有示例现在都包含一个带 Annotated 的版本和一个不带的版本,针对每个特定的 Python 版本(当在较新版本中有细微差异/改进时)。文档、示例和测试之间增加了约 23K 行。🚀

关键更新的文档是

特别感谢 @nzig 的核心实现,以及 @adriangb 的启发和在 Xpresso 中的想法!🚀

功能

  • ✨ 添加对 PEP-593 Annotated 的支持,用于指定依赖项和参数。PR #4871@nzig 提交。

文档

  • 📝 微调文档中推荐 Annotated 的提示。PR #9270@tiangolo 提交。
  • 📝 更新示例顺序,最新 Python 版本在前,并简化版本选项卡名称。PR #9269@tiangolo 提交。
  • 📝 更新所有文档以使用 Annotated 作为主要推荐,包含新的示例和测试。PR #9268@tiangolo 提交。

0.94.1

修复

  • 🎨 修复 lifespan 的类型,将 Starlette 升级到 0.26.1。PR #9245@tiangolo 提交。

0.94.0

升级

  • ⬆ 升级 python-multipart 以支持 0.0.6。PR #9212@musicinmybrain 提交。
  • ⬆️ 升级 Starlette 版本,支持新的带状态的 lifespan。PR #9239@tiangolo 提交。

文档

  • 📝 更新文档中的 Sentry 链接。PR #9218@smeubank 提交。

翻译

  • 🌐 为 docs/docs/history-design-future.md 添加俄语翻译。PR #5986@Xewus 提交。

内部

0.93.0

功能

  • ✨ 添加对 lifespan 异步上下文管理器的支持(取代 startupshutdown 事件)。初始 PR #2944@uSpike 提交。

现在,您可以定义一个带有 yield 并用 @asynccontextmanager(异步上下文管理器)装饰的单一函数,而不是使用独立的 startupshutdown 事件。

例如

from contextlib import asynccontextmanager

from fastapi import FastAPI


def fake_answer_to_everything_ml_model(x: float):
    return x * 42


ml_models = {}


@asynccontextmanager
async def lifespan(app: FastAPI):
    # Load the ML model
    ml_models["answer_to_everything"] = fake_answer_to_everything_ml_model
    yield
    # Clean up the ML models and release the resources
    ml_models.clear()


app = FastAPI(lifespan=lifespan)


@app.get("/predict")
async def predict(x: float):
    result = ml_models["answer_to_everything"](x)
    return {"result": result}

注意:这是未来推荐的用法,而不是使用 startupshutdown 事件。

阅读新文档了解更多信息:高级用户指南:Lifespan 事件

文档

  • ✏ 修复 docs/en/docs/tutorial/metadata.mdReDoc 的格式。PR #6005@eykamp 提交。

翻译

  • 🌐 泰米尔语翻译 - 初始设置。PR #5564@gusty1g 提交。
  • 🌐 为 docs/docs/advanced/path-operation-advanced-configuration.md 添加法语翻译。PR #9221@axel584 提交。
  • 🌐 为 docs/tutorial/debugging.md 添加法语翻译。PR #9175@frabc 提交。
  • 🌐 启动亚美尼亚语翻译设置。PR #5844@har8 提交。
  • 🌐 为 deployment/manually.md 添加法语翻译。PR #3693@rjNemo 提交。

内部

  • 👷 更新翻译机器人消息。PR #9206@tiangolo 提交。
  • 👷 更新翻译机器人使用 Discussions,并在 PR 完成时发送通知。PR #9183@tiangolo 提交。
  • 🔧 更新 sponsor-badges。PR #9182@tiangolo 提交。
  • 👥 更新 FastAPI People。PR #9181@github-actions[bot] 提交。
  • 🔊 在 FastAPI People 中记录 GraphQL 错误,因为它们返回 200,但带有错误负载。PR #9171@tiangolo 提交。
  • 💚 修复/解决 FastAPI People 中 Docker 和 git 的 GitHub Actions 问题。PR #9169@tiangolo 提交。
  • ♻️ 重构 FastAPI Experts 以仅使用 Discussions,因为问题已迁移。PR #9165@tiangolo 提交。
  • ⬆️ 升级 analytics。PR #6025@tiangolo 提交。
  • ⬆️ 升级并重新启用 Typer-CLI 的安装。PR #6008@tiangolo 提交。

0.92.0

🚨 这是一个安全修复。请尽快升级。

升级

  • ⬆️ 升级 Starlette 至 0.25.0。PR #5996@tiangolo 提交。
    • 这解决了可能通过使用许多小的 multipart 字段/文件(parts)导致拒绝服务攻击的漏洞,消耗大量 CPU 和内存。
    • 只有使用表单(例如文件上传)的应用程序可能受到影响。
    • 对于大多数情况,升级不会有任何破坏性更改。

0.91.0

升级

  • ⬆️ 将 Starlette 版本升级到 0.24.0,并重构内部以兼容。PR #5985@tiangolo 提交。
    • 这可以解决使用中间件时的细微错误。在 Starlette 0.24.0 之前,每当添加新的中间件时,都会创建一个新的中间件类实例。这通常不是问题,除非中间件类期望只创建一次,并且只有一个实例,这在某些情况下会发生。此次升级将解决这些情况(感谢 @adriangb!Starlette PR #2017)。现在中间件类实例只创建一次,就在第一个请求之前(应用程序被调用时)。
    • 如果您依赖于之前的行为,您可能需要更新您的代码。一如既往,请确保在合并升级前您的测试通过。

0.90.1

升级

  • ⬆️ 升级 Starlette 范围以允许 0.23.1。PR #5980@tiangolo 提交。

文档

  • ✏ 微调 docs/en/docs/project-generation.md 的措辞以使其更清晰。PR #5930@chandra-deb 提交。
  • ✏ 更新 Pydantic 的 GitHub URL。PR #5952@yezz123 提交。
  • 📝 添加思科的观点。PR #5981@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/tutorial/cookie-params.md 添加俄语翻译。PR #5890@bnzone 提交。

内部

  • ✏ 更新 zip-docs.sh 内部脚本,删除多余空格。PR #5931@JuanPerdomo00 提交。

0.90.0

升级

  • ⬆️ 将 Starlette 从 0.22.0 升级到 0.23.0。初始 PR #5739@Kludex 提交。

文档

  • 📝 向外部链接添加文章 "Tortoise ORM / FastAPI 整合快速筆記"。PR #5496@Leon0824 提交。
  • 👥 更新 FastAPI People。PR #5954@github-actions[bot] 提交。
  • 📝 微调帮助文档。PR #5960@tiangolo 提交。
  • 🔧 更新新的问题选择器,将其指向 GitHub Discussions。PR #5948@tiangolo 提交。
  • 📝 推荐使用 GitHub Discussions 来提问。PR #5944@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/tutorial/body-fields.md 添加俄语翻译。PR #5898@simatheone 提交。
  • 🌐 为 docs/docs/help-fastapi.md 添加俄语翻译。PR #5970@tiangolo 提交。
  • 🌐 为 docs/docs/tutorial/static-files.md 添加葡萄牙语翻译。PR #5858@batlopes 提交。
  • 🌐 为 docs/docs/tutorial/encoder.md 添加葡萄牙语翻译。PR #5525@felipebpl 提交。
  • 🌐 为 docs/docs/contributing.md 添加俄语翻译。PR #5870@Xewus 提交。

内部

  • ⬆ 升级 docs workflow 的 Ubuntu 版本。PR #5971@tiangolo 提交。
  • 🔧 更新赞助商 badges。PR #5943@tiangolo 提交。
  • ✨ 计算 FastAPI Experts,包括 GitHub Discussions。PR #5941@tiangolo 提交。
  • ⬆ 升级 isort 并更新 pre-commit。PR #5940@tiangolo 提交。
  • 🔧 添加 Discussions 的问题模板。PR #5920@tiangolo 提交。
  • 🔧 将 Sponsor Budget Insight 更新为 Powens。PR #5916@tiangolo 提交。
  • 🔧 更新 GitHub Sponsors badge 数据。PR #5915@tiangolo 提交。

0.89.1

修复

  • 🐛 忽略返回注解中的 Response 类。PR #5855@Kludex 提交。请参阅 PR 下方的新文档。

文档

翻译

  • 🌐 为 docs/docs/tutorial/first_steps.md 添加土耳其语翻译。PR #5691@Kadermiyanyedi 提交。

0.89.0

功能

  • ✨ 添加对函数返回类型注解的支持,以声明 response_model。初始 PR #1436@uriyyo 提交。

现在你可以在函数返回类型注解中声明返回类型 / response_model

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float


@app.get("/items/")
async def read_items() -> list[Item]:
    return [
        Item(name="Portal Gun", price=42.0),
        Item(name="Plumbus", price=32.0),
    ]

FastAPI 将使用返回类型注解来执行

  • 数据验证
  • 自动文档
    • 它可以为自动客户端生成器提供支持
  • 数据过滤

在此版本之前,仅通过 response_model 参数支持。

阅读新文档了解更多信息:Response Model - Return Type

文档

  • 📝 添加外部链接:使用 Casbin 对 FastAPI 进行授权。PR #5712@Xhy-5000 提交。
  • ✏ 修复 docs/en/docs/async.md 中的拼写错误。PR #5785@Kingdageek 提交。
  • ✏ 修复 docs/en/docs/deployment/concepts.md 中的拼写错误。PR #5824@kelbyfaessler 提交。

翻译

  • 🌐 为 docs/docs/fastapi-people.md 添加俄语翻译。PR #5577@Xewus 提交。
  • 🌐 修复中文翻译中 docs/docs/benchmarks.md 的拼写错误。PR #4269@15027668g 提交。
  • 🌐 为 docs/tutorial/cors.md 添加韩语翻译。PR #3764@NinaHwang 提交。

内部

0.88.0

升级

  • ⬆ 将 Starlette 升级到版本 0.22.0 以修复新 TestClient 中查询参数的错误编码。PR #5659@azogue 提交。

文档

  • ✏️ 修复 docs/en/docs/advanced/middleware.md 文档中的拼写错误。PR #5376@rifatrakib 提交。

翻译

  • 🌐 为 docs/docs/deployment/docker.md 添加葡萄牙语翻译。PR #5663@ayr-ton 提交。

内部

  • 👷 调整 build-docs 以提高 CI 性能。PR #5699@tiangolo 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5566@pre-commit-ci[bot] 提交。
  • ⬆️ 升级 Ruff。PR #5698@tiangolo 提交。
  • 👷 为 Smokeshow 移除 pip 缓存,因为它依赖于 requirements.txt。PR #5700@tiangolo 提交。
  • 💚 修复 Smokeshow 的 pip 缓存。PR #5697@tiangolo 提交。
  • 👷 修复和调整 CI 缓存处理。PR #5696@tiangolo 提交。
  • 👷 更新测试中的 setup-python action 以使用新的缓存功能。PR #5680@madkinsz 提交。
  • ⬆ 将 black 从 22.8.0 升级到 22.10.0。PR #5569@dependabot[bot] 提交。

0.87.0

本次发布的亮点

  • 升级了 Starlette
    • 现在 TestClient 基于 HTTPX 而不是 Requests。🚀
    • TestClient 的使用可能会有一些破坏性更改,但 @Kludex 创建了 bump-testclient 来帮助您自动化迁移测试。在使用 bump-testclient 之前,请确保您正在使用 Git 并且可以撤销任何不必要的更改(例如误报的更改)。
  • 新的 WebSocketException(和文档),从 Starlette 重新导出。
  • 为包的 extras all (包括新的 Uvicorn 版本)升级并放宽了依赖关系,当您安装 "fastapi[all]" 时。
  • 关于如何维护 FastAPI 的新文档。

功能

  • ⬆️ 升级并放宽 extras "all" 的依赖关系。PR #5634@tiangolo 提交。
  • ✨ 重新导出 Starlette 的 WebSocketException 并添加到文档中。PR #5629@tiangolo 提交。
  • 📝 更新测试中对 Requests 的引用为 HTTPX,并将 HTTPX 添加到 extras 中。PR #5628@tiangolo 提交。
  • ⬆ 升级 Starlette 至 0.21.0,包括基于 HTTPX 的新 TestClient。PR #5471@pawelrubin 提交。

文档

  • ✏️ 在合并后微调 Help FastAPI PR 的评审。PR #5633@tiangolo 提交。
  • ✏️ 澄清 CORS 文档。PR #5627@paxcodes 提交。
  • 📝 更新 Help FastAPI:Help Maintain FastAPI。PR #5632@tiangolo 提交。

翻译

  • 🌐 修复日语翻译中 docs/tutorial/query-params.md 的高亮行。PR #2969@ftnext 提交。
  • 🌐 为 docs/docs/advanced/additional-status-code.md 添加法语翻译。PR #5477@axel584 提交。
  • 🌐 为 docs/docs/tutorial/request-forms-and-files.md 添加葡萄牙语翻译。PR #5579@batlopes 提交。
  • 🌐 为 docs/docs/advanced/websockets.md 添加日语翻译。PR #4983@xryuseix 提交。

内部

  • ✨ 使用 Ruff 进行 linting。PR #5630@tiangolo 提交。
  • 🛠 向 Notify Translations GitHub Action 添加阿拉伯语问题编号。PR #5610@tiangolo 提交。
  • ⬆ 将 dawidd6/action-download-artifact 从 2.24.1 升级到 2.24.2。PR #5609@dependabot[bot] 提交。
  • ⬆ 将 dawidd6/action-download-artifact 从 2.24.0 升级到 2.24.1。PR #5603@dependabot[bot] 提交。
  • 📝 使用 Samuel Colvin 的 Smokeshow 更新 coverage badge。PR #5585@tiangolo 提交。

0.86.0

功能

  • ⬆ 将 Python 3.11 添加到官方支持版本中。PR #5587@tiangolo 提交。
  • ✅ 启用 Python 3.11 的测试。PR #4881@tiangolo 提交。

修复

  • 🐛 在请求完成后关闭 FormData(上传文件)。PR #5465@adriangb 提交。

文档

  • ✏ 修复 docs/en/docs/tutorial/security/oauth2-jwt.md 文档中的拼写错误。PR #5584@vivekashok1221 提交。

翻译

  • 🌐 更新中文翻译中 docs/docs/python-types.md 的措辞。PR #5416@supercaizehua 提交。
  • 🌐 为 docs/docs/deployment/index.md 添加俄语翻译。PR #5336@Xewus 提交。
  • 🌐 更新中文翻译中 docs/tutorial/security/oauth2-jwt.md。PR #3846@jaystone776 提交。

内部

  • 👷 更新 FastAPI People 以排除 bot:pre-commit-ci, dependabot。PR #5586@tiangolo 提交。
  • 🎨 格式化 test_starlette_exception.py 中的 OpenAPI JSON。PR #5379@iudeen 提交。
  • 👷 将内部测试中的 Codecov 切换为 Smokeshow 加上 pytest-cov,改为纯 coverage。PR #5583@tiangolo 提交。
  • 👥 更新 FastAPI People。PR #5571@github-actions[bot] 提交。

0.85.2

文档

  • ✏ 修复语法并为 docs/en/docs/async.md 中的依赖添加有用的链接。PR #5432@pamelafox 提交。
  • ✏ 修复 alternatives.md 中的断开的链接。PR #5455@su-shubham 提交。
  • ✏ 修复关于贡献的文档中的拼写错误,以兼容 Zsh 中的 pip。PR #5523@zhangbo2012 提交。
  • 📝 修复文档中示例的拼写错误,将 Python 3.10 误写为 3.9。PR #5545@feliciss 提交。

翻译

  • 🌐 为 docs/docs/tutorial/request-forms.md 添加葡萄牙语翻译。PR #4934@batlopes 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/classes-as-dependencies.md 添加中文翻译。PR #4971@Zssaer 提交。
  • 🌐 为 deployment/deta.md 添加法语翻译。PR #3692@rjNemo 提交。
  • 🌐 更新 docs/docs/tutorial/query-params-str-validations.md 的中文翻译。PR #5255@hjlarry 提交。
  • 🌐 为 docs/docs/tutorial/sql-databases.md 添加中文翻译。PR #4999@Zssaer 提交。
  • 🌐 为 docs/docs/advanced/wsgi.md 添加中文翻译。PR #4505@ASpathfinder 提交。
  • 🌐 为 docs/docs/tutorial/body-multiple-params.md 添加葡萄牙语翻译。PR #4111@lbmendes 提交。
  • 🌐 为 docs/docs/tutorial/path-params-numeric-validations.md 添加葡萄牙语翻译。PR #4099@lbmendes 提交。
  • 🌐 为 deployment/versions.md 添加法语翻译。PR #3690@rjNemo 提交。
  • 🌐 为 docs/docs/help-fastapi.md 添加法语翻译。PR #2233@JulianMaurin 提交。
  • 🌐 修复 docs/docs/tutorial/security/first-steps.md 的中文翻译中的拼写错误。PR #5530@yuki1sntSnow 提交。
  • 🌐 为 docs/docs/tutorial/response-status-code.md 添加葡萄牙语翻译。PR #4922@batlopes 提交。
  • 🔧 添加泰米尔语翻译的配置。PR #5563@tiangolo 提交。

内部

  • ⬆ 将内部依赖 mypy 从 0.971 升级到 0.982。PR #5541@dependabot[bot] 提交。
  • ⬆ 将 nwtgck/actions-netlify 从 1.2.3 升级到 1.2.4。PR #5507@dependabot[bot] 提交。
  • ⬆ 将内部依赖 types-ujson 从 5.4.0 升级到 5.5.0。PR #5537@dependabot[bot] 提交。
  • ⬆ 将 dawidd6/action-download-artifact 从 2.23.0 升级到 2.24.0。PR #5508@dependabot[bot] 提交。
  • ⬆ 将内部依赖 pytest-cov 的要求从 <4.0.0,>=2.12.0 升级到 >=2.12.0,<5.0.0。PR #5539@dependabot[bot] 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5536@pre-commit-ci[bot] 提交。
  • 🐛 修复内部 Trio 测试警告。PR #5547@samuelcolvin 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5408@pre-commit-ci[bot] 提交。
  • ⬆️ 升级 Typer 以包含文档脚本中的 Rich。PR #5502@tiangolo 提交。
  • 🐛 修复调用 mkdocs 为语言作为子进程以修复/启用 MkDocs Material 搜索插件。PR #5501@tiangolo 提交。

0.85.1

修复

  • 🐛 修复 OpenAPI 状态码中对字符串的支持:default1XX2XX3XX4XX5XX。PR #5187@JarroVGIT 提交。

文档

  • 📝 在“外部链接”部分添加 WayScript x FastAPI 教程。PR #5407@moneeka 提交。

内部

0.85.0

特性

  • ⬆ 将 Starlette 的要求版本从 0.19.1 升级到 0.20.4。初始 PR #4820@Kludex 提交。
    • 这包括 Starlette 中的一些错误修复。
  • ⬆️ 升级公共 extras 中的 Uvicorn 最大版本:all。从 >=0.12.0,<0.18.0>=0.12.0,<0.19.0。PR #5401@tiangolo 提交。

内部

  • ⬆️ 升级文档和开发内部 extras 的依赖:Typer, Uvicorn。PR #5400@tiangolo 提交。
  • ⬆️ 升级测试依赖:Black, HTTPX, databases, types-ujson。PR #5399@tiangolo 提交。
  • ⬆️ 升级 mypy 并调整内部类型注解。PR #5398@tiangolo 提交。
  • 🔧 更新测试依赖,升级 Pytest,将依赖从 dev 移至 test。PR #5396@tiangolo 提交。

0.84.0

重大变更

此版本的 FastAPI 不再支持 Python 3.6。🔥 请升级到受支持的 Python 版本(3.7 或更高版本),Python 3.6 早已停止支持。😅☠

  • 🔧 更新包元数据,停止支持 Python 3.6,将内部构建从 Flit 移至 Hatch。PR #5240@ofek 提交。

0.83.0

🚨 这可能是最后一个支持 Python 3.6 的版本(或其中一个)。🔥

Python 3.6 早已 停止支持,且 Python 社区已不再维护

您应该早已更新到受支持的 Python 版本。如果您还没有,真的应该这样做。

特性

  • ✨ 在 jsonable_encoder 中添加了对 dataclasses 的 include 和 exclude 的支持。PR #4923@DCsunset 提交。

修复

  • 🐛 修复当 HTTPException 的状态码没有内容时引发的 RuntimeError。PR #5365@iudeen 提交。
  • 🐛 修复当默认 status_code 为空但设置了带有 response.status_codeResponse 参数时,响应体为空的问题。PR #5360@tmeckel 提交。

文档

内部

0.82.0

🚨 这可能是最后一个支持 Python 3.6 的版本(或其中一个)。🔥

Python 3.6 早已 停止支持,且 Python 社区已不再维护

您应该早已更新到受支持的 Python 版本。如果您还没有,真的应该这样做。

特性

  • ✨ 在 fastapi.websockets 中导出 WebSocketState。PR #4376@matiuszka 提交。
  • ✨ 支持 Pydantic 模型文档字符串中的 Python 内部描述。PR #3032@Kludex 提交。
  • ✨ 更新 ORJSONResponse 以支持非 str 键和序列化 Numpy 数组。PR #3892@baby5 提交。

修复

  • 🐛 允许带有 yield 的依赖项的退出代码始终执行,通过移除其容量限制,例如允许在不发生死锁的情况下关闭数据库连接。PR #5122@adriangb 提交。
  • 🐛 修复 FastAPI People GitHub Action:为 GraphQL 查询请求设置 HTTPX 超时。PR #5222@iudeen 提交。
  • 🐛 确保在 OpenAPI 中,定义为必需的参数即使在其他依赖项中定义为可选,仍然保持必需。PR #4319@cd17822 提交。
  • 🐛 修复 WebSocket 中对路径参数的支持。PR #3879@davidbrochart 提交。

文档

  • ✏ 更新 Hypercorn 链接,现指向 GitHub。PR #5346@baconfield 提交。
  • ✏ 调整 docs/en/docs/advanced/dataclasses.md 文档中的措辞。PR #3698@pfackeldey 提交。
  • 📝 在关于 Response Models 的解释中添加关于 Python 3.10 X | Y 运算符的说明。PR #5307@MendyLanda 提交。
  • 📝 添加 New Relic 文章链接:“如何使用 Python 代理监控 FastAPI 应用程序性能”。PR #5260@sjyothi54 提交。
  • 📝 更新 ORJSONResponse 文档,提供有关提高性能的详细信息。PR #2615@falkben 提交。
  • 📝 添加关于创建自定义 Response 类的文档。PR #5331@tiangolo 提交。
  • 📝 添加关于表单数据字段使用别名的提示。PR #5329@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/features.md 添加俄语翻译。PR #5315@Xewus 提交。
  • 🌐 更新 docs/docs/tutorial/request-files.md 的中文翻译。PR #4529@ASpathfinder 提交。
  • 🌐 为 docs/docs/tutorial/encoder.md 添加中文翻译。PR #4969@Zssaer 提交。
  • 🌐 修复 background-task.md 葡萄牙语翻译的 MkDocs 文件行。PR #5242@ComicShrimp 提交。

内部

  • 👥 更新 FastAPI People。PR #5347@github-actions[bot] 提交。
  • ⬆ 将 dawidd6/action-download-artifact 从 2.22.0 升级到 2.23.0。PR #5321@dependabot[bot] 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5318@pre-commit-ci[bot] 提交。
  • ✏ 修复一个小的代码高亮行错误。PR #5256@hjlarry 提交。
  • ♻ 内部小的重构,移动 delete 方法中的 operation_id 参数位置以保持代码一致性。PR #4474@hiel 提交。
  • 🔧 更新赞助商,禁用 ImgWhale。PR #5338@tiangolo 提交。

0.81.0

特性

  • ✨ 当 JS 被禁用时,为 ReDoc 添加 <noscript> 警告。PR #5074@evroon 提交。
  • ✨ 支持参数(例如查询参数)中的 FrozenSet。PR #2938@juntatalor 提交。
  • ✨ 允许自定义中间件抛出 HTTPException 并传播它们。PR #2036@ghandic 提交。
  • ✨ 在处理请求体中的无效 JSON 时,保留 json.JSONDecodeError 信息,以支持使用其信息的自定义异常处理程序。PR #4057@UKnowWhoIm 提交。

修复

  • 🐛 修复 jsonable_encoder 对具有 pydantic 兼容字段的 dataclasses。PR #3607@himbeles 提交。
  • 🐛 修复了使用参数列表扩展 openapi_extras 的支持。PR #4267@orilevari 提交。

文档

  • ✏ 修复 docs/en/docs/python-types.md 中的一个简单拼写错误。PR #5193@GlitchingCore 提交。
  • ✏ 修复 tests/test_schema_extra_examples.py 中的拼写错误。PR #5126@supraaxdd 提交。
  • ✏ 修复 docs/en/docs/tutorial/path-params-numeric-validations.md 中的拼写错误。PR #5142@invisibleroads 提交。
  • 📝 在安装依赖项时出现错误,以避免安装依赖项的错误,请在 venv 中升级 pip:docs/en/docs/contributing.md。PR #5181@edisnake 提交。
  • ✏ 重新措辞并澄清教程 docs/en/docs/tutorial/body-nested-models.md 中的文本。PR #5169@papb 提交。
  • ✏ 修复 docs/en/docs/features.md 中的小拼写错误。PR #5206@OtherBarry 提交。
  • ✏ 修复 docs/en/docs/async.md 中的小拼写错误。PR #5125@Ksenofanex 提交。
  • 📝 为“外部链接”部分添加 FastAPI、Docker(Docker compose)和 Postgres 的链接。PR #5033@krishnardt 提交。
  • 📝 简化文档中关于其他响应的示例,删除不必要的 else。PR #4693@adriangb 提交。
  • 📝 更新文档,通过身份而不是相等性比较枚举。PR #4905@MicaelJarniac 提交。
  • ✏ 修复 docs/en/docs/python-types.md 中的拼写错误。PR #4886@MicaelJarniac 提交。
  • 🎨 修复 OpenAPI 回调文档中的语法高亮。PR #4368@xncbf 提交。
  • ✏ 重新措辞文档文件 typo-fix-path-params-numeric-validations.md 中令人困惑的句子。PR #3219@ccrenfroe 提交。
  • 📝 更新文档,处理带有 secrets.compare_digest() 的 HTTP Basic Auth,以支持非 ASCII 字符。PR #3536@lewoudar 提交。
  • 📝 更新测试文档,使用相对导入修复示例。PR #5302@tiangolo 提交。

翻译

  • 🌐 为 docs/docs/index.md 添加俄语翻译。PR #5289@impocode 提交。
  • 🌐 为 docs/docs/deployment/versions.md 添加俄语翻译。PR #4985@emp7yhead 提交。
  • 🌐 为 docs/docs/tutorial/header-params.md 添加葡萄牙语翻译。PR #4921@batlopes 提交。
  • 🌐 更新 ko/mkdocs.yml,修复一个缺失的链接。PR #5020@dalinaum 提交。

内部

  • ⬆ 将 dawidd6/action-download-artifact 从 2.21.1 升级到 2.22.0。PR #5258@dependabot[bot] 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5196@pre-commit-ci[bot] 提交。
  • 🔥 删除 tests/test_tutorial/test_sql_databases/test_sql_databases.py 中的重复测试。PR #5040@raccoonyy 提交。
  • ♻ 简化 fastapi/utils.py 中的内部正则表达式。PR #5057@pylounge 提交。
  • 🔧 修复 auto_error 的类型提示,它不需要是 Optional[bool]。PR #4933@DavidKimDY 提交。
  • 🔧 更新 mypy 配置,使用 strict = true 而不是手动配置。PR #4605@michaeloliverx 提交。
  • ♻ 将 fastapi/utils.py 中的 dict() 替换为 {}。PR #3138@ShahriyarR 提交。
  • ♻ 将 jsonable_encoder 中的内部错误变量移至更靠近相关代码的位置。PR #4560@GuilleQP 提交。
  • ♻ 简化 fastapi/dependencies/utils.py 中的条件赋值。PR #4597@cikay 提交。
  • ⬆ 将 Flake8 接受的版本限制更新为(内部代码)flake8 >=3.8.3,<6.0.0。PR #4097@jamescurtin 提交。
  • 🍱 更新 Jina 横幅,修复拼写错误。PR #5301@tiangolo 提交。

0.80.0

重大变更 - 修复

  • 🐛 修复 response_model 未使 None 失效。PR #2725@hukkin 提交。

如果您使用的是不包含 None 的类型(例如 response_model)但函数返回 None,现在将引发内部服务器错误,因为您正在返回违反 response_model 合约的无效数据。在此版本之前,它允许违反该合约并返回 None

例如,如果您的应用如下

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: Optional[float] = None
    owner_ids: Optional[List[int]] = None

app = FastAPI()

@app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
    return None

...调用路径 /items/invalidnone 将引发错误,因为 None 不是声明为 Itemresponse_model 的有效类型。

您也可能在不知情的情况下隐式返回 None,例如

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: Optional[float] = None
    owner_ids: Optional[List[int]] = None

app = FastAPI()

@app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
    if flag:
        return {"name": "foo"}
    # if flag is False, at this point the function will implicitly return None

如果您有需要允许返回 None路径操作(使用 response_model),请在 response_model 中使用 Union[Something, None] 来明确声明

from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: Optional[float] = None
    owner_ids: Optional[List[int]] = None

app = FastAPI()

@app.get("/items/invalidnone", response_model=Union[Item, None])
def get_invalid_none():
    return None

这样,数据将得到正确验证,您不会遇到内部服务器错误,并且文档也将反映出该路径操作可以返回 None(或 JSON 中的 null)。

修复

  • ⬆ 升级 Swagger UI 的 oauth2-redirect.html 副本,以包含对 Swagger UI 中各种授权码流的修复。PR #3439 初始 PR 由 @koonpeng 提交。
  • ♻ 从文档字符串中提取的描述中去除空白字符。PR #2821@and-semakin 提交。
  • 🐛 修复了在使用具有不同 OAuth2 范围的 Security() 和其他地方(例如 Depends())中的依赖项时缓存依赖项的问题。PR #2945@laggardkernel 提交。
  • 🎨 更新 response_model 的类型注解,允许 Union[str, None] 等类型。PR #5294@tiangolo 提交。

翻译

  • 🌐 修复德语翻译 docs/docs/features.md 中的拼写错误。PR #4533@0xflotus 提交。
  • 🌐 为韩语翻译的 encoder.md 添加缺失的导航器。PR #5238@joonas-yoon 提交。
  • (意外合并了空 PR) #4913

0.79.1

修复

  • 🐛 修复 jsonable_encoder 对非 Pydantic 对象使用 includeexclude 参数。PR #2606@xaviml 提交。
  • 🐛 修复 OpenAPI 中未显示重复别名名称的边缘情况。PR #2351@klaa97 提交。
  • 📝 在教程文档中添加杂项依赖项安装。PR #2126@TeoZosa 提交。

文档

翻译

  • 🌐 为 docs/docs/tutorial/query-params.md 添加葡萄牙语翻译。PR #4775@batlopes 提交。
  • 🌐 为 docs/docs/tutorial/security/first-steps.md 添加葡萄牙语翻译。PR #4954@FLAIR7 提交。
  • 🌐 为 docs/docs/advanced/response-cookies.md 添加翻译。PR #4638@zhangbo2012 提交。
  • 🌐 为 docs/docs/deployment/index.md 添加法语翻译。PR #3689@rjNemo 提交。
  • 🌐 为 tutorial/handling-errors.md 添加葡萄牙语翻译。PR #4769@frnsimoes 提交。
  • 🌐 为 docs/docs/history-design-future.md 添加法语翻译。PR #3451@rjNemo 提交。
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加俄语翻译。PR #4854@AdmiralDesu 提交。
  • 🌐 为 docs/docs/tutorial/security/first-steps.md 添加中文翻译。PR #3841@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/nosql-databases.md 添加日语翻译。PR #4205@sUeharaE4 提交。
  • 🌐 为 docs/docs/tutorial/index.md 添加印度尼西亚语翻译。PR #4705@bas-baskara 提交。
  • 🌐 为 docs/docs/index.md 添加波斯语翻译并调整从右到左的 CSS。PR #2395@mohsen-mahmoodi 提交。

内部

0.79.0

修复 - 重大变更

  • 🐛 修复了从不支持的响应码中移除正文。PR #5145@tiangolo 提交。
    • status_code 设置为 204304 或任何低于 200(1xx)的代码将从响应中移除正文。
    • 这修复了 Uvicorn 中可能抛出的错误:“RuntimeError: Response content longer than Content-Length”。
    • 此更改移除了 fastapi.openapi.constants.STATUS_CODES_WITH_NO_BODY,它被 utils 中的一个函数取代。

翻译

  • 🌐 开始希伯来语翻译。PR #5050@itay-raveh 提交。
  • 🔧 添加瑞典语翻译通知的配置。PR #5147@tiangolo 提交。
  • 🌐 开始瑞典语翻译。PR #5062@MrRawbin 提交。
  • 🌐 为 docs/docs/advanced/index.md 添加日语翻译。PR #5043@wakabame 提交。
  • 🌐🇵🇱 为 docs/docs/tutorial/first-steps.md 添加波兰语翻译。PR #5024 来自 @Valaraucoo

内部

0.78.0

功能

  • ✨ 添加支持,在声明必需参数时省略 ... 作为默认值,并进行验证

  • Path()

  • Query()
  • Header()
  • Cookie()
  • Body()
  • Form()
  • File()

新文档位于 教程 - 查询参数和字符串验证 - 使其成为必需参数。PR #4906 来自 @tiangolo

到目前为止,在添加附加验证或元数据时,声明必需参数需要使用 ... (省略号)。

例如

from fastapi import Cookie, FastAPI, Header, Path, Query

app = FastAPI()


@app.get("/items/{item_id}")
def main(
    item_id: int = Path(default=..., gt=0),
    query: str = Query(default=..., max_length=10),
    session: str = Cookie(default=..., min_length=3),
    x_trace: str = Header(default=..., title="Tracing header"),
):
    return {"message": "Hello World"}

...所有这些参数都是必需的,因为默认值为 ... (省略号)。

但现在,可以并且支持像 Pydantic 字段那样省略默认值,参数仍然是必需的。

✨ 例如,现在支持以下写法

from fastapi import Cookie, FastAPI, Header, Path, Query

app = FastAPI()


@app.get("/items/{item_id}")
def main(
    item_id: int = Path(gt=0),
    query: str = Query(max_length=10),
    session: str = Cookie(min_length=3),
    x_trace: str = Header(title="Tracing header"),
):
    return {"message": "Hello World"}

要将参数声明为可选(非必需),可以像往常一样设置默认值,例如使用 None

from typing import Union
from fastapi import Cookie, FastAPI, Header, Path, Query

app = FastAPI()


@app.get("/items/{item_id}")
def main(
    item_id: int = Path(gt=0),
    query: Union[str, None] = Query(default=None, max_length=10),
    session: Union[str, None] = Cookie(default=None, min_length=3),
    x_trace: Union[str, None] = Header(default=None, title="Tracing header"),
):
    return {"message": "Hello World"}

文档

  • 📝 添加文档,建议使用 Union 而非 Optional,并迁移源代码示例。新文档位于 Python 类型入门 - 使用 UnionOptional。PR #4908 来自 @tiangolo
  • 🎨 修复教程中关于路径操作高级配置的默认值设置。PR #4899 来自 @tiangolo
  • 📝 添加关于重新定义路径操作的文档。PR #4864 来自 @madkinsz
  • 📝 更新 Celery 文档链接。PR #4736 来自 @sammyzord
  • ✏ 修复教程中关于嵌套模型体(body)的集合(sets)示例代码。PR #3030 来自 @hitrust
  • ✏ 修复 Pydantic 文档链接。PR #4670 来自 @kinuax
  • 📝 更新关于 Swagger UI 自托管的文档,使用更新的源链接。PR #4813 来自 @Kastakin
  • 📝 添加外部文章链接:使用 FastAPI 和 React 构建 Django 教程中的 Poll App。PR #4778 来自 @jbrocher
  • 📝 在“Body - Fields”文档中添加 OpenAPI 警告,包含额外的 schema 扩展。PR #4846 来自 @ml-evs

翻译

  • 🌐 修复日语翻译中关于 docs/docs/tutorial/testing.md 的代码示例。PR #4623 来自 @hirotoKirimaru

内部

  • ♻ 重构字典值提取,以最小化键查找 fastapi/utils.py。PR #3139 来自 @ShahriyarR
  • ✅ 为必需的可选参数和请求体字段添加测试。PR #4907 来自 @tiangolo
  • 👷 修复 CI 中安装 Material for MkDocs Insiders 的问题。PR #4897 来自 @tiangolo
  • 👷 用 pre-commit CI 替换自定义 GitHub Action。PR #4896 来自 @tiangolo
  • 👷 添加 pre-commit GitHub Action 工作流。PR #4895 来自 @tiangolo
  • 📝 添加根据操作系统偏好自动切换文档暗黑模式的功能。PR #4869 来自 @ComicShrimp
  • 🔥 删除未使用的旧待定测试,这些测试已在其他地方覆盖。PR #4891 来自 @tiangolo
  • 🔧 向 pre-commit 添加 Python 格式化钩子。PR #4890 来自 @tiangolo
  • 🔧 添加 pre-commit 并进行首次配置和首次格式化。PR #4888 来自 @tiangolo
  • 👷 在 fork 中禁用 CI 安装 Material for MkDocs。PR #4410 来自 @dolfinus

0.77.1

升级

  • ⬆ 将 Starlette 从 0.19.0 升级到 0.19.1。PR #4819 来自 @Kludex

文档

  • 📝 添加德语文章链接:使用 Python 和 FastAPI 模块编写 REST-API。PR #4624 来自 @fschuermeyer
  • 📝 添加外部链接:PyCharm FastAPI 指南。PR #4512 来自 @mukulmantosh
  • 📝 添加外部链接到文章:使用 FastAPI 和 Supabase 构建 API 并部署到 Deta。PR #4440 来自 @aUnicornDev
  • ✏ 修复 docs/en/docs/tutorial/security/first-steps.md 中的小错别字。PR #4515 来自 @KikoIlievski

翻译

  • 🌐 为 docs/docs/tutorial/index.md 添加波兰语翻译。PR #4516 来自 @MKaczkow
  • ✏ 修复部署中的错别字。PR #4629 来自 @raisulislam541
  • 🌐 为 docs/docs/help-fastapi.md 添加葡萄牙语翻译。PR #4583 来自 @mateusjs

内部

  • 🔧 在关于乌兹别克语翻译的 issue 中添加通知。PR #4884 来自 @tiangolo

0.77.0

升级

  • ⬆ 将 Starlette 从 0.18.0 升级到 0.19.0。PR #4488 来自 @Kludex
    • 现在,在创建显式 JSONResponse 时,content 参数是必需的。

文档

  • 📝 添加外部文章链接:使用 ConfZ 实现无缝 FastAPI 配置。PR #4414 来自 @silvanmelchior
  • 📝 添加外部文章链接:5 个你应该尝试的 FastAPI 高级功能。PR #4436 来自 @kaustubhgupta
  • ✏ 重新措辞以提高关于 TestClient 的文档可读性。PR #4389 来自 @rgilton
  • 📝 添加关于 Kafka、FastAPI 和 Ably 的博客文章的外部链接。PR #4044 来自 @Ugbot
  • ✏ 修复 docs/en/docs/tutorial/sql-databases.md 中的错别字。PR #4875 来自 @wpyoga
  • ✏ 修复 docs/en/docs/async.md 中的错别字。PR #4726 来自 @Prezu

翻译

  • 🌐 更新 docs/docs/tutorial/query-params-str-validations.md 的中文翻译源代码示例高亮。PR #4237 来自 @caimaoy
  • 🌐 移除翻译文档中对 aiofiles 的引用,因为自 AnyIO 起不再需要。PR #3594 来自 @alonme
  • ✏ 🌐 修复葡萄牙语翻译中关于 docs/docs/tutorial/path-params.md 的错别字。PR #4722 来自 @CleoMenezesJr
  • 🌐 修复某些语言翻译的实时文档服务器。PR #4729 来自 @wakabame
  • 🌐 为 docs/docs/tutorial/cookie-params.md 添加葡萄牙语翻译。PR #4112 来自 @lbmendes
  • 🌐 修复法语翻译中关于 docs/tutorial/body.md 的问题。PR #4332 来自 @Smlep
  • 🌐 为 docs/docs/advanced/conditional-openapi.md 添加日语翻译。PR #2631 来自 @sh0nk
  • 🌐 修复日语翻译中关于 docs/docs/tutorial/body.md 的问题。PR #3062 来自 @a-takahashi223
  • 🌐 为 docs/docs/tutorial/background-tasks.md 添加葡萄牙语翻译。PR #2170 来自 @izaguerreiro
  • 🌐 为 docs/deployment/deta.md 添加葡萄牙语翻译。PR #4442 来自 @lsglucas
  • 🌐 为 docs/async.md 添加俄语翻译。PR #4036 来自 @Winand
  • 🌐 为 docs/tutorial/body.md 添加葡萄牙语翻译。PR #3960 来自 @leandrodesouzadev
  • 🌐 为 docs/tutorial/extra-data-types.md 添加葡萄牙语翻译。PR #4077 来自 @luccasmmg
  • 🌐 更新德语翻译 docs/features.md。PR #3905 来自 @jomue

0.76.0

升级

  • ⬆ 将 Starlette 从 0.17.1 升级到 0.18.0。PR #4483 来自 @Kludex

内部

0.75.2

此版本包括第三方软件包的升级,以处理安全问题。尽管这些问题可能不影响您,但请尽快升级。

修复

  • ✅ 修复新/近期测试,使用新修复的 ValidationError JSON Schema。PR #4806 来自 @tiangolo
  • 🐛 修复 ValidationErrorloc 字段上的 JSON Schema。PR #3810 来自 @dconathan
  • 🐛 修复 APIRouter WebSockets 的前缀支持。PR #2640 来自 @Kludex

升级

  • ⬆️ 更新 ujson 范围以解决 CVE-2021-45958。PR #4804 来自 @tiangolo
  • ⬆️ 为 extras "all" 升级依赖项上限范围。PR #4803 来自 @tiangolo
  • ⬆ 升级 Swagger UI - swagger-ui-dist@4。这解决了 Swagger UI 本身的一个安全问题,即可能向 Swagger UI 注入 HTML。请尽快升级,特别是如果您将 Swagger UI (/docs) 公开给非专业用户。PR #4347 来自 @RAlanWright

内部

  • 🔧 更新赞助商,添加:ExoFlare、Ines Course;移除:Dropbase、Vim.so、Calmcode;更新:Striveworks、TalkPython 和 TestDriven.io。PR #4805 来自 @tiangolo
  • ⬆️ 升级 Codecov GitHub Action。PR #4801 来自 @tiangolo

0.75.1

翻译

内部

0.75.0

功能

0.74.1

功能

  • ✨ 在 scope 中包含路由,允许中间件和其他工具提取其信息。PR #4603 来自 @tiangolo

0.74.0

重大变更

  • ✨ 更新内部 AsyncExitStack 以修复带有 yield 的依赖项的上下文。PR #4575 来自 @tiangolo

带有 yield 的依赖项现在可以捕获 HTTPException 和自定义异常。例如

async def get_database():
    with Session() as session:
        try:
            yield session
        except HTTPException:
            session.rollback()
            raise
        finally:
            session.close()

在带有 yield 的依赖项处理完异常(或未处理)后,异常会再次被引发。这样,任何异常处理程序都可以捕获它,或者最终由默认的内部 ServerErrorMiddleware 处理。

如果您依赖于异常不会被带有 yield 的依赖项接收,并且接收异常会破坏 yield 之后的代码,您可以使用 tryfinally

async def do_something():
    try:
        yield something
    finally:
        some_cleanup()

...这样 finally 块将始终运行,无论是否发生任何异常。

功能

  • 上面的 PR #4575 也修复了 yield 前后代码的 contextvars 上下文。这是该 PR 的主要目标。

这意味着,如果您在 yield 之前在上下文变量中设置了一个值,该值在 yield 之后仍然可用(正如您直观期望的那样)。这也意味着您可以稍后使用令牌重置上下文变量。

例如,现在可以正常工作

from contextvars import ContextVar
from typing import Any, Dict, Optional


legacy_request_state_context_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar(
    "legacy_request_state_context_var", default=None
)

async def set_up_request_state_dependency():
    request_state = {"user": "deadpond"}
    contextvar_token = legacy_request_state_context_var.set(request_state)
    yield request_state
    legacy_request_state_context_var.reset(contextvar_token)

...在此更改之前,在重置上下文变量时会引发错误,因为 contextvars 上下文不同,这是由于其实现方式。

注意:您可能不需要 contextvars,并且最好避免使用它们。但它们非常强大且在某些高级场景中很有用,例如,迁移使用 Flask 的 g 半全局变量的代码。

技术细节:如果您想了解更多技术细节,可以查看 PR 描述 #4575

内部

0.73.0

功能

文档

  • 📝 调整和改进请求文件文档。PR #4470 来自 @tiangolo

修复

  • 🐛 修复使用元组时阻止使用 OpenAPI 的 bug。PR #3874 来自 @victorbenichoux
  • 🐛 在 jsonable_encoder 中,如果指定了自定义编码器,则优先使用它而不是默认值。PR #2061 来自 @viveksunder

内部

  • 🐛 修复文档依赖项缓存,以获取最新的 Material for MkDocs。PR #4466 来自 @tiangolo
  • 🔧 添加 Dropbase 赞助商。PR #4465 来自 @tiangolo

0.72.0

功能

文档

  • 📝 更新 Python 类型文档,添加缺失的 3.6 / 3.9 示例。PR #4434 来自 @tiangolo

翻译

  • 🌐 更新 docs/help-fastapi.md 的中文翻译。PR #3847 来自 @jaystone776
  • 🌐 修复 docs/docs/index.md 的韩语翻译。PR #4195 来自 @kty4119
  • 🌐 为 docs/docs/index.md 添加波兰语翻译。PR #4245 来自 @MicroPanda123
  • 🌐 为 docs\tutorial\path-operation-configuration.md 添加中文翻译。PR #3312 来自 @jaystone776

内部

  • 🔧 启用 MkDocs Material Insiders 的 content.tabs.link。PR #4399 来自 @tiangolo

0.71.0

功能

  • ✨ 添加 Python 3.9 和 Python 3.10 的文档和测试。PR #3712 来自 @tiangolo
    • 您可以从 Python 类型入门 开始,它解释了不同 Python 版本之间的变化,在 Python 3.9 和 Python 3.10 中。
    • 所有 FastAPI 文档都已更新。文档中的每个代码示例,如果可以使用 Python 3.9 或 Python 3.10 的不同语法,现在都以选项卡的形式提供了所有替代方案。
  • ⬆️ 将 Starlette 升级到 0.17.1。PR #4145 来自 @simondale00

内部

0.70.1

此 FastAPI 版本没有什么特别有趣的内容。它主要用于启用/解除对 Pydantic 下一版本的发布阻塞,该版本包含大量新功能和改进。🤩

修复

  • 🐛 修复 dataclasses 的 JSON Schema,支持 Pydantic 1.9 中的修复。PR #4272 来自 @PrettyWood

翻译

  • 🌐 为 docs/tutorial/request-forms-and-files.md 添加韩语翻译。PR #3744 来自 @NinaHwang
  • 🌐 为 docs/tutorial/request-files.md 添加韩语翻译。PR #3743 来自 @NinaHwang
  • 🌐 为 docs/tutorial/query-params-str-validations.md 添加葡萄牙语翻译。PR #3965 来自 @leandrodesouzadev
  • 🌐 为 docs/tutorial/response-status-code.md 添加韩语翻译。PR #3742 来自 @NinaHwang
  • 🌐 添加教程 - JSON 兼容编码器的韩语翻译。PR #3152 来自 @NEONKID
  • 🌐 添加教程 - 路径参数和数字验证的韩语翻译。PR #2432 来自 @hard-coders
  • 🌐 为 docs/docs/deployment/versions.md 添加韩语翻译。PR #4121 来自 @DevDae
  • 🌐 修复 docs/docs/tutorial/index.md 的韩语翻译。PR #4193 来自 @kimjaeyoonn
  • 🔧 添加 CryptAPI 赞助商。PR #4264 来自 @tiangolo
  • 📝 更新 docs/tutorial/dependencies/classes-as-dependencies:在 Classes as dependencies 的描述中添加查询参数的类型。PR #4015 来自 @0417taehyun
  • 🌐 为教程 - 初学者添加法语翻译。PR #3455 来自 @Smlep
  • 🌐 为 docs/tutorial/path-params.md 添加法语翻译。PR #3548,作者 @Smlep
  • 🌐 为 docs/tutorial/query-params.md 添加法语翻译。PR #3556,作者 @Smlep
  • 🌐 为 docs/python-types.md 添加土耳其语翻译。PR #3926,作者 @BilalAlpaslan

内部

0.70.0

此版本仅将 Starlette 升级到最新版本 0.16.0,其中包含多项错误修复和一些小的破坏性更改。

连续三个版本是独立的,以便您可以逐步迁移

  • 首先升级到 FastAPI 0.68.2,没有破坏性更改,但升级了所有子依赖项。
  • 接下来升级到 FastAPI 0.69.0,它将 Starlette 升级到 0.15.0,支持 AnyIO,并且更有可能在您的代码中引起破坏性更改。
  • 最后升级到 FastAPI 0.70.0,仅将 Starlette 升级到最新版本 0.16.0,并进行额外的错误修复。

这样,万一其中一个版本对您的代码产生了破坏性更改,您仍然可以受益于之前的升级。✨

破坏性更改 - 升级

  • ⬆️ 将 Starlette 升级到 0.16.0。PR #4016,作者 @tiangolo

同时升级可选依赖项的范围

  • "jinja2 >=2.11.2,<4.0.0"
  • "itsdangerous >=1.1.0,<3.0.0"

0.69.0

破坏性更改 - 升级

此版本增加了对 Trio 的支持。✨

它将 Starlette 的版本升级到 0.15.0,现在基于 AnyIO,并且 **FastAPI** 中的内部异步组件现在也基于 AnyIO,使其与 asyncioTrio 都兼容。

您可以阅读有关使用 Trio 和 Hypercorn 运行 FastAPI 的文档:在 FastAPI 中使用 Trio 和 Hypercorn 进行部署

此版本还移除了 graphene 作为 GraphQL 的可选依赖项。如果您需要使用 GraphQL,现在推荐的库是 Strawberry。您可以阅读新的 FastAPI 和 GraphQL 文档

功能

  • ✨ 通过 AnyIO 添加对 Trio 的支持,将 Starlette 升级到 0.15.0。PR #3372,作者 @graingert
  • ➖ 移除 graphene 作为可选依赖项。PR #4007,作者 @tiangolo

文档

  • 📝 添加使用 Trio 和 Hypercorn 进行部署的文档。PR #4014,作者 @tiangolo
  • ✏ 修正部署指南中的拼写错误。PR #3975,作者 @ghandic
  • 📝 更新文档,在通过 extra 安装时使用方括号,使用引号以兼容 Zsh。PR #3131,作者 @tomwei7
  • 📝 添加文章外部链接:使用 FastAPI 和 Heroku 部署 ML 模型。PR #3904,作者 @kaustubhgupta
  • ✏ 修正 docs/en/docs/contributing.md 文件路径中的拼写错误。PR #3752,作者 @NinaHwang
  • ✏ 修正 docs/en/docs/advanced/path-operation-advanced-configuration.mddocs/en/docs/release-notes.md 中的拼写错误。PR #3750,作者 @saintmalik
  • ✏️ 在安全教程中添加遗漏的逗号。PR #3564,作者 @jalvaradosegura
  • ✏ 修正 docs/en/docs/help-fastapi.md 中的拼写错误。PR #3760,作者 @jaystone776
  • ✏ 修正 docs/en/docs/tutorial/bigger-applications.md 中关于文件路径的拼写错误。PR #3285,作者 @HolyDorus
  • ✏ 重新措辞以阐明 docs/en/docs/tutorial/testing.md 中的测试客户端。PR #3382,作者 @Bharat123rox
  • 📝 修正高亮代码错误。PR #3325,作者 @paxcodes
  • 📝 添加文章外部链接:如何将 FastAPI 应用部署到 Heroku。PR #3241,作者 @Jarmos-san
  • ✏ 修正 docs/en/docs/advanced/templates.md 中的拼写错误(误译)。PR #3211,作者 @oerpli
  • 📝 从 docs/en/docs/tutorial/request-files.md 中移除关于 Swagger UI(现已支持)的注释。PR #2803,作者 @gsganden
  • ✏ 修正 docs/tutorial/handling-errors.md 中的拼写措辞。PR #2700,作者 @graue70

翻译

  • 🌐 初始化阿塞拜疆语翻译。PR #3941,作者 @madatbay
  • 🌐 为 docs/fastapi-people.md 添加土耳其语翻译。PR #3848,作者 @BilalAlpaslan

内部

  • 📝 添加支持的 Python 版本徽章。PR #2794,作者 @hramezani
  • ✏ 修正日语文档 docs/docs/deployment/docker.md 中的链接。PR #3245,作者 @utamori
  • 🔧 修正 pytest 设置中的 DeprecationWarning 配置和注释。PR #4008,作者 @graingert
  • 🔧 交换亮色/暗色主题按钮图标。PR #3246,作者 @eddsalkield
  • 🔧 仅在 Python 3.7 及以上版本进行 linting。PR #4006,作者 @tiangolo
  • 🔧 为阿塞拜疆语添加 GitHub Action notify-translations 配置。PR #3995,作者 @tiangolo

0.68.2

此版本没有破坏性更改。🎉

它升级了子依赖项的版本范围,以便使用 FastAPI 的应用程序可以轻松地升级它们。

很快将发布新的 FastAPI 版本,升级 Starlette 以利用其最新改进,但由于这更有可能引起破坏性更改,因此将在单独的版本中发布。

功能

  • ⬆ 增加 aiofiles 的支持版本以抑制警告。PR #2899,作者 @SnkSynthesis
  • ➖ 在 Python >= 3.7 中不再需要 backports。PR #1880,作者 @FFY00
  • ⬆ 将所需的 Python 版本升级到 >= 3.6.1,这是 typing.Deque 所需的,由 Pydantic 使用。PR #2733,作者 @hukkin
  • ⬆️ 将 Uvicorn 的最大范围提升到 0.15.0。PR #3345,作者 @Kludex

文档

  • 📝 更新 GraphQL 文档,推荐 Strawberry。PR #3981,作者 @tiangolo
  • 📝 重写和扩展部署指南:概念、Uvicorn、Gunicorn、Docker、容器、Kubernetes。PR #3974,作者 @tiangolo
  • 📝 使用更多解释和图表更新 HTTPS 指南。PR #3950,作者 @tiangolo

翻译

  • 🌐 为 docs/features.md 添加土耳其语翻译。PR #1950,作者 @ycd
  • 🌐 为 docs/benchmarks.md 添加土耳其语翻译。PR #2729,作者 @Telomeraz
  • 🌐 为 docs/index.md 添加土耳其语翻译。PR #1908,作者 @ycd
  • 🌐 为 docs/tutorial/body.md 添加法语翻译。PR #3671,作者 @Smlep
  • 🌐 为 deployment/docker.md 添加法语翻译。PR #3694,作者 @rjNemo
  • 🌐 为 docs/tutorial/path-params.md 添加葡萄牙语翻译。PR #3664,作者 @FelipeSilva93
  • 🌐 为 docs/deployment/https.md 添加葡萄牙语翻译。PR #3754,作者 @lsglucas
  • 🌐 为 docs/features.md 添加德语翻译。PR #3699,作者 @mawassk

内部

  • ✨ 更新 GitHub Action: notify-translations,以避免竞争条件。PR #3989,作者 @tiangolo
  • ⬆️ 升级开发依赖 autoflake,支持多行导入。PR #3988,作者 @tiangolo
  • ⬆️ 增加测试和文档的依赖范围:pytest-cov, pytest-asyncio, black, httpx, sqlalchemy, databases, mkdocs-markdownextradata-plugin。PR #3987,作者 @tiangolo
  • 👥 更新 FastAPI People。PR #3986,作者 @github-actions[bot]
  • 💚 修正 README 和主页中的徽章。PR #3979,作者 @ghandic
  • ⬆ 升级内部测试依赖:mypy 到 0.910 版本,添加新需要的类型包。PR #3350,作者 @ArcLightSlavik
  • ✨ 添加 Deepset 赞助。PR #3976,作者 @tiangolo
  • 🎨 调整 shell 动画的 CSS 样式。PR #3888,作者 @tiangolo
  • 🔧 添加新赞助商 Calmcode.io。PR #3777,作者 @tiangolo

0.68.1

  • ✨ 添加对 read_with_orm_mode 的支持,以支持 SQLModel 的关系属性。PR #3757,作者 @tiangolo

翻译

  • 🌐 添加 docs/fastapi-people.md 的葡萄牙语翻译。PR #3461,作者 @ComicShrimp
  • 🌐 为 docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 添加中文翻译。PR #3492,作者 @jaystone776
  • 🔧 为德语和印度尼西亚语添加新的翻译跟踪问题。PR #3718,作者 @tiangolo
  • 🌐 为 docs/tutorial/dependencies/sub-dependencies.md 添加中文翻译。PR #3491,作者 @jaystone776
  • 🌐 为 docs/advanced/index.md 添加葡萄牙语翻译。PR #3460,作者 @ComicShrimp
  • 🌐 docs/async.md 的葡萄牙语翻译。PR #1330,作者 @Serrones
  • 🌐 为 docs/async.md 添加法语翻译。PR #3416,作者 @Smlep

内部

  • ✨ 添加 GitHub Action: Notify Translations。PR #3715,作者 @tiangolo
  • ✨ 更新 FastAPI People 和赞助商的计算。PR #3714,作者 @tiangolo
  • ✨ 启用 Material for MkDocs Insiders 的最新功能。PR #3710,作者 @tiangolo
  • 🔥 移除/清理文档中 features 的示例中的多余导入。PR #3709,作者 @tiangolo
  • ➕ 更新文档库以包含 Markdown 中的源代码。PR #3648,作者 @tiangolo
  • ⬆ 启用 Python 3.9 的测试。PR #2298,作者 @Kludex
  • 👥 更新 FastAPI People。PR #3642,作者 @github-actions[bot]

0.68.0

功能

  • ✨ 支持在每个路径操作中为 OpenAPI Schema 添加扩展和更新。新文档:FastAPI 路径操作高级配置 - OpenAPI Extra。初始 PR #1922,作者 @edouardlp
  • ✨ 为 FastAPI 类添加额外的 OpenAPI 元数据参数,这些参数将显示在自动 API 文档 UI 中。新文档:元数据和文档 URL。初始 PR #1812,作者 @dkreeft
  • ✨ 为所有安全方案类添加 description 参数,例如 APIKeyQuery(name="key", description="A very cool API key")。PR #1757,作者 @hylkepostma
  • ✨ 更新 OpenAPI 模型,支持递归模型和扩展。PR #3628,作者 @tiangolo
  • ✨ 从 Starlette 导入并重新导出数据结构,用于 Request 属性,位于 fastapi.datastructures。初始 PR #1872,作者 @jamescurtin

文档

  • 📝 使用更性别中立的语言更新关于 async 和 response-model 的文档。PR #1869,作者 @Edward-Knight

翻译

  • 🌐 为 docs/python-types.md 添加俄语翻译。PR #3039,作者 @dukkee
  • 🌐 为 docs/tutorial/dependencies/index.md 添加中文翻译。PR #3489,作者 @jaystone776
  • 🌐 为 docs/external-links.md 添加俄语翻译。PR #3036,作者 @dukkee
  • 🌐 为 docs/tutorial/dependencies/global-dependencies.md 添加中文翻译。PR #3493,作者 @jaystone776
  • 🌐 为 docs/deployment/versions.md 添加葡萄牙语翻译。PR #3618,作者 @lsglucas
  • 🌐 为 docs/tutorial/security/oauth2-jwt.md 添加日语翻译。PR #3526,作者 @sattosan

内部

  • ✅ 将 docs_src 目录添加到测试覆盖范围并更新测试。初始 PR #1904,作者 @Kludex
  • 🔧 添加新的 GitHub 模板,包含创建新问题的表单。PR #3612,作者 @tiangolo
  • 📝 在文档中添加官方 FastAPI Twitter:@fastapi。PR #3578,作者 @tiangolo

0.67.0

功能

文档

  • 📝 添加外部链接:如何创建假证书颁发机构并为 FastAPI 生成 TLS 证书。PR #2839,作者 @aitoehigie
  • ✏ 修正 body-nested-models.md 中的代码高亮行。PR #3463,作者 @jaystone776
  • ✏ 修正 body-nested-models.md 中的拼写错误。PR #3462,作者 @jaystone776
  • ✏ 修正 docs/en/docs/tutorial/schema-extra-example.md 中的拼写错误 "might me" -> "might be"。PR #3362,作者 @dbrakman
  • 📝 添加外部链接:使用 NuxtJS 和 FastAPI 构建简单的电子商务。PR #3271,作者 @ShahriyarR
  • 📝 添加外部链接:使用 Sklearn、FastAPI 和 Docker 服务机器学习模型。PR #2974,作者 @rodrigo-arenas
  • ✏️ 修正 datastructures 文件中 docstring 的拼写错误。PR #2887,作者 @Kludex
  • 📝 添加外部链接:在 Ubuntu 上部署 FastAPI 并使用 Caddy 2 Web 服务器提供服务。PR #3572,作者 @tiangolo
  • 📝 添加外部链接,替换 #1898。PR #3571,作者 @tiangolo

内部

  • 🎨 改进赞助商样式,添加圆角边框。PR #2388,作者 @Kludex
  • 👷 更新 GitHub Action latest-changes。PR #3574,作者 @tiangolo
  • 👷 更新 GitHub Action latest-changes。PR #3573,作者 @tiangolo
  • 👷 重命名并澄清 CI 工作流作业名称。PR #3570,作者 @tiangolo
  • 👷 更新 GitHub Action latest-changes,第二次尝试 ⚾。PR #3575,作者 @tiangolo
  • 🔧 对文档中的外部链接进行排序,将最新的放在顶部。PR #3568,作者 @tiangolo

0.66.1

翻译

  • 🌐 为德语翻译设置基本配置。PR #3522,作者 @0x4Dark
  • 🌐 为 docs/tutorial/security/index.md 添加葡萄牙语翻译。PR #3507,作者 @oandersonmagalhaes
  • 🌐 为 docs/deployment/index.md 添加葡萄牙语翻译。PR #3337,作者 @lsglucas

内部

  • 🔧 配置严格的 pytest 选项并更新/重构测试。将 pytest 升级到 >=6.2.4,<7.0.0,将 pytest-cov 升级到 >=2.12.0,<3.0.0。初始 PR #2790,作者 @graingert
  • ⬆️ 升级 python-jose 依赖项到 >=3.3.0,<4.0.0 用于测试。PR #3468,作者 @tiangolo

0.66.0

功能

  • ✨ 允许将 response_class 设置为 RedirectResponseFileResponse,并从函数返回 URL。新的和更新的文档在教程部分自定义响应 - HTML、流、文件等,在 RedirectResponseFileResponse。PR #3457,作者 @tiangolo

修复

  • 🐛 修正 jsonable_encoder 中 dict 的 include/exclude。PR #2016,作者 @Rubikoid
  • 🐛 支持生成 OpenAPI 的自定义 OpenAPI / JSON Schema 字段。PR #1429,作者 @jmagnusson

翻译

  • 🌐 为 tutorial/query-params.md 添加西班牙语翻译。PR #2243,作者 @mariacamilagl
  • 🌐 为 advanced/response-directly.md 添加西班牙语翻译。PR #1253,作者 @jfunez
  • 🌐 为 advanced/additional-status-codes.md 添加西班牙语翻译。PR #1252,作者 @jfunez
  • 🌐 为 advanced/path-operation-advanced-configuration.md 添加西班牙语翻译。PR #1251,作者 @jfunez

0.65.3

修复

  • ♻ 在未提供 Content-Type 头部时,假定请求体包含 JSON。这修复了 0.65.2 版本 PR #2118 中引入的破坏性更改。它应该允许升级 FastAPI 应用程序,特别是对于发送 JSON 数据但未提供 Content-Type 头的客户端。并且仍然有针对 CSRF 的保护。PR #3456,作者 @tiangolo

翻译

  • 🌐 初始化印度尼西亚语翻译。PR #3014,作者 @pace-noge
  • 🌐 翻译教程 - 路径参数 (Tutorial - Path Parameters)。PR #2219,作者 @mariacamilagl
  • 🌐 翻译教程 - 入门 (Tutorial - First Steps)。PR #2208,作者 @mariacamilagl
  • 🌐 翻译教程 - 请求体 - 字段 (Tutorial - Body - Fields)。PR #3420,作者 @ComicShrimp
  • 🌐 为教程 - 请求 - 表单 - 和 - 文件 (Tutorial - Request - Forms - and - Files) 添加中文翻译。PR #3249,作者 @jaystone776
  • 🌐 为教程 - 处理错误 (Tutorial - Handling - Errors) 添加中文翻译。PR #3299,作者 @jaystone776
  • 🌐 为教程 - 表单数据 (Tutorial - Form - Data) 添加中文翻译。PR #3248,作者 @jaystone776
  • 🌐 为教程 - 请求体更新 (Tutorial - Body - Updates) 添加中文翻译。PR #3237,作者 @jaystone776
  • 🌐 为 FastAPI People 添加中文翻译。PR #3112,作者 @hareru
  • 🌐 为项目生成 (Project Generation) 添加法语翻译。PR #3197,作者 @Smlep
  • 🌐 为 Python 类型介绍 (Python Types Intro) 添加法语翻译。PR #3185,作者 @Smlep
  • 🌐 为外部链接 (External Links) 添加法语翻译。PR #3103,作者 @Smlep
  • 🌐 为替代方案、灵感和比较 (Alternatives, Inspiration and Comparisons) 添加法语翻译。PR #3020,作者 @rjNemo
  • 🌐 修正教程 - Python 类型介绍 (Tutorial - Python Types Intro) 中的中文翻译代码片段不匹配。PR #2573,作者 @BoYanZh
  • 🌐 为开发贡献 (Development Contributing) 添加葡萄牙语翻译。PR #1364,作者 @Serrones
  • 🌐 为教程 - 请求 - 文件 (Tutorial - Request - Files) 添加中文翻译。PR #3244,作者 @jaystone776

内部

0.65.2

安全修复

  • 🔒 在假定 JSON 之前检查 Content-Type 请求头。初始 PR #2118,作者 @patrickkwang

此更改修复了使用 cookie 进行身份验证的路径操作中,当浏览器发送 JSON 负载时存在的 CSRF 安全漏洞。

0.65.2 版本之前的版本中,即使发送的 content-type 头部未设置为 application/json 或兼容的 JSON 媒体类型(例如 application/geo+json),FastAPI 也会尝试将请求体读取为 JSON。

因此,一个 Content-Type 为 text/plain 但包含 JSON 数据的请求将被接受,并且 JSON 数据将被提取。

但是,Content-Type 为 text/plain 的请求被豁免了 CORS 预检请求,因为它被认为是简单请求。因此,浏览器会立即执行它们,包括 cookie,并且文本内容可以是一个被 FastAPI 应用程序解析和接受的 JSON 字符串。

有关更多详细信息,请参阅 CVE-2021-32677

感谢 Dima Boger 的安全报告!🙇🔒

内部

  • 🔧 更新赞助商徽章,课程捆绑包。PR #3340,作者 @tiangolo
  • 🔧 添加新的金牌赞助商 Jina 🎉。PR #3291,作者 @tiangolo
  • 🔧 添加 FastAPI 课程捆绑包的新的横幅赞助商徽章。PR #3288,作者 @tiangolo
  • 👷 升级 Issue Manager GitHub Action。PR #3236,作者 @tiangolo

0.65.1

安全修复

0.65.0

破坏性更改 - 升级

  • ⬆️ 将 Starlette 升级到 0.14.2,包括从 Starlette 迁移过来的内部 UJSONResponse。这包含了 Starlette 的多项错误修复和功能。PR #2335,作者 @hanneskuettner

翻译

内部

  • 👷 添加 GitHub Action 缓存以加快 CI 安装速度。PR #3204,作者 @tiangolo
  • ⬆️ 将 setup-python GitHub Action 升级到 v2。PR #3203,作者 @tiangolo
  • 🐛 修复用于生成带有 overrides 样板代码的新语言翻译的文档脚本。PR #3202,作者 @tiangolo
  • ✨ 添加新的 Deta 横幅徽章,新增赞助等级 🙇。PR #3194,作者 @tiangolo
  • 👥 更新 FastAPI People。PR #3189,作者 @github-actions[bot]
  • 🔊 更新 FastAPI People,以便更好地调试。PR #3188@tiangolo 提交。

0.64.0

新功能

修复

  • 📌 固定 SQLAlchemy 的测试范围,因为它不使用 SemVer。PR #3001@tiangolo 提交。
  • 🎨 为 mypy 添加了新必需的类型注解。PR #2882@tiangolo 提交。
  • 🎨 移除了内部的 "type: ignore",现已不再需要。PR #2424@AsakuraMizu 提交。

文档

  • 📝 添加了俄语文章“FastAPI: знакомимся с фреймворком”的链接。PR #2564@trkohler 提交。
  • 📝 添加了外部博客文章“Authenticate Your FastAPI App with Auth0”的链接。PR #2172@dompatmore 提交。
  • 📝 修复了指向文章“Machine learning model serving in Python using FastAPI and Streamlit”的损坏链接。PR #2557@davidefiocco 提交。
  • 📝 添加了 FastAPI Medium 文章:Deploy a dockerized FastAPI application to AWS。PR #2515@vjanz 提交。
  • ✏️ 修复了“Handling Errors”教程中的拼写错误。PR #2486@johnthagen 提交。
  • ✏️ 修复了“Security OAuth2 scopes”文档中的拼写错误。PR #2407@jugmac00 提交。
  • ✏️ 修复了“SQL (Relational) Databases”文档中的拼写错误/澄清。PR #2393@kangni 提交。
  • 📝 添加了外部链接“FastAPI for Flask Users”。PR #2280@amitness 提交。

翻译

  • 🌐 修复了教程“Query Parameters”的中文翻译,并移除了过时的内容。PR #3051@louis70109 提交。
  • 🌐 为教程“Background Tasks”添加了法语翻译。PR #3098@Smlep 提交。
  • 🌐 修复了韩语文档 docs/docs/index.md 的翻译。PR #3159@SueNaEunYang 提交。
  • 🌐 为教程“Query Parameters”添加了韩语翻译。PR #2390@hard-coders 提交。
  • 🌐 为 FastAPI People 添加了法语翻译。PR #2232@JulianMaurin 提交。
  • 🌐 为教程“Path Parameters”添加了韩语翻译。PR #2355@hard-coders 提交。
  • 🌐 为“Features”添加了法语翻译。PR #2157@Jefidev 提交。
  • 👥 更新 FastAPI People。PR #3031@github-actions[bot] 提交。
  • 🌐 为教程“Debugging”添加了中文翻译。PR #2737@blt232018 提交。
  • 🌐 为教程“Security - OAuth2 with Password (and hashing), Bearer with JWT tokens”添加了中文翻译。PR #2642@waynerv 提交。
  • 🌐 为教程“Header Parameters”添加了韩语翻译。PR #2589@mode9 提交。
  • 🌐 为教程“Metadata and Docs URLs”添加了中文翻译。PR #2559@blt232018 提交。
  • 🌐 为教程“First Steps”添加了韩语翻译。PR #2323@hard-coders 提交。
  • 🌐 为教程“CORS (Cross-Origin Resource Sharing)”添加了中文翻译。PR #2540@blt232018 提交。
  • 🌐 为教程“Middleware”添加了中文翻译。PR #2334@lpdswing 提交。
  • 🌐 为教程“Intro”添加了韩语翻译。PR #2317@hard-coders 提交。
  • 🌐 为教程“Bigger Applications - Multiple Files”添加了中文翻译。PR #2453@waynerv 提交。
  • 🌐 为教程“Security - Security Intro”添加了中文翻译。PR #2443@waynerv 提交。
  • 🌐 为教程“Header Parameters”添加了中文翻译。PR #2412@maoyibo 提交。
  • 🌐 为教程“Extra Data Types”添加了中文翻译。PR #2410@maoyibo 提交。
  • 🌐 为部署“Deployment - Docker”添加了日语翻译。PR #2312@tokusumi 提交。
  • 🌐 为部署“Deployment - Versions”添加了日语翻译。PR #2310@tokusumi 提交。
  • 🌐 为教程“Cookie Parameters”添加了中文翻译。PR #2261@alicrazy1947 提交。
  • 🌐 为教程“Static files”添加了日语翻译。PR #2260@tokusumi 提交。
  • 🌐 为教程“Testing”添加了日语翻译。PR #2259@tokusumi 提交。
  • 🌐 为教程“Debugging”添加了日语翻译。PR #2256@tokusumi 提交。
  • 🌐 为教程“Middleware”添加了日语翻译。PR #2255@tokusumi 提交。
  • 🌐 为“Concurrency and async / await”添加了日语翻译。PR #2058@tokusumi 提交。
  • 🌐 为教程“Security - Simple OAuth2 with Password and Bearer”添加了中文翻译。PR #2514@waynerv 提交。
  • 🌐 为部署“Deployment - Deta”添加了日语翻译。PR #2314@tokusumi 提交。
  • 🌐 为教程“Security - Get Current User”添加了中文翻译。PR #2474@waynerv 提交。
  • 🌐 为部署“Deployment - Manually”添加了日语翻译。PR #2313@tokusumi 提交。
  • 🌐 为部署“Deployment - Intro”添加了日语翻译。PR #2309@tokusumi 提交。
  • 🌐 为 FastAPI People 添加了日语翻译。PR #2254@tokusumi 提交。
  • 🌐 为“Advanced - Path Operation Advanced Configuration”添加了日语翻译。PR #2124@Attsun1031 提交。
  • 🌐 为“External Links”添加了日语翻译。PR #2070@tokusumi 提交。
  • 🌐 为教程“Body - Updates”添加了日语翻译。PR #1956@SwftAlpc 提交。
  • 🌐 为教程“Form Data”添加了日语翻译。PR #1943@SwftAlpc 提交。
  • 🌐 为教程“Cookie Parameters”添加了日语翻译。PR #1933@SwftAlpc 提交。

内部

0.63.0

新功能

  • ✨ 改进了类型注解,增加了对 mypy --strict 的支持,包括内部和外部包。PR #2547@tiangolo 提交。

重大变更

  • ⬆️ 升级 Uvicorn,当安装 fastapi[all] 时,将安装包括 uvloop 在内的最新版本,新范围是 uvicorn[standard] >=0.12.0,<0.14.0。PR #2548@tiangolo 提交。

修复

  • 🐛 PR #2547(参见上方)也修复了 callbacks 参数和使用 OAuth2 类时的一些 mypy 误报错误。

文档

翻译

  • 🌐 添加文档语言选择器小部件。PR #2542@tiangolo 提交。
  • 🌐 为教程“Response Status Code”添加了中文翻译。PR #2442@waynerv 提交。
  • 🌐 开始翻译文档为阿尔巴尼亚语。PR #2516@vjanz 提交。
  • 🌐 为教程“Extra Models”添加了中文翻译。PR #2416@waynerv 提交。
  • 🌐 为教程“Response Model”添加了中文翻译。PR #2414@waynerv 提交。
  • 🌐 为教程“Schema Extra Example”添加了中文翻译。PR #2411@maoyibo 提交。
  • 🌐 为 Index 添加了韩语翻译。PR #2192@hard-coders 提交。
  • 🌐 为“Advanced User Guide - Additional Status Codes”添加了日语翻译。PR #2145@Attsun1031 提交。

内部

  • 🐛 修复了翻译文档的覆盖目录。PR #2541@tiangolo 提交。
  • ➖ 移除 Typer 作为文档构建依赖(由 typer-cli 覆盖),以解决 pip 解析器冲突。PR #2539@tiangolo 提交。
  • ✨ 添加新闻通讯:FastAPI and friends。PR #2509@tiangolo 提交。
  • ✨ 添加新的黄金赞助商:InvestSuite 🎉。PR #2508@tiangolo 提交。
  • 🔧 添加问题模板配置。PR #2476@tiangolo 提交。

0.62.0

新功能

  • ✨ 支持共享/顶层参数(依赖项、标签等)。PR #2434@tiangolo 提交。

到目前为止,对于多个选项,将其应用于一组路径操作的唯一方法是在 include_router 中。这工作得很好,但调用 app.include_router()router.include_router() 通常是在另一个文件中完成的。

这意味着,例如,要对路由器中的所有路径操作应用身份验证,最终会在另一个文件中完成,而不是将相关逻辑保留在一起。

在某些情况下,在 include_router 中设置选项仍然很有意义,例如,覆盖或增加第三方路由器的配置。但对于作为更大应用程序一部分的路由器,在创建 APIRouter 时添加这些设置可能会更有意义。

FastAPI

这允许设置(大部分新)参数(除了已有的参数)

  • default_response_class: 已更新,以处理 APIRouterinclude_router 中的默认值。
  • dependencies: 以包含 ✨ 适用于整个应用程序的顶层依赖项 ✨。例如,添加全局身份验证。
  • callbacks: OpenAPI 回调,适用于所有路径操作
  • deprecated: 将所有路径操作标记为已弃用。🤷
  • include_in_schema: 允许将所有路径操作排除在 OpenAPI 模式之外。
  • responses: OpenAPI 响应,适用于所有路径操作

例如

from fastapi import FastAPI, Depends


async def some_dependency():
    return


app = FastAPI(dependencies=[Depends(some_dependency)])

APIRouter

这允许设置(大部分新)参数(除了已有的参数)

  • default_response_class: 已更新,以处理 APIRouterinclude_router 中的默认值。例如,在创建回调时,不再需要显式设置它。
  • dependencies: 以包含 ✨ 适用于路由器中所有路径操作的路由器级依赖项 ✨。到目前为止,这只能通过 include_router 实现。
  • callbacks: OpenAPI 回调,适用于此路由器中的所有路径操作
  • deprecated: 将此路由器中的所有路径操作标记为已弃用。
  • include_in_schema: 允许将此路由器中的所有路径操作排除在 OpenAPI 模式之外。
  • responses: OpenAPI 响应,适用于此路由器中的所有路径操作
  • prefix: 设置路由器的路径前缀。到目前为止,这只能在调用 include_router 时实现。
  • tags: OpenAPI 标签,应用于此路由器中的所有路径操作

例如

from fastapi import APIRouter, Depends


async def some_dependency():
    return


router = APIRouter(prefix="/users", dependencies=[Depends(some_dependency)])

include_router

这些设置中的大多数现在都支持 APIRouter,它通常更靠近相关代码,因此建议在可能的情况下使用 APIRouter

但是 include_router 在包含第三方路由器或在多个项目之间共享的通用路由器时,仍然很有用,例如,添加选项(如 dependenciesprefixtags)。

此 PR 允许设置(大部分新)参数(除了已有的参数)

  • default_response_class: 已更新,以处理 APIRouterFastAPI 中的默认值。
  • deprecated: 将路由器中的所有路径操作在 OpenAPI 中标记为已弃用。
  • include_in_schema: 允许将所有路径操作从 OpenAPI 模式中禁用。
  • callbacks: OpenAPI 回调,适用于此路由器中的所有路径操作

注意:所有之前的参数都还在,所以仍然可以声明 dependenciesinclude_router 中。

重大变更

  • PR #2434 包括多项改进,这些改进不应影响正常用例,但可能会影响高级场景。
    • 如果您正在测试生成的 OpenAPI(您不应该这样做,FastAPI 已经为您进行了广泛的测试):tagsinclude_router路径操作中的顺序已更新以保持一致,但这是一个简单的顺序更改。
    • 如果您有高级自定义逻辑来访问每个路由的 route.response_class,或 router.default_response_class,或 app.default_response_class:现在 APIRouteresponse_class 的默认值,以及 APIRouterFastAPIdefault_response_class 的默认值是内部使用的 DefaultPlaceholder,用于处理和解决默认值和覆盖。DefaultPlaceholder 内部的实际响应类可在 route.response_class.value 中找到。

文档

翻译

  • 🌐 为“Advanced - Custom Response”添加了日语翻译。PR #2193@Attsun1031 提交。
  • 🌐 为“Benchmarks”添加了中文翻译。PR #2119@spaceack 提交。
  • 🌐 为教程“Body - Nested Models”添加了中文翻译。PR #1609@waynerv 提交。
  • 🌐 为“Advanced - Custom Response”添加了中文翻译。PR #1459@RunningIkkyu 提交。
  • 🌐 为“Advanced - Return a Response Directly”添加了中文翻译。PR #1452@RunningIkkyu 提交。
  • 🌐 为“Advanced - Additional Status Codes”添加了中文翻译。PR #1451@RunningIkkyu 提交。
  • 🌐 为“Advanced - Path Operation Advanced Configuration”添加了中文翻译。PR #1447@RunningIkkyu 提交。
  • 🌐 为“Advanced User Guide - Intro”添加了中文翻译。PR #1445@RunningIkkyu 提交。

内部

  • 🔧 更新 TestDriven 链接到赞助商部分中的课程。PR #2435@tiangolo 提交。
  • 🍱 更新赞助商 logo。PR #2418@tiangolo 提交。
  • 💚 修复了在 forks 中禁用 Material for MkDocs Insiders 的安装,第一次尝试 ⚾。PR #2340@tiangolo 提交。
  • 🐛 修复了在 forks 中禁用 Material for MkDocs Insiders 的安装。PR #2339@tiangolo 提交。
  • ✨ 添加白银赞助商 WeTransfer。PR #2338@tiangolo 提交。
  • ✨ 设置并启用了 Material for MkDocs Insiders 来构建文档。PR #2325@tiangolo 提交。

0.61.2

修复

  • 📌 放宽 Swagger UI 版本限制。PR #2089@jmriebold 提交。
  • 🐛 修复了从 exception_handlers 覆盖自定义 HTTPException 和 RequestValidationError 的错误。PR #1924@uriyyo 提交。
  • ✏️ 修复了依赖项工具中的拼写错误并清理了未使用的变量。PR #1912@Kludex 提交。

文档

  • ✏️ 修复了教程“Path Parameters”中的拼写错误。PR #2231@mariacamilagl 提交。
  • ✏️ 修复了文档中的一个样式错误。PR #2206@ddobrinskiy 提交。
  • ✏️ 修复了文档中的大写拼写错误。PR #2204@imba-tjd 提交。
  • ✏️ 修复了文档中的拼写错误。PR #2179@ammarasmro 提交。
  • 📝 更新/修复了文档中指向 HTTPS 的链接。PR #2165@imba-tjd 提交。
  • ✏️ 修复了文档中的拼写错误并进行了一些措辞修改。PR #2159@nukopy 提交。
  • 📝 修复了教程“Body - Nested Models 3”中示例代码的一致性。PR #2158@nukopy 提交。
  • 📝 修复了重命名的参数 content_type 的拼写错误。PR #2135@TeoZosa 提交。
  • ✏️ 修复了文档中的小拼写错误。PR #2122@TeoZosa 提交。
  • ✏️ 修复了文档和源代码示例中的拼写错误。PR #2102@AdrianDeAnda 提交。
  • ✏️ 修复了文档中错误的 Celery URL。PR #2100@CircleOnCircles 提交。
  • 📝 简化了“Python Types”的介绍,所有当前支持的 Python 版本都包含类型提示 🎉。PR #2085@ninjaaron 提交。
  • 📝 修复了教程“Body - Nested Models 3”中示例代码的集合(set)使用。PR #2054@hitrust 提交。
  • 📝 修复了教程“Body - Nested Models 2”中示例代码的集合(set)使用。PR #2053@hitrust 提交。
  • 📝 修复了教程“Body - Nested Models”中示例代码的集合(set)使用。PR #2052@hitrust 提交。
  • ✏️ 修复了“Benchmarks”中的拼写错误。PR #1995@AlejoAsd 提交。
  • 📝 在 CORS 教程中添加了关于 allow_origins 使用 ["*"] 和 allow_credentials 的说明。PR #1895@dsmurrell 提交。
  • 📝 添加了部署到 Deta 的说明,这是第一个黄金赞助商 🎉。PR #2303@tiangolo 提交。
  • 👥 更新 FastAPI People。PR #2282@github-actions[bot] 提交。
  • ✏️ 修复了教程“Query parameters”中的大写错误。PR #2245@mariacamilagl 提交。
  • 📝 将文章添加到外部链接。PR #2247@tiangolo 提交。
  • ✏️ 修复了西班牙语教程索引中的拼写错误。PR #2020@aviloncho 提交。

翻译

  • 🌐 为“Advanced Tutorial - Response Directly”添加了日语翻译。PR #2191@Attsun1031 提交。
  • 📝 为教程“Security - First Steps”添加了日语翻译。PR #2153@komtaki 提交。
  • 🌐 为教程“Query Parameters and String Validations”添加了日语翻译。PR #1901@SwftAlpc 提交。
  • 🌐 为“External Links”添加了葡萄牙语翻译。PR #1443@Serrones 提交。
  • 🌐 为教程“CORS”添加了日语翻译。PR #2125@tokusumi 提交。
  • 🌐 为“Contributing”添加了日语翻译。PR #2067@komtaki 提交。
  • 🌐 为“Project Generation”添加了日语翻译。PR #2050@tokusumi 提交。
  • 🌐 为“Alternatives”添加了日语翻译。PR #2043@Attsun1031 提交。
  • 🌐 为“History Design and Future”添加了日语翻译。PR #2002@komtaki 提交。
  • 🌐 为“Benchmarks”添加了日语翻译。PR #1992@komtaki 提交。
  • 🌐 为教程“Header Parameters”添加了日语翻译。PR #1935@SwftAlpc 提交。
  • 🌐 为教程“First Steps”添加了葡萄牙语翻译。PR #1861@jessicapaz 提交。
  • 🌐 为“Python Types”添加了葡萄牙语翻译。PR #1796@izaguerreiro 提交。
  • 🌐 为“Help FastAPI”添加了日语翻译。PR #1692@tokusumi 提交。
  • 🌐 为教程“Body”添加了日语翻译。PR #1683@tokusumi 提交。
  • 🌐 为教程“Query Params”添加了日语翻译。PR #1674@tokusumi 提交。
  • 🌐 为 tutorial/path-params.md 添加了日语翻译。PR #1671@tokusumi 提交。
  • 🌐 为 tutorial/first-steps.md 添加了日语翻译。PR #1658@tokusumi 提交。
  • 🌐 为 tutorial/index.md 添加了日语翻译。PR #1656@tokusumi 提交。
  • 🌐 为“Project Generation”添加了葡萄牙语翻译。PR #1602@Serrones 提交。
  • 🌐 为“Features”添加了日语翻译。PR #1625@tokusumi 提交。
  • 🌐 初始化了新的韩语翻译语言。PR #2018@hard-coders 提交。
  • 🌐 为“Deployment”添加了葡萄牙语翻译。PR #1374@Serrones 提交。

内部

  • 🔥 为 Docs Previews GitHub Action 进行升级后的清理。PR #2248@tiangolo 提交。
  • 🐛 修复 CI 文档预览,解压文档。PR #2246@tiangolo 提交。
  • ✨ 为来自 forks 的 PR 添加即时文档预览。PR #2244@tiangolo 提交。
  • ⚡️ 在子进程中并行构建语言文档以加快 CI 速度。PR #2242@tiangolo 提交。
  • 🐛 修复了部分翻译的文档顺序生成。PR #2238@tiangolo 提交。
  • 👥 更新 FastAPI People。PR #2202@github-actions[bot] 提交。
  • ♻️ 更新 FastAPI People GitHub Action,以 github-actions 的身份发送 PR。PR #2201@tiangolo 提交。
  • 🔧 更新 FastAPI People GitHub Action 配置,每月运行一次。PR #2199@tiangolo 提交。
  • 🐛 修复 FastAPI People GitHub Action 的 Docker 依赖项,第一次尝试 ⚾。PR #2198@tiangolo 提交。
  • 🐛 修复 FastAPI People GitHub Action 的 Docker 依赖项。PR #2197@tiangolo 提交。
  • 🐛 修复 FastAPI People GitHub Action 在没有更改时。PR #2196@tiangolo 提交。
  • 👥 添加新版块 FastAPI People。PR #2195@tiangolo 提交。
  • ⬆️ 升级 GitHub Action Latest Changes。PR #2190@tiangolo 提交。
  • ⬆️ 升级 GitHub Action Label Approved。PR #2189@tiangolo 提交。
  • 🔧 更新 GitHub Action Label Approved,在 12:00 运行。PR #2185@tiangolo 提交。
  • 👷 升级 GitHub Action Latest Changes。PR #2184@tiangolo 提交。
  • 👷 将 GitHub Action Label Approved 设置为每天运行一次,而不是每分钟运行。PR #2163@tiangolo 提交。
  • 🔥 移除 pr-approvals GitHub Action,因为它与 forks 不兼容。使用新的。PR #2162@tiangolo 提交。
  • 👷 添加 GitHub Action Latest Changes。PR #2160
  • 👷 添加 GitHub Action Label Approved。PR #2161

0.61.1

修复

  • 修复直接使用 jsonable_encoder 处理 SQLAlchemy 模型时存在的问题。PR #1987

文档

翻译

内部

  • 通过更新 hl_lines 语法以使用范围来提高文档的可维护性。PR #1863,作者 @la-mar

0.61.0

新功能

  • 添加对注入 HTTPConnection(作为 RequestWebSocket)的支持。这对于在依赖项中共享应用程序状态非常有用。PR #1827,作者 @nsidnev
  • 导出 WebSocketDisconnect 并添加处理 WebSocket 断开连接的示例到文档中。PR #1822,作者 @rkbeatss

破坏性变更

  • 要求 Pydantic > 1.0.0
    • 移除对已弃用的 Pydantic 0.32.2 的支持。这提高了可维护性并允许新功能。
    • FastAPIAPIRouter
      • 移除与路径操作装饰器相关的/已弃用的参数 response_model_skip_defaults(请改用 response_model_exclude_unset)。
      • 路径操作装饰器response_model_exclude 参数默认值从 set() 更改为 None(与 Pydantic 一致)。
    • encoders.jsonable_encoder
      • 移除已弃用的 skip_defaults,改用 exclude_unset
      • exclude 的默认值从 set() 更改为 None(与 Pydantic 一致)。
    • PR #1862
  • encoders.jsonable_encoder 中移除参数 sqlalchemy_safe
    • 这是早期用于允许返回 SQLAlchemy 模型的一个 hack,但从未被文档化,推荐的方法是使用 Pydantic 的 orm_mode,如教程中所述:SQL (关系型) 数据库
    • PR #1864

文档

内部

  • 添加 Flake8 linting。原始 PR #1774,作者 @MashhadiNima
  • 禁用 Gitter bot,因为它目前处于损坏状态,并且 Gitter 的响应没有显示问题。PR #1853

0.60.2

  • 修复文档中关于查询参数的拼写错误。PR #1832,作者 @ycd
  • 添加关于异步测试的文档。PR #1619,作者 @empicano
  • 当未安装 python-multipart 时,使用表单数据(Form, File)时引发异常。
    • 到目前为止,应用程序会运行,并且仅在收到表单数据请求时才引发异常。新的行为(尽早引发)将防止部署具有损坏依赖项的应用程序。
    • 它还会检测是否安装了正确的包 python-multipart 而不是错误的包 multipart(两者都可以导入为 multipart)。
    • PR #1851,基于原始 PR #1627,作者 @chrisngyn@YKo20010@kx-chen
  • 重新启用 Gitter releases bot。PR #1831
  • 从主 SQL 教程添加异步 SQL 数据库教程的链接。PR #1813,作者 @short2strings
  • 修复有关代理后面的文档中的拼写错误。PR #1807,作者 @toidi
  • 修复葡萄牙语文档中的拼写错误。PR #1795,作者 @izaguerreiro
  • 为乌克兰语添加翻译设置。PR #1830
  • 添加外部链接 使用 FastAPI 构建和托管快速数据科学应用程序。PR #1786,作者 @Kludex
  • 修复继承了具有自定义 json_encoders 的其他模型的 Pydantic 模型的编码问题。PR #1769,作者 @henrybetts
  • 简化和改进 jsonable_encoder。PR #1754,作者 @MashhadiNima
  • 在多个点上简化内部代码语法。PR #1753,作者 @uriyyo
  • 改进内部类型提示,声明 Optional 参数。PR #1731,作者 @MashhadiNima
  • 向文档中添加外部链接 在 Azure App Service 上部署 FastAPI。PR #1726,作者 @windson
  • 添加 Starlette 文档链接,关于 WebSocket 测试。PR #1717,作者 @hellocoldworld
  • 重构生成依赖项,合并 for 循环。PR #1714,作者 @Bloodielie
  • 更新模板与 Jinja 结合的示例,以包含 HTML 媒体类型。PR #1690,作者 @frafra
  • 修复安全文档中的拼写错误。PR #1678,作者 @nilslindemann
  • 修复依赖项文档中的拼写错误。PR #1675,作者 @nilslindemann
  • 修复 FastAPI**extra 参数的类型注解。PR #1659,作者 @bharel
  • 将 MkDocs Material 升级到最新版本,以修复暗模式下浏览器中文档显示问题。PR #1789,作者 @adriencaccia
  • 从每个 commit 中移除文档预览注释。PR #1826
  • 更新 Gitter 通知机器人所需的 GitHub context 提取。PR #1766

0.60.1

  • 为 GitHub Actions 添加调试日志,以检查 GitHub 隐藏的 context。PR #1764
  • 为在线文档使用操作系统偏好的主题。PR #1760,作者 @adriencaccia
  • 将 Starlette 升级到版本 0.13.6,以处理在 Windows 上使用静态文件时的安全漏洞。PR #1759,作者 @jamesag26
  • 临时锁定 Swagger UI 版本,等待修复 swagger-api/swagger-ui#6249。PR #1763
  • 更新 GitHub Actions,使用 PR 中的 commit 进行文档预览,而不是预合并 commit。PR #1761
  • 更新 GitHub Actions,重构 Gitter bot。PR #1746

0.60.0

  • 添加 GitHub Action 来监控缺失的预览文档并触发预览部署。PR #1740
  • 添加自定义 GitHub Action 来获取包含文档预览的 artifact。PR #1739
  • 添加新的 GitHub Actions 来预览 PR 中的文档。PR #1738
  • 添加 XML 测试覆盖率以支持 GitHub Actions。PR #1737
  • 更新徽章并移除 Travis,因为 GitHub Actions 已成为主要的 CI。PR #1736
  • 为 CI 添加 GitHub Actions,从 Travis 迁移。PR #1735
  • 添加对带有 body 的 GET 请求的 OpenAPI schema 的支持。PR #1626,作者 @victorphoenix3

0.59.0

  • 修复 OAuth2 工具的 docstring 中的拼写错误。PR #1621,作者 @tomarv2
  • 更新 JWT 文档,使用 Python-jose 而不是 PyJWT。初始 PR #1610,作者 @asheux
  • 修复/重新启用文档中的搜索栏。PR #1703
  • 当存在 root_path 时,为 OpenAPI servers 自动生成一个 "server",而不是为所有 paths 添加前缀
    • FastAPI 类添加新参数:root_path_in_servers,以禁用 servers 的自动生成。
    • 关于 root_pathservers 的新文档在附加服务器
    • 更新 OAuth2 示例,使用相对 URL 进行 tokenUrl="token",以确保这些示例即使在反向代理之后也能保持正常工作。
    • 初始 PR #1596,作者 @rkbeatss
  • 修复外部链接中的拼写/链接错误。PR #1702
  • 更新处理外部链接的方式,以使用数据文件,并允许在添加新链接时不会迅速过时地翻译标题。PR #https://github.com/tiangolo/fastapi/pull/1701
  • 向文档中添加外部链接 使用 FastAPI 和 Streamlit 在 Python 中服务机器学习模型。PR #1669,作者 @davidefiocco
  • 在 Pydantic Union 的文档中添加关于顺序的注释。PR #1591,作者 @kbanc
  • 改进编辑器中测试的支持。PR #1699
  • 固定依赖项。PR #1697
  • 将 isort 更新到 5.x.x 版本。PR #1670,作者 @asheux

0.58.1

0.58.0

  • 深度合并 OpenAPI 响应以保留所有其他元数据。PR #1577
  • 在文档中说明只有主应用程序的事件会被运行(子应用程序不会)。PR #1554,作者 @amacfie
  • 修复请求体验证错误响应,当请求体未嵌入时,不包含请求体变量。PR #1553,作者 @amacfie
  • 修复在使用依赖项覆盖时测试 OAuth2 安全范围。PR #1549,作者 @amacfie
  • 修复 Model,将 JSON Schema 关键字 not 作为 JSON Schema 而不是列表。PR #1548,作者 @v-do
  • 添加对 OpenAPI servers 的支持。PR #1547,作者 @mikaello

0.57.0

0.56.1

0.56.0

0.55.1

0.55.0

0.54.2

0.54.1

  • 更新数据库测试设置。PR #1226
  • 通过在失败的测试中显示响应文本来改进测试调试。PR #1222,作者 @samuelcolvin

0.54.0

0.53.2

0.53.1

0.53.0

0.52.0

0.51.0

  • 从 Starlette 重新导出 util。
    • 这允许使用 from fastapi.responses import JSONResponse 而不是 from starlette.responses import JSONResponse
    • 这主要是语法糖,为了方便开发者体验。
    • 现在可以直接从 fastapi 导入 RequestResponseWebSocketstatus,例如 from fastapi import Response。这是因为这些经常被使用,可以直接使用请求,设置头部和 cookie,获取状态码等。
    • 文档在许多地方进行了更改,但新的文档和显著的改进
    • PR #1064

0.50.0

  • 在关于部署版本锁定的文档中添加了指向 Release Notes 的链接。PR #1058
  • 升级代码以使用最新版本的 Starlette,包括
    • 多个 bug 修复。
    • 可选的斜杠重定向,包含或不包含末尾的 /
    • 路由器的事件,"startup""shutdown"
    • PR #1057
  • 在部署文档中添加关于固定 FastAPI 版本的信息:Deployment: FastAPI versions。PR #1056

0.49.2

  • 修复发布说明中的链接。PR #1052 作者 @sattosan
  • 修复发布说明中的拼写错误。PR #1051 作者 @sattosan
  • 重构/澄清 serialize_response 参数名称以避免混淆。PR #1031 作者 @patrickmckenna
  • 重构将每个路径操作的处理函数在隔离的函数中调用,以简化性能分析。PR #1027 作者 @sm-Fifteen
  • 添加测试所需的依赖项。PR #1026 作者 @sm-Fifteen
  • 修复响应模型接受有效类型,包括 Python 类型如 List[int]。PR #1017 作者 @patrickmckenna
  • 修复 SQL 教程中的格式。PR #1015 作者 @vegarsti

0.49.1

  • 修复当路径操作函数中存在依赖项时,路径操作的重复参数。PR #994 作者 @merowinger92
  • 更新 Netlify 预览部署 GitHub Action,因为修复已合并并且有新版本。PR #1047
  • 将 mypy 配置移到配置文件中。PR #987 作者 @hukkinj1
  • 临时修复从 fork 的 PR 无法部署 Netlify 预览的问题。PR #1046 作者 @mariacamilagl

0.49.0

0.48.0

0.47.1

  • 修复 response_model 中的模型过滤,克隆子模型。PR #889
  • 修复使用 ORM 模式的 Pydantic 模型进行 FastAPI 序列化时阻塞事件循环的问题。PR #888

0.47.0

0.46.0

0.45.0

0.44.1

  • 将 GitHub 社交预览图片添加到 git。PR #752
  • 更新 PyPI "trove classifiers"。PR #751
  • 完全支持 Python 3.8。在 Travis 中完全启用 Python 3.8。PR 749
  • 更新 "new issue" 模板。PR #749
  • 修复了对奇特的 Pydantic 类型的错误序列化。PR #748 作者 @dmontagu

0.44.0

  • 添加 GitHub action Issue Manager。PR #742
  • 修复文档中的拼写错误。PR 734 作者 @bundabrg
  • 修复 jsonable_encodercustom_encoder 的使用。PR #715 作者 @matrixise
  • 修复无效的 XML 示例。PR 710 作者 @OcasoProtal
  • 修复部署文档中的拼写错误和措辞。PR #700 作者 @marier-nico
  • APIRouter 文档中添加关于依赖项的说明。PR #698 作者 @marier-nico
  • 添加对异步类方法作为依赖项的支持 #681 作者 @frankie567
  • 将 FastAPI with Swagger UI 备忘单添加到外部链接。PR #671 作者 @euri10
  • 修复 CORS 示例中 HTTP 协议的拼写错误。PR #647 作者 @forestmonster
  • 添加对 Pydantic 版本 1.0.0 及以上版本的支持,并暂时(已弃用)向后兼容 Pydantic 0.32.2。PR #646 作者 @dmontagu

0.43.0

0.42.0

  • 添加带 yield 的依赖项,即退出步骤、上下文管理器、清理、拆卸等。
    • 这允许在依赖项完成后添加额外的代码。例如,可用于关闭数据库连接。
    • yield 的依赖项可以是常规的或 async 的,FastAPI 将在线程池中运行常规依赖项。
    • 它们可以与常规依赖项结合使用。
    • 可以拥有任意的 yield 依赖项树/级别,并且退出步骤会自动以正确的顺序处理。
    • 默认在 Python 3.7 及以上版本中有效。对于 Python 3.6,需要额外的回溯兼容包
      • async-exit-stack
      • async-generator
    • 新文档位于 Dependencies with yield
    • 更新数据库文档 SQL (Relational) Databases: Main FastAPI app
    • PR #595
  • 修复网站中的 sitemap.xml。PR #598 作者 @samuelcolvin

0.41.0

  • 将必需的 Starlette 升级到 0.12.9,新范围是 >=0.12.9,<=0.12.9
    • State 添加到 FastAPI 应用,位于 app.state
    • PR #593
  • 改进对 RequestAPIRoute 自定义类的处理。
    • 这有助于更容易地解决用例,例如
      • 在请求之前和/或之后读取 body(等同于中间件)。
      • 仅为一部分*路径操作*运行中间件类代码。
      • 在将请求传递给*路径操作函数*之前对其进行处理。例如,解压缩、反序列化等。
      • 在*路径操作函数*生成响应后,但在返回之前对其进行处理。例如,添加自定义头部、日志记录、添加额外元数据。
    • 新的文档部分:Custom Request and APIRoute class
    • PR #589 作者 @dmontagu
  • 修复在包含其他子路由器时,在路由器中保留自定义路由类。PR #538 作者 @dmontagu

0.40.0

0.39.0

  • 允许路径参数具有默认值(例如 None)并丢弃它们而不是引发错误。
    • 这允许声明一个参数,例如 user_id: str = None,它可以从查询参数中获取,但同一个*路径操作*可以包含在一个带有路径 /users/{user_id} 的路由器中,在这种情况下,它将从路径中获取并且是必需的。
    • PR #464 作者 @jonathanunderwood
  • 添加对在 FastAPI 实例或 include_router 中设置 default_response_class 的支持。初始 PR #467 作者 @toppk
  • 添加对使用字符串和 from __future__ import annotations 的类型注释的支持。PR #451 作者 @dmontagu

0.38.1

0.38.0

  • 将最新的文章添加到 External Links 和最新的观点。PR #490
  • 将 Starlette 的支持范围升级到包括 0.12.8。新范围是 >=0.11.1,<=0.12.8"。PR #477 作者 @dmontagu
  • 将支持升级到 Pydantic 版本 0.32.2 并更新内部代码以使用它(破坏性更改)。PR #463 作者 @dmontagu

0.37.0

  • 为高级用例添加对自定义路由类的支持。PR #468 作者 @dmontagu
  • 允许禁用 ReDoc 中的 Google 字体。PR #481 作者 @b1-luettje
  • 修复安全问题:在返回响应模型的子类并使用 skip_defaults 时,可能会泄露信息。PR #485 作者 @dmontagu
  • 启用 Python 3.8-dev 的测试。PR #465 作者 @Jamim
  • 添加对 Pydantic 数据类在 response_model 中的支持和测试。PR #454 作者 @dconathan
  • 修复 OAuth2 JWT 教程中的拼写错误。PR #447 作者 @pablogamboa
  • 使用 Body() 参数中的 media_type 参数在 OpenAPI 中为 requestBody 设置媒体类型。PR #439 作者 @divums
  • 添加文章 Deploying a scikit-learn model with ONNX and FastAPI 作者 Nico Axtmann。PR #438 作者 @naxty
  • 允许在 OpenAPI 中设置自定义 422(验证错误)响应/schema。
    • 并使用来自响应类的媒体类型而不是固定的 application/json(默认值)。
    • PR #437 作者 @divums
  • 修复同时使用 "default" 额外响应和状态码的问题。PR #489
  • 允许其他响应使用状态码范围(如 5XX4XX)和 "default"。PR #435 作者 @divums

0.36.0

  • 修复在返回 Pydantic 模型时 skip_defaults 的实现。PR #422@dmontagu 贡献。
  • 修复在使用相同依赖项于同一路径操作的多个位置时生成 OpenAPI 的问题。PR #417@dmontagu 贡献。
  • 允许在与 include_routerprefix 一起使用的路径操作中使用空路径。
    • 这允许有一个用于 /cats 及其所有路径操作的路由器,同时其中一个用于 /cats
    • 现在它不必仅限于 /cats/(带尾部斜杠)。
    • 要使用它,请在路径操作中将路径声明为空字符串("")。
    • PR #415@vitalik 贡献。
  • 合并 PR #415 后修复 mypy 错误。PR #462

0.35.0

  • 修复路由 assert 中的拼写错误。PR #419@pablogamboa 贡献。
  • 修复文档中的拼写错误。PR #411@bronsen 贡献。
  • 修复解析声明为 Union 的正文类型的问题。PR #400@koxudaxi 贡献。

0.34.0

  • 升级 Starlette 支持范围以包含最新的 0.12.7。新范围为 0.11.1,<=0.12.7。PR #367@dedsm 贡献。

  • 根据 PR #333@dmontagu 添加了具有重复模型的 OpenAPI 模式的测试。PR #385

0.33.0

  • 将 Pydantic 版本升级到 0.30.0。PR #384@jekirl 贡献。

0.32.0

  • 修复文档中关于功能的拼写错误。PR #380@MartinoMensio 贡献。

  • 修复 Query Parameters 中示例的源代码 limit。PR #366@Smashman 贡献。

  • 更新文档中关于 OAuth2 scopes 的措辞。PR #371@cjw296 贡献。

  • 更新文档以使 Enums 继承自 str 并改善 Swagger UI 渲染。PR #351

  • 修复回归问题,重新添加 Swagger UI 深度链接。PR #350

  • 添加测试以处理 .include_routerprefix 中的路径模板。PR #349

  • 向文档添加注释:多次包含相同的路由器但带有不同的 prefix。PR #348

  • 修复在不同模块中具有相同名称的两个函数(具有相同的复合正文)的 OpenAPI/JSON Schema 生成问题。

    • 复合正文的 ID 现在基于路径,而不仅仅是路由名称,因为自动生成的名称使用了可以重复的函数名(来自不同模块)。
    • 响应模型也应用了相同的 ID 生成规则。
    • 这也改变了这些模型的生成标题。
    • 仅复合正文和响应模型受到影响,因为它们是动态生成的,没有模块(Python 文件)。
    • 这也增加了使用 .include_router() 与相同的 APIRouter 多次,但带有不同的前缀的可能性,例如 /api/v2/api/latest,现在它将正常工作。
    • PR #347

0.31.0

  • 将 Pydantic 支持版本升级到 0.29.0
    • 新的支持版本范围为 "pydantic >=0.28,<=0.29.0"
    • 这增加了对 Pydantic Generic Models 的支持,感谢 @dmontagu
    • PR #344

0.30.1

0.30.0

  • 添加对 Pydantic 的 ORM 模式的支持

    • 更新了关于 SQL 与 SQLAlchemy 的文档,使用了带 ORM 模式的 Pydantic 模型,SQLAlchemy 模型与关系,文件分离,代码简化和其他更改。新文档:SQL (Relational) Databases
    • 对 ORMs 的新 ORM 模式支持修复了与 ORM 相关的延迟加载、混合属性、动态/getter(使用 @property 装饰器)以及其他几种用例相关的问题/添加了功能。
    • 这适用于 SQLAlchemy、Peewee、Tortoise ORM、GINO ORM 以及几乎任何其他 ORM。
    • 如果你的路径操作返回一个具有属性的任意对象(例如,my_item.name 而不是 my_item["name"])并且你使用了 response_model,请确保按照文档(链接如上)中的说明,使用 orm_mode = True 更新 Pydantic 模型。
    • 关于接收原始 dicts 作为请求正文的新文档:任意 dicts 的正文
    • 关于在响应中返回任意 dicts 的新文档:响应与任意 dict
    • 技术细节:
      • 当声明 response_model 时,它将直接用于生成响应内容,直接从路径操作函数返回的内容中获取。
      • 在此之前,返回的内容首先会经过 jsonable_encoder 来确保它是一个“jsonable”对象,例如 dict,而不是一个带有属性的任意对象(如 ORM 模型)。这就是为什么你应该确保更新你的 Pydantic 模型,以使带有属性的对象使用 orm_mode = True
      • 如果你没有 response_model,返回对象仍将首先通过 jsonable_encoder
      • 当声明 response_model 时,相同的 response_model 类型声明不会被直接使用,它将被“克隆”以创建新的(克隆的 Pydantic Field,所有子模型也会被克隆)。
      • 这可以避免/修复一个潜在的安全问题:因为返回的对象直接传递给 Pydantic,如果返回的对象是 response_model 的子类(例如,你返回一个继承自 User 但包含额外字段,如 hashed_passwordUserInDB,而 Userresponse_model 中使用),它仍将通过验证(因为 UserInDBUser 的子类)并且对象将按原样返回,包括 hashed_password。为了解决这个问题,声明的 response_model 被克隆了。如果它是一个 Pydantic 模型类(或其中包含 Pydantic 模型类,例如在 List[Item] 中),Pydantic 模型类将是不同的一个(“克隆的”那个)。因此,一个子类对象将不会简单地通过验证并按原样返回,因为它不再是克隆的 response_model 的子类。相反,将创建一个新的 Pydantic 模型对象,其中包含返回对象的内容。所以,它将是一个新对象(使用返回对象的数据创建),并且将由克隆的 response_model 过滤,仅包含声明的字段,如往常一样。
    • PR #322
  • 移除/清理路由中未使用的 RegEx 代码。PR #314@dmontagu 贡献。

  • 为附加响应使用默认响应状态码描述。PR #313@duxiaoyao 贡献。

  • 将 Pydantic 支持升级到 0.28。PR #320@jekirl 贡献。

0.29.1

0.29.0

  • 添加对声明 Response 参数的支持

0.28.0

  • 实现每个请求的依赖项缓存。

    • 这可以避免在同一请求中多次调用每个依赖项。
    • 这在调用外部服务、执行昂贵的计算等时非常有用。
    • 这也意味着,如果一个依赖项被声明为路径操作装饰器依赖项,可能在路由级别(使用 .include_router())然后又在特定的路径操作中声明,那么该依赖项将只会被调用一次。
    • 可以通过在依赖项声明中使用 use_cache=False 来禁用缓存,例如 Depends(your_dependency, use_cache=False)
    • 更新文档在:多次使用相同的依赖项
    • PR #292
  • 实现用于测试的依赖项覆盖。

0.27.2

0.27.1

  • 修复 HTTPBearer 安全方案中的 auto_error=False 处理。当 Authorization 头部不正确时,如果 auto_error=False,则不要 raise。PR #282

  • 修复 HTTPException 的类型声明。PR #279

0.27.0

  • 修复关于 OAuth 2.0 与 scopes 的文档中损坏的链接。PR #275@dmontagu 贡献。

  • 重构参数提取,使用 Pydantic Field

0.26.0

0.25.0

  • 添加对 Pydantic 的 includeexcludeby_alias 的支持。

  • 向 GitHub 添加 CONTRIBUTING.md 文件,以帮助新贡献者。PR #255@wshayes 贡献。

  • 添加对 Pydantic 的 skip_defaults 的支持

0.24.0

  • 添加对带依赖项和参数的 WebSockets 的支持。

  • 将 Pydantic 的兼容版本升级到 0.26.0

    • 这包括对 IP 地址和网络对象的 JSON Schema 支持、错误修复和其他功能。
    • PR #247@euri10 贡献。

0.23.0

  • 将 Starlette 的兼容版本升级到 0.12.0

    • 这包括对 ASGI 3(标准的最新版本)的支持。
    • 现在可以使用 Starlette 的 StreamingResponse 与迭代器一起使用,例如 类似文件的对象(例如 open() 返回的对象)。
    • 现在可以使用 starlette.concurrency 中的低级实用程序 iterate_in_threadpool(用于高级场景)。
    • PR #243
  • 为 Swagger UI 添加 OAuth2 重定向页面。这允许在 Swagger UI 文档中进行委托身份验证。要使其工作,您需要将 {your_origin}/docs/oauth2-redirect 添加到您的 OAuth2 提供商(在 Auth0、Facebook、Google 等中)的允许的回调中。

    • 例如,在开发过程中,可以是 https://:8000/docs/oauth2-redirect
    • 请注意,此回调 URL 与您的前端使用的 URL 是独立的。您可能还会在 https://yourdomain.com/login/callback 有另一个回调。
    • 这仅用于允许在 API 文档中使用 Swagger UI 进行委托身份验证。
    • PR #198@steinitzu 贡献。
  • 将 Swagger UI 和 ReDoc 路由处理程序(路径操作)设置为 async 函数而不是 lambda 以提高性能。PR #241@Trim21 贡献。

  • 使 Swagger UI 和 ReDoc URL 可参数化,允许托管和提供它们本地版本并获得离线文档。PR #112@euri10 贡献。

0.22.0

  • 添加对 dependencies 参数的支持

    • 路径操作装饰器中的一个参数,用于应该执行但其返回值不重要或不在路径操作函数中使用的依赖项。
    • FastAPI 应用程序和路由器的 .include_router() 方法中的一个参数,用于包含应该在路由器中的每个路径操作中执行的依赖项。
      • 这很有用,例如,在特定的路径操作组中要求身份验证或权限。
      • 可以为不同的路由器应用不同的 dependencies
    • 这些 dependencies 在正常参数依赖项之前运行。正常依赖项也会运行。它们可以组合。
    • 在路由器中声明的依赖项首先执行,然后是路径操作装饰器中定义的依赖项,然后是普通参数中声明的依赖项。它们都组合并执行。
    • 所有这些都支持在这些 dependencies 参数中使用带有 scopesSecurity,以实现更高级的 OAuth 2.0 安全场景(带 scopes)。
    • 关于路径操作装饰器中依赖项的新文档
    • 关于 include_router() 方法中依赖项的新文档
    • PR #235
  • 修复 Starlette URL 转换器的 OpenAPI 文档。在处理路径转换器时特别有用,可以将整个路径作为参数,例如 /some/url/{p:path}。PR #234@euri10 贡献。

  • 将从 fastapi 导出的默认参数实用程序从类更改为函数(新函数返回这些类的实例)。以便覆盖返回类型并修复 FastAPI 用户代码中的 mypy 错误。适用于 PathQueryHeaderCookieBodyFormFileDependsSecurity。PR #226 和 PR #231

  • 分离开发脚本 test.shlint.shformat.sh。PR #232

  • 重新启用 Python 3.7 的 black 格式化检查。PR #229@zamiramir 贡献。

0.21.0

  • 在正文解析错误时,引发 from 前一个异常,以便更好地进行日志记录内省。PR #192@ricardomomm 贡献。

  • 使用名为 "fastapi" 的 Python 日志记录器,而不是根日志记录器。PR #222@euri10 贡献。

  • 将 Pydantic 升级到版本 0.25。PR #225@euri10 贡献。

  • 修复路由中的拼写错误。PR #221@djlambert 贡献。

0.20.1

  • 向包添加类型信息,包括文件 py.typed。PR #209@meadsteve 贡献。

  • 添加 Gitter 的 FastAPI 机器人。自动宣布新版本。PR #189

0.20.0

  • 升级 OAuth2

    • 将密码流(使用 Bearer tokens)升级为使用正确的 HTTP 状态码 401 UNAUTHORIZED,并带有 WWW-Authenticate 头部。
    • 更新、简化和改进所有安全文档
    • SecurityScopes 添加新的 scope_str 并更新文档:OAuth2 scopes
    • 更新文档、图像、测试。
    • PR #188
  • 在文档中包含 Hypercorn 作为替代的 ASGI 服务器。PR #187

  • 添加关于 Static FilesTemplates 的文档。PR #186

  • 添加关于处理 Response CookiesResponse Headers 的文档。PR #185

  • 修复文档中的拼写错误。PR #176@chdsbd 贡献。

0.19.0

0.18.0

  • 添加关于 HTTP Basic Auth 的文档。PR #177

  • 升级 HTTP Basic Auth 处理,自动添加头部(自动浏览器登录提示)。PR #175

  • 更新安全相关的依赖项。PR #174

  • 添加关于 Middleware 的文档。PR #173

0.17.0

0.16.0

0.15.0

0.14.0

  • 改进 OpenAPI 中路径操作的自动生成名称(在 API 文档中)。函数 read_items 将会显示 "Read Items" 而不是生成的名称 "Read Items Get"。PR #155

  • 添加关于 Testing FastAPI 的文档。PR #151

  • 更新 /docs Swagger UI 以启用深度链接。这允许共享指向文档中路径操作的直接 URL。PR #148@wshayes 贡献。

  • 更新开发依赖项,Pipfile.lock。PR #150

  • 在:Alternatives, Inspiration and Comparisons 中包含 Falcon 和 Hug。

0.13.0

  • 通过 SecurityScopes 改进/升级 OAuth2 scopes 支持
    • SecurityScopes 可以像 Request 一样声明为参数,以获取所有超级依赖/被依赖项的 scopes。
    • 改进 Security 处理,在声明 SecurityScopes 时合并 scopes。
    • 允许使用 SecurityBase(如 OAuth2)类与 Depends 一起使用,并仍然进行文档记录。Security 现在仅用于声明 scopes
    • 更新了关于:OAuth2 with Password (and hashing), Bearer with JWT tokens 的文档。
    • 关于:OAuth2 scopes 的新文档。
    • PR #141

0.12.1

  • 修复 bug:处理 APIRouter.include_router() 中的附加 responses。PR #140

  • 修复 SQL 教程中的拼写错误。PR #138@mostaphaRoudsari 贡献。

  • 修复嵌套模型和带 JWT 的 OAuth2 部分中的拼写错误。PR #127@mmcloud 贡献。

0.12.0

  • 路径操作装饰器添加附加的 responses 参数,以扩展 OpenAPI(和 API 文档)中的响应。
    • 它还允许扩展从 response_model 生成的现有响应,声明其他媒体类型(如图像)等。
    • 新文档在此:Additional Responses
    • responses 也可以添加到 .include_router(),更新的文档在此:Bigger Applications
    • PR #97 最初由 @barsi 发起。
  • 更新 scripts/test-cov-html.sh 以允许传递额外的参数,如 -vv,用于开发。

0.11.0

  • 向安全实用函数添加 auto_error 参数。允许它们成为可选的。还允许拥有多个备选安全方案,这些方案将在单个依赖项中进行检查,而不是每个方案都自动验证并返回错误给客户端(当不满足时)。PR #134

  • 更新 SQL Tutorial 以在出现异常时关闭数据库会话。PR #89@alexiri 贡献。

  • 修复 pyproject.toml 中的重复依赖项。PR #128@zxalif 贡献。

0.10.3

0.10.2

  • 修复 Python Union 声明的 OpenAPI(JSON Schema)(JSON Schema additionalProperties)。PR #121

  • 更新 Background Tasks,添加关于 Celery 的说明。

  • 更新了使用联合和列表的响应模型的文档,地址:Extra Models。PR #108

0.10.1

0.10.0

  • 路径操作函数和依赖项中添加对后台任务(Background Tasks)的支持。关于后台任务的新文档在这里。

  • APIRouter 中添加对 .websocket_route() 的支持。PR #100@euri10 贡献。

  • 新文档部分关于事件:启动 - 关闭。PR #99

0.9.1

0.9.0

  • 将兼容的 Pydantic 版本升级到 0.21.0。PR #90

  • 添加文档:应用程序配置

  • 修复文档中的拼写错误。PR #76@matthewhegarty 贡献。

  • 修复“部署”部分中指向“大型应用程序”的链接。

0.8.0

  • 使开发脚本可执行。PR #76@euri10 贡献。

  • app.include_router() 中添加对添加 tags 的支持。PR #55@euri10 贡献。文档已在以下部分更新:大型应用程序

  • 更新与 Uvicorn 相关的文档,以使用 0.5.x 版本中的新 --reload 选项。PR #74

  • 更新 isort 导入和脚本,以兼容新版本。PR #75

0.7.1

  • 更新关于 async def 处理的技术细节,并与之前的框架进行比较。PR #64@haizaar 贡献。

  • 为 Docker 在 Raspberry Pi 和其他架构上的部署文档添加文档。

  • 自动触发 Travis CI 上的 Docker 镜像构建。PR #65

0.7.0

0.6.4

0.6.3

  • 为文档添加 Favicons。PR #53

0.6.2

0.6.1

0.6.0

0.5.1

0.5.0

0.4.0

0.3.0

0.2.1

  • 修复 Pydantic 模型带有 Config 但没有 json_encodersjsonable_encoder 问题:#29

0.2.0

  • 修复安全部分中的拼写错误:PR #24@kkinder 贡献。

  • 添加对 Pydantic 自定义 JSON 编码器的支持:PR #21@euri10 贡献。

0.1.19

  • 将 Starlette 版本升级到当前的最新版本 0.10.1:PR #17@euri10 贡献。