跳到内容

发布说明

最新变更

内部

0.123.0

修复

  • 🐛 缓存不使用作用域且没有带作用域的子依赖项的依赖项。PR #14419 by @tiangolo

0.122.1

修复

文档

内部

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

0.122.0

修复

  • 🐛 在安全类中当凭据缺失时使用 401 状态码。PR #13786 by @YuriiMotov
    • 如果您的代码依赖于这些类引发旧的(不太正确的)403 状态码,请查看有关如何覆盖这些类以使用相同旧行为的新文档:使用旧的 403 认证错误状态码

内部

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

0.121.3

重构

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

升级

文档

0.121.2

修复

  • 🐛 修复对名为“$ref”的 JSON Schema 属性的处理。PR #14349 by @tiangolo

文档

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

翻译

0.121.1

修复

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

文档

  • 📝 更新带有 yield 的高级依赖项文档,注明 0.121.0 中的变化,添加 scope。PR #14287 by @tiangolo

内部

0.121.0

特性

内部

0.120.4

修复

  • 🐛 修复在顶级应用中添加的安全方案在 OpenAPI 中的问题。PR #14266 by @YuriiMotov

0.120.3

重构

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

文档

0.120.2

修复

  • 🐛 修复 0.119.0 版本中引入的带有嵌套模型的模式分离问题。PR #14246 by @tiangolo

内部

0.120.1

升级

内部

  • 🔧 将 licenselicense-files 添加到 pyproject.toml,从 classifiers 中移除 License。PR #14230 by @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 工具类的新主包的过渡。

翻译

内部

0.119.1

修复

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

文档

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

内部

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 的支持现已弃用,并将在不久的将来从 FastAPI 的未来版本中移除

注意:请记住,Pydantic 团队已经停止为最新版本的 Python 支持 Pydantic v1,从 Python 3.14 开始。

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

特性

  • ✨ 增加对 from pydantic.v1 import BaseModel 的支持,在同一个应用中混合使用 Pydantic v1 和 v2 模型。PR #14168 by @tiangolo

0.118.3

升级

0.118.2

修复

  • 🐛 修复带标签的区分联合类型未被识别为请求体字段的问题。PR #12942 by @frankie567

内部

0.118.1

升级

文档

  • 📝 添加外部链接:FastAPI 日志记录入门。PR #14152 by @itssimon

翻译

内部

0.118.0

修复

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

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

这一变更也意味着,如果您返回一个 StreamingResponse,带 yield 的依赖项的退出代码会已经运行。

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

此行为在 0.118.0 中被还原,使 yield 后的退出代码在响应发送后执行。

您可以在高级依赖项 - 带 yieldHTTPExceptionexcept 和后台任务的依赖项文档中阅读更多相关信息。包括如果您想在返回给客户端响应之前提前关闭数据库会话可以怎么做。

文档

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

翻译

内部

0.117.1

修复

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

0.117.0

特性

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

修复

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

重构

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

文档

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

翻译

内部

0.116.2

升级

文档

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

翻译

内部

0.116.1

升级

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

文档

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

内部

0.116.0

特性

  • ✨ 增加对使用 fastapi deploy 部署到 FastAPI Cloud 的支持。PR #13870 by @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 by @NavesSapnis
  • 🌐 添加 docs/docs/advanced/additional-status-codes.md 的俄语翻译。PR #13799 by @NavesSapnis
  • 🌐 添加 docs/docs/tutorial/body-updates.md 的乌克兰语翻译。PR #13804 by @valentinDruzhinin

内部

0.115.14

修复

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

文档

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

翻译

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

内部

0.115.13

修复

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

重构

升级

文档

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

翻译

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

内部

0.115.12

修复

  • 🐛 修复 header Pydantic 模型的 convert_underscores=False。PR #13515 by @tiangolo

文档

翻译

  • 🌐 添加 docs/docs/tutorial/metadata.md 页面的乌克兰语翻译。PR #13459 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/response-status-code.md 页面的乌克兰语翻译。PR #13462 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 页面的乌克兰语翻译。PR #13460 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/header-param-models.md 页面的乌克兰语翻译。PR #13461 by @valentinDruzhinin
  • 🌐 添加 docs/docs/virtual-environments.md 的日语翻译。PR #13304 by @k94-ishi
  • 🌐 添加 docs/docs/tutorial/security/oauth2-jwt.md 的韩语翻译。PR #13333 by @yes0ng
  • 🌐 添加 docs/docs/deployment/cloud.md 的越南语翻译。PR #13407 by @ptt3199

内部

0.115.11

修复

翻译

  • 🌐 添加 docs/docs/tutorial/middleware.md 的俄语翻译。PR #13412 by @alv2017

内部

0.115.10

修复

  • ♻️ 更新内部注解用法以兼容 Pydantic 2.11。PR #13314 by @Viicos

升级

翻译

  • 🌐 添加 docs/docs/tutorial/debugging.md 的乌克兰语翻译。PR #13370 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/query-params.md 的乌克兰语翻译。PR #13362 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/path-params.md 的乌克兰语翻译。PR #13354 by @valentinDruzhinin
  • 🌐 添加 docs/docs/tutorial/cookie-param-models.md 的日语翻译。PR #13330 by @k94-ishi
  • 🌐 添加 docs/docs/tutorial/body-multiple-params.md 的乌克兰语翻译。PR #13408 by @valentinDruzhinin
  • 🌐 为 docs/docs/tutorial/query-param-models.md 添加日语翻译。由 @k94-ishi 提交的 PR #13323
  • 🌐 为 docs/docs/tutorial/body-nested-models.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13409
  • 🌐 为 docs/docs/deployment/versions.md 添加越南语翻译。由 @ptt3199 提交的 PR #13406
  • 🌐 为 docs/docs/deployment/index.md 添加越南语翻译。由 @ptt3199 提交的 PR #13405
  • 🌐 为 docs/docs/tutorial/request-forms.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13383
  • 🌐 为 docs/docs/tutorial/testing.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13371

0.115.9

修复

  • 🐛 确保 HTTPDigest 仅在 auto_error is True 时引发异常。由 @arthurio 提交的 PR #2939

重构

  • ✅ 简化 query_params_str_validations 的测试。由 @alv2017 提交的 PR #13218
  • ✅ 简化 app_testing 的测试。由 @alv2017 提交的 PR #13220
  • ✅ 简化 dependency_testing 的测试。由 @alv2017 提交的 PR #13223

文档

  • 🍱 更新赞助商:CodeRabbit 徽标。由 @tiangolo 提交的 PR #13424
  • 🩺 统一所有教程翻译中的徽章。由 @svlandeg 提交的 PR #13329
  • 📝 修复虚拟环境文档中的拼写错误。由 @bullet-ant 提交的 PR #13396
  • 🐛 修复官方教程中 Swagger 主题更改示例的问题。由 @Zerohertz 提交的 PR #13289
  • 📝 在文档中添加更精确的 HTTP 状态码范围描述。由 @DanielYang59 提交的 PR #13347
  • 🔥 在 JWT 教程中移除手动类型注解,以避免类型期望(JWT 不提供更多类型)。由 @tiangolo 提交的 PR #13378
  • 📝 更新查询参数和字符串验证的文档,移除过时的 Ellipsis 文档(...)。由 @tiangolo 提交的 PR #13377
  • ✏️ 移除文档 body-multiple-params 中的重复标题。由 @DanielYang59 提交的 PR #13345
  • 📝 修复测试徽章。由 @esadek 提交的 PR #13313

翻译

  • 🌐 为 docs/docs/tutorial/header-params.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13381
  • 🌐 为 docs/docs/tutorial/request-files.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13395
  • 🌐 为 docs/docs/tutorial/request-form-models.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13384
  • 🌐 为 docs/docs/tutorial/request-forms-and-files.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13386
  • 🌐 更新 docs/docs/help-fastapi.md 的韩语翻译。由 @Zerohertz 提交的 PR #13262
  • 🌐 为 docs/docs/advanced/custom-response.md 添加韩语翻译。由 @11kkw 提交的 PR #13265
  • 🌐 更新 docs/docs/tutorial/security/simple-oauth2.md 的韩语翻译。由 @yes0ng 提交的 PR #13335
  • 🌐 为 docs/docs/advanced/response-cookies.md 添加俄语翻译。由 @Stepakinoyan 提交的 PR #13327
  • 🌐 为 docs/docs/tutorial/static-files.md 添加越南语翻译。由 @ptt3199 提交的 PR #11291
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-with-yield.md 添加韩语翻译。由 @11kkw 提交的 PR #13257
  • 🌐 为 docs/docs/virtual-environments.md 添加越南语翻译。由 @ptt3199 提交的 PR #13282
  • 🌐 为 docs/docs/tutorial/static-files.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13285
  • 🌐 为 docs/docs/environment-variables.md 添加越南语翻译。由 @ptt3199 提交的 PR #13287
  • 🌐 为 docs/docs/fastapi-cli.md 添加越南语翻译。由 @ptt3199 提交的 PR #13294
  • 🌐 为 docs/docs/features.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13308
  • 🌐 为 docs/docs/learn/index.md 添加乌克兰语翻译。由 @valentinDruzhinin 提交的 PR #13306
  • 🌐 更新 docs/docs/deployment/https.md 的葡萄牙语翻译。由 @Joao-Pedro-P-Holanda 提交的 PR #13317
  • 🌐 更新 docs/docs/index.md 的葡萄牙语翻译。由 @ceb10n 提交的 PR #13328
  • 🌐 为 docs/docs/advanced/websockets.md 添加俄语翻译。由 @Rishat-F 提交的 PR #13279

内部

  • ✅ 修复测试 tests/test_modules_same_name_body/test_main.py 中的一个小错误。由 @alv2017 提交的 PR #13411
  • 👷 使用 wrangler-action v3。由 @joakimnordling 提交的 PR #13415
  • 🔧 更新赞助商:添加 CodeRabbit。由 @tiangolo 提交的 PR #13402
  • 🔧 更新团队:添加 Ludovico。由 @tiangolo 提交的 PR #13390
  • 🔧 更新赞助商:添加 LambdaTest。由 @tiangolo 提交的 PR #13389
  • ⬆ 将 cloudflare/wrangler-action 从 3.13 升级到 3.14。由 @dependabot[bot] 提交的 PR #13350
  • ⬆ 将 mkdocs-material 从 9.5.18 升级到 9.6.1。由 @dependabot[bot] 提交的 PR #13301
  • ⬆ 将 pillow 从 11.0.0 升级到 11.1.0。由 @dependabot[bot] 提交的 PR #13300
  • 👥 更新 FastAPI People - 赞助商。由 @tiangolo 提交的 PR #13295
  • 👥 更新 FastAPI People - 专家。由 @tiangolo 提交的 PR #13303
  • 👥 更新 FastAPI GitHub 主题仓库。由 @tiangolo 提交的 PR #13302
  • 👥 更新 FastAPI People - 贡献者和翻译者。由 @tiangolo 提交的 PR #13293
  • ⬆ 将 inline-snapshot 从 0.18.1 升级到 0.19.3。由 @dependabot[bot] 提交的 PR #13298
  • 🔧 更新赞助商,添加 Permit。由 @tiangolo 提交的 PR #13288

0.115.8

修复

  • 🐛 修复 OAuth2PasswordRequestFormOAuth2PasswordRequestFormStrict 的固定 grant_type "password" 正则表达式。由 @skarfie123 提交的 PR #9783

重构

  • ✅ 简化 body_multiple_params 的测试。由 @alejsdev 提交的 PR #13237
  • ♻️ 将重复的代码部分移动到 APIKeyBase 超类的静态方法中。由 @ShahriyarR 提交的 PR #3142
  • ✅ 简化 request_files 的测试。由 @alejsdev 提交的 PR #13182

文档

  • 📝 在 docs/en/docs/tutorial/extra-models.md 中将 "unwrap" 一词改为 "unpack"。由 @timothy-jeong 提交的 PR #13061
  • 📝 更新 Request Body 的 tutorial002 以处理 tax=0 的情况。由 @togogh 提交的 PR #13230
  • 👥 更新 FastAPI People - 专家。由 @tiangolo 提交的 PR #13269

翻译

  • 🌐 为 docs/docs/environment-variables.md 添加日语翻译。由 @k94-ishi 提交的 PR #13226
  • 🌐 为 docs/docs/advanced/async-tests.md 添加俄语翻译。由 @Rishat-F 提交的 PR #13227
  • 🌐 更新 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 的俄语翻译。由 @Rishat-F 提交的 PR #13252
  • 🌐 为 docs/docs/tutorial/bigger-applications.md 添加俄语翻译。由 @alv2017 提交的 PR #13154

内部

  • ⬆️ 添加对 Python 3.13 的支持。由 @tiangolo 提交的 PR #13274
  • ⬆️ 升级 AnyIO 的最高版本以用于测试,新范围为:>=3.2.1,<5.0.0。由 @tiangolo 提交的 PR #13273
  • 🔧 更新赞助商徽章。由 @tiangolo 提交的 PR #13271
  • ♻️ 修复 notify_translations.py 中空环境变量处理的问题,针对 PR 标签事件与 workflow_dispatch。由 @tiangolo 提交的 PR #13272
  • ♻️ 重构并移动 scripts/notify_translations.py,不再需要自定义 GitHub Action。由 @tiangolo 提交的 PR #13270
  • 🔨 更新 FastAPI People Experts 脚本,重构并优化数据获取以处理速率限制。由 @tiangolo 提交的 PR #13267
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.12.3 升级到 1.12.4。由 @dependabot[bot] 提交的 PR #13251

0.115.7

升级

  • ⬆️ 将 python-multipart 升级到 >=0.0.18。由 @DanielKusyDev 提交的 PR #13219
  • ⬆️ 升级 Starlette,允许最高版本为 0.45.0:>=0.40.0,<0.46.0。由 @Kludex 提交的 PR #13117
  • ⬆️ 将 jinja2 升级到 >=3.1.5。由 @DanielKusyDev 提交的 PR #13194

重构

  • ✅ 简化 websockets 的测试。由 @alejsdev 提交的 PR #13202
  • ✅ 简化 request_form_models 的测试。由 @alejsdev 提交的 PR #13183
  • ✅ 简化 separate_openapi_schemas 的测试。由 @alejsdev 提交的 PR #13201
  • ✅ 简化 security 的测试。由 @alejsdev 提交的 PR #13200
  • ✅ 简化 schema_extra_example 的测试。由 @alejsdev 提交的 PR #13197
  • ✅ 简化 request_model 的测试。由 @alejsdev 提交的 PR #13195
  • ✅ 简化 request_forms_and_files 的测试。由 @alejsdev 提交的 PR #13185
  • ✅ 简化 request_forms 的测试。由 @alejsdev 提交的 PR #13184
  • ✅ 简化 path_query_params 的测试。由 @alejsdev 提交的 PR #13181
  • ✅ 简化 path_operation_configurations 的测试。由 @alejsdev 提交的 PR #13180
  • ✅ 简化 header_params 的测试。由 @alejsdev 提交的 PR #13179
  • ✅ 简化 extra_models 的测试。由 @alejsdev 提交的 PR #13178
  • ✅ 简化 extra_data_types 的测试。由 @alejsdev 提交的 PR #13177
  • ✅ 简化 cookie_params 的测试。由 @alejsdev 提交的 PR #13176
  • ✅ 简化 dependencies 的测试。由 @alejsdev 提交的 PR #13174
  • ✅ 简化 body_updates 的测试。由 @alejsdev 提交的 PR #13172
  • ✅ 简化 body_nested_models 的测试。由 @alejsdev 提交的 PR #13171
  • ✅ 简化 body_multiple_params 的测试。由 @alejsdev 提交的 PR #13170
  • ✅ 简化 body_fields 的测试。由 @alejsdev 提交的 PR #13169
  • ✅ 简化 body 的测试。由 @alejsdev 提交的 PR #13168
  • ✅ 简化 bigger_applications 的测试。由 @alejsdev 提交的 PR #13167
  • ✅ 简化 background_tasks 的测试。由 @alejsdev 提交的 PR #13166
  • ✅ 简化 additional_status_codes 的测试。由 @tiangolo 提交的 PR #13149

文档

  • ✏️ 更新 Strawberry 集成文档。由 @kinuax 提交的 PR #13155
  • 🔥 移除未使用的 Peewee 教程文件。由 @alejsdev 提交的 PR #13158
  • 📝 更新 body-nested-model 文档中的图片。由 @untilhamza 提交的 PR #11063
  • 📝 更新文档中 fastapi-cli 的 UI 示例。由 @Zhongheng-Cheng 提交的 PR #13107
  • 👷 添加新的 GitHub Action 以更新贡献者、翻译者和翻译审阅者。由 @tiangolo 提交的 PR #13136
  • ✏️ 修复 docs/en/docs/virtual-environments.md 中的拼写错误。由 @tiangolo 提交的 PR #13124
  • ✏️ 修复 docs/en/docs/contributing.md 中的错误。由 @kingsubin 提交的 PR #12899
  • 📝 对 docs/en/docs/tutorial/sql-databases.md 进行小幅修正。由 @alv2017 提交的 PR #13081
  • 📝 更新 docs/docs/tutorial/query-param-models.md 中的包含内容。由 @alejsdev 提交的 PR #12994
  • ✏️ 修复 README 安装说明中的拼写错误。由 @dave-hay 提交的 PR #13011
  • 📝 更新 fastapi-cli 的文档。由 @tiangolo 提交的 PR #13031

翻译

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

内部

  • 🔧 添加 Pydantic 2 的 trove 分类器。由 @johnthagen 提交的 PR #13199
  • 👥 更新 FastAPI People - 赞助商。由 @tiangolo 提交的 PR #13231
  • 👷 重构 FastAPI People Sponsors 以使用 2 个令牌。由 @tiangolo 提交的 PR #13228
  • 👷 更新 FastAPI People - Sponsors 的令牌。由 @tiangolo 提交的 PR #13225
  • 👷 为 FastAPI People - Sponsors 添加独立的 CI 自动化。由 @tiangolo 提交的 PR #13221
  • 👷 为 Smokeshow 添加重试机制。由 @tiangolo 提交的 PR #13151
  • 🔧 更新 Speakeasy 赞助商图片。由 @chailandau 提交的 PR #13147
  • 👥 更新 FastAPI GitHub 主题仓库。由 @tiangolo 提交的 PR #13146
  • 👷‍♀️ 为 GitHub 主题仓库添加脚本并更新外部链接。由 @alejsdev 提交的 PR #13135
  • 👥 更新 FastAPI People - 贡献者和翻译者。由 @tiangolo 提交的 PR #13145
  • ⬆ 将 markdown-include-variants 从 0.0.3 升级到 0.0.4。由 @dependabot[bot] 提交的 PR #13129
  • ⬆ 将 inline-snapshot 从 0.14.0 升级到 0.18.1。由 @dependabot[bot] 提交的 PR #13132
  • ⬆ 将 mkdocs-macros-plugin 从 1.0.5 升级到 1.3.7。由 @dependabot[bot] 提交的 PR #13133
  • 🔨 添加内部脚本以使用 PydanticAI 生成语言翻译,包括西班牙语提示。由 @tiangolo 提交的 PR #13123
  • ⬆ 将 astral-sh/setup-uv 从 4 升级到 5。由 @dependabot[bot] 提交的 PR #13096
  • 🔧 更新赞助商:将 CryptAPI 重命名为 BlockBee。由 @tiangolo 提交的 PR #13078
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.12.2 升级到 1.12.3。由 @dependabot[bot] 提交的 PR #13055
  • ⬆ 将 types-ujson 从 5.7.0.1 升级到 5.10.0.20240515。由 @dependabot[bot] 提交的 PR #13018
  • ⬆ 将 black 从 24.3.0 升级到 24.10.0。由 @dependabot[bot] 提交的 PR #13014
  • ⬆ 将 inline-snapshot 从 0.13.0 升级到 0.14.0。由 @dependabot[bot] 提交的 PR #13017
  • ⬆ 将 dirty-equals 从 0.6.0 升级到 0.8.0。由 @dependabot[bot] 提交的 PR #13015
  • ⬆ 将 cloudflare/wrangler-action 从 3.12 升级到 3.13。由 @dependabot[bot] 提交的 PR #12996
  • ⬆ 将 astral-sh/setup-uv 从 3 升级到 4。由 @dependabot[bot] 提交的 PR #12982
  • 🔧 移除 notify-translations.yml 中重复的 actions/checkout。由 @tinyboxvk 提交的 PR #12915
  • 🔧 更新团队成员。由 @tiangolo 提交的 PR #13033
  • 📝 更新赞助商:移除 Codacy。由 @tiangolo 提交的 PR #13032

0.115.6

修复

  • 🐛 在带有 yield 的同步依赖项中引发异常时保留回溯信息。由 @sombek 提交的 PR #5823

重构

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

文档

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

翻译

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

内部

0.115.5

重构

  • ♻️ 更新内部检查以支持 Pydantic 2.10。由 @tiangolo 提交的 PR #12914

文档

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

翻译

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

内部

0.115.4

重构

  • ♻️ 更新导入和检查 python-multipart 的逻辑,以兼容新版本。由 @tiangolo 提交的 PR #12627

文档

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

翻译

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

内部

  • ⬆ 将 cloudflare/wrangler-action 从 3.9 升级到 3.11。由 @dependabot[bot] 提交的 PR #12544
  • 👷 更新 GitHub Action 以部署文档预览,处理缺少部署评论的情况。由 @tiangolo 提交的 PR #12527
  • ⬆ [pre-commit.ci] pre-commit 自动更新。由 @pre-commit-ci[bot] 提交的 PR #12505

0.115.3

升级

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

文档

翻译

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

内部

0.115.2

升级

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

0.115.1

修复

  • 🐛 修复使用 responses kwarg 生成 openapi 的问题。 PR #10895 by @flxdot.
  • 🐛 在 fastapi 中使用 Pydantic v2 时移除 Required 的遮蔽。 PR #12197 by @pachewise.

重构

  • ♻️ 为改进的 python-multipart 更新类型注解。 PR #12407 by @tiangolo.

文档

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

翻译

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

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 参数模型

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 参数模型

使用 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 参数,请阅读新文档

特性

  • ✨ 为使用 Query, Cookie, Header 的参数添加 Pydantic 模型支持。 PR #12199 by @tiangolo.

翻译

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

内部

0.114.2

修复

翻译

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

内部

0.114.1

重构

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

文档

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

翻译

  • 🌐 为 docs/docs/virtual-environments.md 添加葡萄牙语翻译。 PR #12163 by @marcelomarkus.
  • 🌐 为 docs/docs/environment-variables.md 添加葡萄牙语翻译。 PR #12162 by @marcelomarkus.
  • 🌐 为 docs/docs/tutorial/testing.md 添加葡萄牙语翻译。 PR #12164 by @marcelomarkus.
  • 🌐 为 docs/docs/tutorial/debugging.md 添加葡萄牙语翻译。 PR #12165 by @marcelomarkus.
  • 🌐 为 docs/docs/project-generation.md 添加韩语翻译。 PR #12157 by @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

阅读新文档:表单模型 - 禁止额外的表单字段

特性

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

文档

  • 📝 更新文档,使“表单模型”部分标题与配置名称匹配。 PR #12152 by @tiangolo.

内部

  • ✅ 更新内部测试以适应最新的 Pydantic,包括 CI 调整以安装最新的 Pydantic。 PR #12147 by @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 参数中添加对 Pydantic 模型的支持。 PR #12129 by @tiangolo.

内部

0.112.4

此版本主要是一次大型内部重构,旨在为 Form 字段添加 Pydantic 模型支持,但该功能将在下一个版本中推出。

此版本不应以任何方式影响使用 FastAPI 的应用程序。你甚至不需要立即升级到此版本。这只是一个检查点。🤓

重构

  • ♻️ 重构关于是否 embed 请求体字段的决定,不覆盖字段,每个路由器计算一次,重构内部以准备在 FormQuery 和其他地方使用 Pydantic 模型。 PR #12117 by @tiangolo.

内部

  • ⏪️ 暂时恢复“✨ 在 Form 参数中添加对 Pydantic 模型的支持”以创建一个检查点版本。 PR #12128 by @tiangolo. 由 PR #12129 恢复。
  • ✨ 在 Form 参数中添加对 Pydantic 模型的支持。 PR #12127 by @tiangolo. 由 PR #12128 恢复以创建一个仅包含重构的检查点版本。由 PR #12129 恢复。

0.112.3

此版本主要是内部重构,不应以任何方式影响使用 FastAPI 的应用程序。你甚至不需要立即升级到此版本。接下来会有几个更大的版本发布。🚀

重构

  • ♻️ 重构内部 check_file_field(),重命名为 ensure_multipart_is_installed() 以阐明其目的。 PR #12106 by @tiangolo.
  • ♻️ 将内部 create_response_field() 重命名为 create_model_field(),因为它不仅仅用于响应模型。 PR #12103 by @tiangolo.
  • ♻️ 使用 dataclasses 重构和简化 solve_dependencies() 的内部数据。 PR #12100 by @tiangolo.
  • ♻️ 使用 dataclasses 而不是元组来重构和简化内部 analyze_param() 的数据结构。 PR #12099 by @tiangolo.
  • ♻️ 使用 dataclasses 重构和简化依赖项数据结构。 PR #12098 by @tiangolo.

文档

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

翻译

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

内部

0.112.2

修复

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

重构

文档

  • 📝 修复 docs/en/docs/virtual-environments.md 中的一个拼写错误。 PR #12064 by @aymenkrifa.
  • 📝 添加关于环境变量和虚拟环境的文档。 PR #12054 by @tiangolo.
  • 📝 在异步文档中添加 Asyncer 的提及。 PR #12037 by @tiangolo.
  • 📝 将“特性”文档移动到顶层以改善主页菜单。 PR #12036 by @tiangolo.
  • ✏️ 修复 Security 参考示例中的导入拼写错误。 PR #11168 by @0shah0.
  • 📝 在教程 docs/en/docs/tutorial/body-multiple-params.md 中高亮正确的行。 PR #11978 by @svlandeg.
  • 🔥 从高级中间件文档中移除 Sentry 链接。 PR #12031 by @alejsdev.
  • 📝 阐明翻译的管理任务,一个 PR 中包含多个文件。 PR #12030 by @tiangolo.
  • 📝 编辑“附加 OpenAPI 响应”部分中指向 OpenAPI“响应对象”和“响应对象”部分的链接。 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 联合类型示例更新 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].
  • 🔧 将变更日志 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 脚本以有条件地启用 dirty reload。 PR #11986 by @tiangolo.
  • 🔧 更新 MkDocs 即时预览。 PR #11982 by @tiangolo.
  • 🐛 修复部署文档预览脚本以处理 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 则不包含那些标准依赖项。

现在 fastapi 不包含那些标准依赖项,除非你使用 pip install "fastapi[standard]" 安装。

以前,你会安装 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.
  • 👷 更新令牌权限以在文档中评论部署 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.
  • 📝 添加外部链接:Tutorial de FastAPI, ¿el mejor framework de 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/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

修复

  • 🐛 修复对列表类型查询参数的支持,处理 JSON 编码 Pydantic UndefinedType。 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-strings 简化字符串格式化。 PR #11335 by @igeni.

升级

  • ⬆️ 将 Starlette 升级到 >=0.37.2,<0.38.0,移除内部测试的 Starlette filterwarning。 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 添加德语翻译。由 @nilslindemann 贡献的 PR #10746
  • 🌐 为 docs/docs/advanced/behind-a-proxy.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10675
  • 🌐 为 docs/docs/help-fastapi.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10455
  • 🌐 更新 docs/docs/python-types.md 的德语翻译。由 @nilslindemann 贡献的 PR #10287
  • 🌐 为 docs/docs/tutorial/path-params.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10290
  • 🌐 为 docs/docs/tutorial/handling-errors.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10379
  • 🌐 更新 docs/docs/index.md 的德语翻译。由 @nilslindemann 贡献的 PR #10283
  • 🌐 为 docs/docs/advanced/security/http-basic-auth.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10651
  • 🌐 为 docs/docs/tutorial/bigger-applications.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10554
  • 🌐 为 docs/docs/advanced/path-operation-advanced-configuration.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10612
  • 🌐 为 docs/docs/tutorial/static-files.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10584
  • 🌐 为 docs/docs/tutorial/security/oauth2-jwt.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10522
  • 🌐 为 docs/docs/tutorial/response-model.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10345
  • 🌐 为 docs/docs/tutorial/extra-models.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10351
  • 🌐 为 docs/docs/tutorial/body-updates.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10396
  • 🌐 为 docs/docs/alternatives.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10855
  • 🌐 为 docs/docs/advanced/templates.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10678
  • 🌐 为 docs/docs/advanced/security/oauth2-scopes.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10643
  • 🌐 为 docs/docs/advanced/async-tests.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10708
  • 🌐 为 docs/docs/tutorial/metadata.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10581
  • 🌐 为 docs/docs/tutorial/testing.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10586
  • 🌐 为 docs/docs/tutorial/schema-extra-example.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10597
  • 🌐 为 docs/docs/advanced/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10611
  • 🌐 为 docs/docs/advanced/response-directly.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10618
  • 🌐 为 docs/docs/advanced/additional-responses.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10626
  • 🌐 为 docs/docs/advanced/response-cookies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10627
  • 🌐 为 docs/docs/advanced/response-headers.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10628
  • 🌐 为 docs/docs/advanced/response-change-status-code.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10632
  • 🌐 为 docs/docs/advanced/advanced-dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10633
  • 🌐 为 docs/docs/advanced/security/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10635
  • 🌐 为 docs/docs/advanced/using-request-directly.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10653
  • 🌐 为 docs/docs/advanced/dataclasses.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10667
  • 🌐 为 docs/docs/advanced/middleware.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10668
  • 🌐 为 docs/docs/advanced/sub-applications.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10671
  • 🌐 为 docs/docs/advanced/websockets.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10687
  • 🌐 为 docs/docs/advanced/testing-websockets.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10703
  • 🌐 为 docs/docs/advanced/testing-events.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10704
  • 🌐 为 docs/docs/advanced/testing-dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10706
  • 🌐 为 docs/docs/advanced/openapi-callbacks.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10710
  • 🌐 为 docs/docs/advanced/settings.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10709
  • 🌐 为 docs/docs/advanced/wsgi.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10713
  • 🌐 为 docs/docs/deployment/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10733
  • 🌐 为 docs/docs/deployment/https.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10737
  • 🌐 为 docs/docs/deployment/manually.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10738
  • 🌐 为 docs/docs/deployment/concepts.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10744
  • 🌐 更新 docs/docs/features.md 的德语翻译。由 @nilslindemann 贡献的 PR #10284
  • 🌐 为 docs/docs/deployment/server-workers.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10747
  • 🌐 为 docs/docs/deployment/docker.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10759
  • 🌐 为 docs/docs/how-to/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10769
  • 🌐 为 docs/docs/how-to/general.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10770
  • 🌐 为 docs/docs/how-to/graphql.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10788
  • 🌐 为 docs/docs/how-to/custom-request-and-route.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10789
  • 🌐 为 docs/docs/how-to/conditional-openapi.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10790
  • 🌐 为 docs/docs/how-to/separate-openapi-schemas.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10796
  • 🌐 为 docs/docs/how-to/configure-swagger-ui.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10804
  • 🌐 为 docs/docs/how-to/custom-docs-ui-assets.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10803
  • 🌐 为 docs/docs/reference/parameters.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10814
  • 🌐 为 docs/docs/reference/status.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10815
  • 🌐 为 docs/docs/reference/uploadfile.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10816
  • 🌐 为 docs/docs/reference/exceptions.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10817
  • 🌐 为 docs/docs/reference/dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10818
  • 🌐 为 docs/docs/reference/apirouter.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10819
  • 🌐 为 docs/docs/reference/websockets.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10822
  • 🌐 为 docs/docs/reference/httpconnection.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10823
  • 🌐 为 docs/docs/reference/response.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10824
  • 🌐 为 docs/docs/reference/middleware.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10837
  • 🌐 为 docs/docs/reference/openapi/*.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10838
  • 🌐 为 docs/docs/reference/security/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10839
  • 🌐 为 docs/docs/reference/staticfiles.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10841
  • 🌐 为 docs/docs/reference/testclient.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10843
  • 🌐 为 docs/docs/project-generation.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10851
  • 🌐 为 docs/docs/history-design-future.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10865
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-with-yield.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10422
  • 🌐 为 docs/docs/tutorial/dependencies/global-dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10420
  • 🌐 更新 docs/docs/fastapi-people.md 的德语翻译。由 @nilslindemann 贡献的 PR #10285
  • 🌐 为 docs/docs/tutorial/dependencies/sub-dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10409
  • 🌐 为 docs/docs/tutorial/security/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10429
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10411
  • 🌐 为 docs/docs/tutorial/extra-data-types.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10534
  • 🌐 为 docs/docs/tutorial/security/simple-oauth2.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10504
  • 🌐 为 docs/docs/tutorial/security/get-current-user.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10439
  • 🌐 为 docs/docs/tutorial/request-forms-and-files.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10368
  • 🌐 为 docs/docs/tutorial/encoder.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10385
  • 🌐 为 docs/docs/tutorial/request-forms.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10361
  • 🌐 为 docs/docs/deployment/versions.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10491
  • 🌐 为 docs/docs/async.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10449
  • 🌐 为 docs/docs/tutorial/cookie-params.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10323
  • 🌐 为 docs/docs/tutorial/dependencies/classes-as-dependencies.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10407
  • 🌐 为 docs/docs/tutorial/dependencies/index.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10399
  • 🌐 为 docs/docs/tutorial/header-params.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10326
  • 🌐 为 docs/docs/tutorial/path-params-numeric-validations.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10307
  • 🌐 为 docs/docs/tutorial/query-params-str-validations.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10304
  • 🌐 为 docs/docs/tutorial/request-files.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10364
  • :globe_with_meridians: 为 docs/docs/advanced/templates.md 添加葡萄牙语翻译。由 @SamuelBFavarin 贡献的 PR #11338
  • 🌐 为 docs/docs/learn/index.md 添加孟加拉语翻译。由 @imtiaz101325 贡献的 PR #11337
  • 🌐 修复 docs/docs/index.md 的韩语翻译。由 @choi-haram 贡献的 PR #11296
  • 🌐 为 docs/docs/about/index.md 添加韩语翻译。由 @choi-haram 贡献的 PR #11299
  • 🌐 为 docs/docs/advanced/index.md 添加韩语翻译。由 @ElliottLarsen 贡献的 PR #9613
  • 🌐 为 docs/docs/how-to/extending-openapi.md 添加德语翻译。由 @nilslindemann 贡献的 PR #10794
  • 🌐 更新 docs/docs/tutorial/metadata.md 的中文翻译。由 @jackleeio 贡献的 PR #11286
  • 🌐 更新 docs/docs/contributing.md 的中文翻译。由 @Aruelius 贡献的 PR #10887
  • 🌐 为 docs/docs/fastapi-people.md 添加阿塞拜疆语翻译。由 @vusallyv 贡献的 PR #11195
  • 🌐 为 docs/docs/tutorial/dependencies/index.md 添加俄语翻译。由 @kohiry 贡献的 PR #11223
  • 🌐 更新 docs/docs/tutorial/query-params.md 的中文翻译。由 @jackleeio 贡献的 PR #11242
  • 🌐 为 docs/learn/index.md 添加阿塞拜疆语翻译。由 @vusallyv 贡献的 PR #11192

内部

  • 👥 更新 FastAPI People。由 @tiangolo 贡献的 PR #11387
  • ⬆ 将 actions/cache 从版本 3 升级到 4。由 @dependabot[bot] 贡献的 PR #10988
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.11 升级到 1.8.14。由 @dependabot[bot] 贡献的 PR #11318
  • ⬆ 将 pillow 从 10.1.0 升级到 10.2.0。由 @dependabot[bot] 贡献的 PR #11011
  • ⬆ 将 black 从 23.3.0 升级到 24.3.0。由 @dependabot[bot] 贡献的 PR #11325
  • 👷 添加 cron 任务,每周一运行一次测试。由 @estebanx64 贡献的 PR #11377
  • ➕ 使用 mkdocs-macros-plugin 替换 mkdocs-markdownextradata-plugin。由 @tiangolo 贡献的 PR #11383
  • 👷 在处理 MkDocs Material 中的问题时,禁用 MkDocs insiders social 插件。由 @tiangolo 贡献的 PR #11373
  • 👷 修复何时安装和使用 MkDocs Insiders 的逻辑。由 @tiangolo 贡献的 PR #11372
  • 👷 发布时不使用 Python 包缓存。由 @tiangolo 贡献的 PR #11366
  • 👷 添加 CI 以测试 sdist 的再分发(例如 Linux 发行版)。由 @tiangolo 贡献的 PR #11365
  • 👷 更新 build-docs GitHub Action 的路径过滤器。由 @tiangolo 贡献的 PR #11354
  • 🔧 更新 Ruff 配置,从 SQLModel 添加额外的忽略规则。由 @tiangolo 贡献的 PR #11353
  • ⬆️ 为 Ruff v0.2.0 升级配置。由 @charliermarsh 贡献的 PR #11075
  • 🔧 更新赞助商,添加 MongoDB。由 @tiangolo 贡献的 PR #11346
  • ⬆ 将 dorny/paths-filter 从版本 2 升级到 3。由 @dependabot[bot] 贡献的 PR #11028
  • ⬆ 将 dawidd6/action-download-artifact 从 3.0.0 升级到 3.1.4。由 @dependabot[bot] 贡献的 PR #11310
  • ♻️ 重构 FastAPI People 的计算方式,基于评论日期而非讨论日期,包含 3 个月、6 个月、1 年的贡献者。由 @tiangolo 贡献的 PR #11304
  • 👥 更新 FastAPI People。由 @tiangolo 贡献的 PR #11228
  • 🔥 从文档中移除 Jina AI 问答机器人。由 @nan-wang 贡献的 PR #11268
  • 🔧 更新赞助商,移除 Jina,移除 Powens,移动 TestDriven.io。由 @tiangolo 贡献的 PR #11213

0.110.0

重大变更

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

简而言之,如果您有如下所示的依赖项

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

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

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

文档

  • ✏️ 修复 docs/docs/ 中的一些小拼写错误。由 @KaniKim 贡献的 PR #11126
  • ✏️ 修复 fastapi/applications.py 中的一个小拼写错误。由 @JacobHayes 贡献的 PR #11099

翻译

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

0.109.2

升级

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

翻译

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

内部

0.109.1

安全修复

  • ⬆️ 将 python-multipart 的最低版本升级到 >=0.0.7,以修复在使用表单数据时可能遭受 ReDoS 攻击的漏洞。您也可以仅升级 python-multipart

更多信息请参阅安全公告:Content-Type Header ReDoS

特性

  • ✨ 将 HTTP 205 包含在无响应体的状态码中。由 @tiangolo 贡献的 PR #10969

重构

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

文档

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

翻译

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

内部

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

0.109.0

特性

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

升级

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

文档

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

翻译

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

内部

  • 👥 更新 FastAPI People。由 @tiangolo 贡献的 PR #10871
  • 👷 升级自定义 GitHub Action comment-docs-preview-in-pr。由 @tiangolo 贡献的 PR #10916
  • ⬆️ 升级 GitHub Action latest-changes。由 @tiangolo 贡献的 PR #10915
  • 👷 升级 GitHub Action label-approved。由 @tiangolo 贡献的 PR #10913
  • ⬆️ 升级 GitHub Action label-approved。由 @tiangolo 贡献的 PR #10905

0.108.0

升级

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

0.107.0

升级

  • ⬆️ 将 Starlette 升级到 0.28.0。由 @adriangb 贡献的 PR #9636

文档

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

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”出的相同对象,因为退出代码会在后台任务完成后执行。

然而,由于这意味着在不必要地持有一个带 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)的支持,但不支持在后台任务中使用它们。由 @tiangolo 贡献的 PR #10831

内部

0.105.0

特性

  • ✨ 添加对多个 Annotated 注解的支持,例如 Annotated[str, Field(), Query()]。由 @tiangolo 贡献的 PR #10773

重构

文档

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

内部

  • 🔧 更新赞助商,添加 Scalar。由 @tiangolo 贡献的 PR #10728
  • 🔧 更新赞助商,添加 PropelAuth。由 @tiangolo 贡献的 PR #10760
  • 👷 更新构建文档,在 CI 上验证 README。由 @tiangolo 贡献的 PR #10750
  • 🔧 更新赞助商,移除 Fern。由 @tiangolo 贡献的 PR #10729
  • 🔧 更新赞助商,添加 Codacy。由 @tiangolo 贡献的 PR #10677
  • 🔧 更新赞助商,添加 Reflex。由 @tiangolo 贡献的 PR #10676
  • 📝 更新发布说明,移动并检查 latest-changes。由 @tiangolo 贡献的 PR #10588
  • 👷 升级 latest-changes GitHub Action。由 @tiangolo 贡献的 PR #10587

0.104.1

修复

  • 📌 暂时将 Swagger UI 版本固定为 5.9.0,以处理 5.9.1 中导致其崩溃的错误。由 @alejandraklachquin 贡献的 PR #10529
    • 这实际上不是 FastAPI 的错误,而是 Swagger UI 的错误,但固定版本可以在 Swagger UI 方面找到解决方案之前暂时解决问题。

文档

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

内部

  • ✏️ 更新 Pydantic 链接以支持 dotenv。 由 @White-Mask 提交的 PR #10511
  • ✏️ 更新 docs/en/docs/async.mddocs/docs/async.md 中的链接,使其成为相对链接。 由 @hasnatsajid 提交的 PR #10498
  • ✏️ 修复 docs/docs/async.md 中的链接。 由 @hasnatsajid 提交的 PR #10507
  • ✏️ 修复 docs/docs/index.md 中的拼写错误,Python 3.8。 由 @kerriop 提交的 PR #10521
  • ⬆ 将 pillow 从 9.5.0 升级到 10.1.0。 由 @dependabot[bot] 提交的 PR #10446
  • ⬆ 将 mkdocs-material 依赖从 <9.0.0,>=8.1.4 更新为 >=8.1.4,<10.0.0。 由 @dependabot[bot] 提交的 PR #5862
  • ⬆ 将 mkdocs-material 从 9.1.21 升级到 9.4.7。 由 @dependabot[bot] 提交的 PR #10545
  • 👷 仅在有密钥时为 Dependabot 安装 MkDocs Material Insiders。 由 @tiangolo 提交的 PR #10544
  • 🔧 更新赞助商徽章,Databento。 由 @tiangolo 提交的 PR #10519
  • 👷 采用 Ruff 格式。 由 @tiangolo 提交的 PR #10517
  • 🔧 添加 CITATION.cff 文件用于学术引用。 由 @tiangolo 提交的 PR #10496
  • 🐛 修复在 hook 中覆盖 MKDocs 主题语言的问题。 由 @tiangolo 提交的 PR #10490
  • 🔥 放弃/关闭 Gitter 聊天。问题应提交至 GitHub Discussions,自由交流请前往 Discord。 由 @tiangolo 提交的 PR #10485

0.104.0

特性

  • ✨ 使用 PEP 727 添加参考(代码 API)文档,为 BackgroundTasks 添加带有自定义文档字符串的子类,重构文档结构。 由 @tiangolo 提交的 PR #10392。 新文档位于 FastAPI 参考 - 代码 API

升级

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

内部

0.103.2

重构

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

翻译

  • 🌐 为 docs/docs/tutorial/extra-data-types.md 添加乌克兰语翻译。 由 @ArtemKhymenko 提交的 PR #10132
  • 🌐 修复 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 的法语翻译中的拼写错误。 由 @s-rigaud 提交的 PR #10154
  • 🌐 为 docs/docs/async.md 添加中文翻译。 由 @mkdir700 提交的 PR #5591
  • 🌐 更新 docs/tutorial/security/simple-oauth2.md 的中文翻译。 由 @jaystone776 提交的 PR #3844
  • 🌐 为 docs/docs/deployment/cloud.md 添加韩语翻译。 由 @Sion99 提交的 PR #10191
  • 🌐 为 docs/docs/deployment/https.md 添加日语翻译。 由 @tamtam-fitness 提交的 PR #10298
  • 🌐 修复 docs/docs/tutorial/body-fields.md 俄语翻译中的拼写错误。 由 @AlertRED 提交的 PR #10224
  • 🌐 为 docs/docs/help-fastapi.md 添加波兰语翻译。 由 @romabozhanovgithub 提交的 PR #10121
  • 🌐 为 docs/docs/tutorial/header-params.md 添加俄语翻译。 由 @AlertRED 提交的 PR #10226
  • 🌐 为 docs/docs/deployment/versions.md 添加中文翻译。 由 @xzmeng 提交的 PR #10276

内部

  • 🔧 更新赞助商,移除 Flint。 由 @tiangolo 提交的 PR #10349
  • 🔧 将标签“awaiting review”重命名为“awaiting-review”以简化搜索查询。 由 @tiangolo 提交的 PR #10343
  • 🔧 更新赞助商,启用 Svix (revert #10228)。 由 @tiangolo 提交的 PR #10253
  • 🔧 更新赞助商,移除 Svix。 由 @tiangolo 提交的 PR #10228
  • 🔧 更新赞助商,添加 Bump.sh。 由 @tiangolo 提交的 PR #10227

0.103.1

修复

  • 📌 将 AnyIO 固定到 < 4.0.0 以处理升级到 Starlette 0.31.1 时的不兼容问题。 由 @tiangolo 提交的 PR #10194

文档

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

翻译

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

重构

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

内部

0.103.0

特性

文档

  • 📝 在文档中添加关于使用 FastAPI 版本的单独输入和输出模式的说明。 由 @tiangolo 提交的 PR #10150

0.102.0

特性

  • ✨ 使用 Pydantic v2 添加对在 OpenAPI 中禁用输入和输出 JSON Schema 分离的支持,通过 separate_input_output_schemas=False 实现。 由 @tiangolo 提交的 PR #10145

重构

  • ♻️ 重构测试以适应新的 Pydantic 2.2.1。 由 @tiangolo 提交的 PR #10115

文档

  • 📝 添加新的文档部分,“How To - Recipes”,将不必被所有人阅读的文档移动到 How To。 由 @tiangolo 提交的 PR #10114
  • 📝 更新高级文档,添加指向赞助商课程的链接。 由 @tiangolo 提交的 PR #10113
  • 📝 更新生成客户端的文档。 由 @tiangolo 提交的 PR #10112
  • 📝 调整 MkDocs 并添加重定向。 由 @tiangolo 提交的 PR #10111
  • 📝 为云提供商重构文档结构,包含指向赞助商的链接。 由 @tiangolo 提交的 PR #10110

内部

  • 🔧 更新赞助商,添加 Speakeasy。 由 @tiangolo 提交的 PR #10098

0.101.1

修复

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

重构

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

文档

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

翻译

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

内部

0.101.0

特性

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

重构

  • ✅ 修复与 pydantic 2.1.1 兼容的测试。 由 @dmontagu 提交的 PR #9943
  • ✅ 修复 Windows 中 jsonable_encoder 的测试错误。 由 @iudeen 提交的 PR #9840

升级

  • 📌 不允许会破坏的 Pydantic 2.1.0(要求 2.1.1)。 由 @tiangolo 提交的 PR #10012

翻译

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

内部

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

0.100.1

修复

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

文档

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

翻译

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

内部

  • 🔧 更新赞助商,添加 Fern。 由 @tiangolo 提交的 PR #9956
  • 👷 更新 FastAPI People 令牌。 由 @tiangolo 提交的 PR #9844
  • 👥 更新 FastAPI People。 由 @tiangolo 提交的 PR #9775
  • 👷 更新 MkDocs Material 令牌。 由 @tiangolo 提交的 PR #9843
  • 👷 更新最新更改的令牌。 由 @tiangolo 提交的 PR #9842

0.100.0

✨ 支持 Pydantic v2

Pydantic v2 的核心Rust 重写,并包含许多改进和功能,例如

  • 在边缘情况下提高了正确性
  • 更安全的类型。
  • 更好的性能更少的能源消耗。
  • 更好的可扩展性
  • 等等。

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

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

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

此版本的重点是与 Pydantic v1 和 v2 的兼容性,以确保你当前的应用继续工作。稍后将更专注于重构、正确性、代码改进,然后是性能改进。一些在 FastAPI 的 Beta 版本上运行基准测试的第三方早期 Beta 测试人员报告了 2x - 3x 的改进。对于仅执行 pip install --upgrade fastapi pydantic 来说,这还不错。这不是官方基准测试,我自己也没有检查,但这是一个好兆头。

迁移

请查看 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,它接受一个简单的字典而不是一个内部类 Config 来进行配置。
  • 内部类 Config 的属性 schema_extra 已被新的 model_config 字典中的键 json_schema_extra 取代。
  • 当你安装 "fastapi[all]" 时,它现在还包括
  • 现在 Pydantic Settings 是一个额外的可选包(包含在 "fastapi[all]" 中)。要使用设置,你现在应该从 pydantic_settings import BaseSettings 导入,而不是直接从 pydantic 导入。

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

0.99.1

修复

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

文档

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

0.99.0

特性

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

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

文档

  • 📝 修复 FastAPI and friends 邮件列表的表单。 由 @tiangolo 提交的 PR #9749

翻译

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

内部

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

0.98.0

特性

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

文档

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

翻译

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

内部

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

0.97.0

特性

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

重构

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

升级

内部

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

0.96.1

修复

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

升级

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

重构

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

文档

  • 🔥 移除指向 Pydantic 基准测试的链接,因为它已在那里被移除。 由 @Kludex 提交的 PR #5811

翻译

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

内部

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

0.96.0

特性

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

文档

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

翻译

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

内部

0.95.2

翻译

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

内部

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

0.95.1

修复

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

文档

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

翻译

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

内部

  • 🔧 更新赞助商:移除 Jina。 由 @tiangolo 提交的 PR #9388
  • 🔧 更新赞助商,添加 databento,移除 Ines 的课程和 StriveWorks。 由 @tiangolo 提交的 PR #9351

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 的支持,用于指定依赖项和参数。 由 @nzig 提交的 PR #4871

文档

  • 📝 调整文档中推荐 Annotated 的提示。 由 @tiangolo 提交的 PR #9270
  • 📝 更新示例顺序,最新 Python 版本优先,并简化版本标签名称。 由 @tiangolo 提交的 PR #9269
  • 📝 更新所有文档以使用 Annotated 作为主要推荐,附有新的示例和测试。 由 @tiangolo 提交的 PR #9268

0.94.1

修复

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

0.94.0

升级

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

文档

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

翻译

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

内部

0.93.0

新特性

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

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

例如

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 事件。

在新的文档中阅读更多相关信息:高级用户指南:生命周期事件

文档

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

翻译

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

内部

  • 👷 更新翻译机器人的消息。 由 @tiangolo 提交的 PR #9206
  • 👷 更新翻译机器人以使用 Discussions,并在 PR 完成时通知。 由 @tiangolo 提交的 PR #9183
  • 🔧 更新赞助商徽章。 由 @tiangolo 提交的 PR #9182
  • 👥 更新 FastAPI People。 由 @github-actions[bot] 提交的 PR #9181
  • 🔊 在 FastAPI People 中记录 GraphQL 错误,因为它会返回 200,并带有一个错误的 payload。 由 @tiangolo 提交的 PR #9171
  • 💚 为 FastAPI People 修复/变通解决在 Docker 中使用 git 的 GitHub Actions。 由 @tiangolo 提交的 PR #9169
  • ♻️ 重构 FastAPI Experts,在问题迁移后现在只使用 Discussions。 由 @tiangolo 提交的 PR #9165
  • ⬆️ 升级分析工具。 由 @tiangolo 提交的 PR #6025
  • ⬆️ 升级并重新启用 Typer-CLI 的安装。 由 @tiangolo 提交的 PR #6008

0.92.0

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

升级

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

0.91.0

升级

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

0.90.1

升级

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

文档

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

翻译

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

内部

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

0.90.0

升级

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

文档

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

翻译

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

内部

  • ⬆️ 为文档工作流升级 Ubuntu 版本。 由 @tiangolo 提交的 PR #5971
  • 🔧 更新赞助商徽章。 由 @tiangolo 提交的 PR #5943
  • ✨ 计算 FastAPI Experts,包括 GitHub Discussions。 由 @tiangolo 提交的 PR #5941
  • ⬆️ 升级 isort 并更新 pre-commit。 由 @tiangolo 提交的 PR #5940
  • 🔧 在 Discussions 中为问题添加模板。 由 @tiangolo 提交的 PR #5920
  • 🔧 将赞助商 Budget Insight 更新为 Powens。 由 @tiangolo 提交的 PR #5916
  • 🔧 更新 GitHub Sponsors 徽章数据。 由 @tiangolo 提交的 PR #5915

0.89.1

修复

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

文档

翻译

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

0.89.0

新特性

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

现在您可以在函数返回类型注解中声明返回类型 / 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

文档

  • 📝 添加外部链接:Authorization on FastAPI with Casbin。 由 @Xhy-5000 提交的 PR #5712
  • ✏ 修复 docs/en/docs/async.md 中的拼写错误。 由 @Kingdageek 提交的 PR #5785
  • ✏ 修复 docs/en/docs/deployment/concepts.md 中的拼写错误。 由 @kelbyfaessler 提交的 PR #5824

翻译

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

内部

  • ⬆ 将 coverage[toml] 的依赖要求从 <7.0,>=6.5.0 更新为 >=6.5.0,<8.0。 由 @dependabot[bot] 提交的 PR #5801
  • ⬆ 将 uvicorn[standard] 的开发依赖要求从 <0.19.0,>=0.12.0 更新为 >=0.12.0,<0.21.0。 由 @dependabot[bot] 提交的 PR #5795
  • ⬆ 将 dawidd6/action-download-artifact 从 2.24.2 升级到 2.24.3。 由 @dependabot[bot] 提交的 PR #5842
  • 👥 更新 FastAPI People。 由 @github-actions[bot] 提交的 PR #5825
  • ⬆ 将 types-ujson 从 5.5.0 升级到 5.6.0.0。 由 @dependabot[bot] 提交的 PR #5735
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.5.2 升级到 1.6.4。 由 @dependabot[bot] 提交的 PR #5750
  • 👷 添加 GitHub Action 门控/检查。 由 @webknjaz 提交的 PR #5492
  • 🔧 更新赞助商,添加 Svix。 由 @tiangolo 提交的 PR #5848
  • 🔧 移除 Doist 赞助商。 由 @tiangolo 提交的 PR #5847
  • ⬆ 将 sqlalchemy 的依赖要求从 <=1.4.41,>=1.3.18 更新为 >=1.3.18,<1.4.43。 由 @dependabot[bot] 提交的 PR #5540
  • ⬆ 将 nwtgck/actions-netlify 从 1.2.4 升级到 2.0.0。 由 @dependabot[bot] 提交的 PR #5757
  • 👷 为文档预览重构 CI artifact 上传/下载。 由 @tiangolo 提交的 PR #5793
  • ⬆ 将 pypa/gh-action-pypi-publish 从 1.5.1 升级到 1.5.2。 由 @dependabot[bot] 提交的 PR #5714
  • 👥 更新 FastAPI People。 由 @github-actions[bot] 提交的 PR #5722
  • 🔧 更新赞助商,禁用课程捆绑包。 由 @tiangolo 提交的 PR #5713
  • ⬆ 将 typer[all] 的依赖要求从 <0.7.0,>=0.6.1 更新为 >=0.6.1,<0.8.0。 由 @dependabot[bot] 提交的 PR #5639

0.88.0

升级

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

文档

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

翻译

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

内部

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

0.87.0

此版本亮点

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

新特性

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

文档

  • ✏️ 在合并后根据 PR 审查调整帮助 FastAPI 文档。 由 @tiangolo 提交的 PR #5633
  • ✏️ 澄清关于 CORS 的文档。 由 @paxcodes 提交的 PR #5627
  • 📝 更新帮助 FastAPI:帮助维护 FastAPI。 由 @tiangolo 提交的 PR #5632

翻译

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

内部

  • ✨ 使用 Ruff 进行代码检查。 由 @tiangolo 提交的 PR #5630
  • 🛠 在通知翻译的 GitHub Action 中添加阿拉伯语的 issue 编号。 由 @tiangolo 提交的 PR #5610
  • ⬆ 将 dawidd6/action-download-artifact 从 2.24.1 升级到 2.24.2。 由 @dependabot[bot] 提交的 PR #5609
  • ⬆ 将 dawidd6/action-download-artifact 从 2.24.0 升级到 2.24.1。 由 @dependabot[bot] 提交的 PR #5603
  • 📝 更新覆盖率徽章以使用 Samuel Colvin 的 Smokeshow。 由 @tiangolo 提交的 PR #5585

0.86.0

新特性

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

修复

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

文档

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

翻译

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

内部

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

0.85.2

文档

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

翻译

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

内部

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

0.85.1

修复

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

文档

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

内部

0.85.0

新特性

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

内部

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

0.84.0

破坏性变更

此版本的 FastAPI 不再支持 Python 3.6。🔥 请升级到受支持的 Python 版本(3.7 或更高版本),Python 3.6 早已达到生命周期终点。😅☠

  • 🔧 更新包元数据,放弃对 Python 3.6 的支持,将构建内部从 Flit 移动到 Hatch。 由 @ofek 提交的 PR #5240

0.83.0

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

Python 3.6 已达到生命周期终点,大约一年前已不再受 Python 支持

希望您很久以前就更新到了受支持的 Python 版本。如果您还没有,您真的应该这样做。

新特性

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

修复

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

文档

  • 📝 更新 SECURITY.md。 由 @Kludex 提交的 PR #5377

内部

0.82.0

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

Python 3.6 已达到生命周期终点,大约一年前已不再受 Python 支持

希望您很久以前就更新到了受支持的 Python 版本。如果您还没有,您真的应该这样做。

新特性

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

修复

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

文档

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

翻译

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

内部

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

0.81.0

新特性

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

修复

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

文档

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

翻译

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

内部

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

0.80.0

破坏性变更 - 修复

  • 🐛 修复 response_model 不使 None 无效的问题。 由 @hukkin 提交的 PR #2725

如果您使用的 response_model 类型不包括 None,但函数返回 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 对于使用 Item 声明的 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():
    if flag:
        return {"name": "foo"}
    # if flag is False, at this point the function will implicitly return None

如果您的路径操作使用 response_model 并需要允许返回 None,请在 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 中授权码流的各种风格的修复。 由 @koonpeng 提交的初始 PR #3439
  • ♻ 从文档字符串中提取的描述中去除空的多余空白。 由 @and-semakin 提交的 PR #2821
  • 🐛 修复在 Security() 和其他地方(例如 Depends())使用具有不同 OAuth2 范围的依赖项时的缓存依赖项问题。 由 @laggardkernel 提交的 PR #2945
  • 🎨 更新 response_model 的类型注解,允许像 Union[str, None] 这样的类型。 由 @tiangolo 提交的 PR #5294

翻译

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

0.79.1

修复

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

文档

  • 📝 添加说明,感谢插图作者 Ketrina Thompson。 由 @tiangolo 提交的 PR #5284
  • ✏ 修复 python-types.md 中的拼写错误。 由 @Kludex 提交的 PR #5116
  • ✏ 修复 docs/en/docs/python-types.md 中的拼写错误。 由 @atiabbz 提交的 PR #5007
  • 📝 从异步主题介绍中移除不必要的 Django/Flask 引用。 由 @carltongibson 提交的 PR #5280
  • ✨ 添加并发汉堡和并行汉堡的插图。 由 @tiangolo 提交的 PR #5277。更新后的文档位于:并发和汉堡

翻译

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

内部

0.79.0

修复 - 破坏性变更

  • 🐛 修复从不支持响应体的状态码中移除响应体的问题。 由 @tiangolo 提交的 PR #5145
    • status_code 设置为 204304 或任何低于 200 (1xx) 的代码将从响应中移除响应体。
    • 这修复了 Uvicorn 中否则会抛出的一个错误:RuntimeError: Response content longer than Content-Length
    • 这移除了 fastapi.openapi.constants.STATUS_CODES_WITH_NO_BODY,它被 utils 中的一个函数所取代。

翻译

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

内部

  • 🔧 更新希伯来语翻译通知。 由 @tiangolo 提交的 PR #5158
  • 🔧 更新 Dependabot 提交信息。 由 @tiangolo 提交的 PR #5156
  • ⬆ 将 actions/upload-artifact 从 2 升级到 3。 由 @dependabot[bot] 提交的 PR #5148
  • ⬆ 将 actions/cache 从 2 升级到 3。 由 @dependabot[bot] 提交的 PR #5149
  • 🔧 更新赞助商徽章配置。 由 @tiangolo 提交的 PR #5155
  • 👥 更新 FastAPI People。 由 @tiangolo 提交的 PR #5154
  • 🔧 更新 Jina 赞助商徽章。 由 @tiangolo 提交的 PR #5151
  • ⬆ 将 actions/checkout 从 2 升级到 3。 由 @dependabot[bot] 提交的 PR #5133
  • ⬆ [pre-commit.ci] pre-commit 自动更新。 由 @pre-commit-ci[bot] 提交的 PR #5030
  • ⬆ 将 nwtgck/actions-netlify 从 1.1.5 升级到 1.2.3。 由 @dependabot[bot] 提交的 PR #5132
  • ⬆ 将 codecov/codecov-action 从 2 升级到 3。 由 @dependabot[bot] 提交的 PR #5131
  • ⬆ 将 dawidd6/action-download-artifact 从 2.9.0 升级到 2.21.1。 由 @dependabot[bot] 提交的 PR #5130
  • ⬆ 将 actions/setup-python 从 2 升级到 4。 由 @dependabot[bot] 提交的 PR #5129
  • 👷 添加 Dependabot。 由 @tiangolo 提交的 PR #5128
  • ♻️ 在内部工具中从 Optional[X] 迁移到 Union[X, None]。 由 @tiangolo 提交的 PR #5124
  • 🔧 更新赞助商,移除 Dropbase,添加 Doist。 由 @tiangolo 提交的 PR #5096
  • 🔧 更新赞助商,移除 Classiq,添加 ImgWhale。 由 @tiangolo 提交的 PR #5079

0.78.0

新特性

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

  • Path()

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

新文档位于 教程 - 查询参数和字符串校验 - 设为必需。 由 @tiangolo 提交的 PR #4906

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

例如

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"}

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

但是现在,可以并且支持直接省略默认值,就像处理 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。 由 @tiangolo 提交的 PR #4908
  • 🎨 修复路径操作高级配置教程中设置的默认值。 由 @tiangolo 提交的 PR #4899
  • 📝 添加关于重新定义路径操作的文档。 由 @madkinsz 提交的 PR #4864
  • 📝 更新 Celery 文档的链接。 由 @sammyzord 提交的 PR #4736
  • ✏ 修复嵌套模型主体教程中集合的示例代码。 由 @hitrust 提交的 PR #3030
  • ✏ 修复指向 Pydantic 文档的链接。 由 @kinuax 提交的 PR #4670
  • 📝 更新关于使用更新的源链接自托管 Swagger UI 的文档。 由 @Kastakin 提交的 PR #4813
  • 📝 添加外部文章链接:使用 FastAPI 和 React 构建 Django 教程中的投票应用。 由 @jbrocher 提交的 PR #4778
  • 📝 在带有额外模式扩展的“Body - Fields”文档中添加 OpenAPI 警告。 由 @ml-evs 提交的 PR #4846

翻译

  • 🌐 修复 docs/docs/tutorial/testing.md 日语翻译中的代码示例。 由 @hirotoKirimaru 提交的 PR #4623

内部

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

0.77.1

升级

  • ⬆ 将 Starlette 从 0.19.0 升级到 0.19.1。 由 @Kludex 提交的 PR #4819

文档

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

翻译

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

内部

  • 🔧 为乌兹别克语翻译在 issue 中添加通知。 由 @tiangolo 提交的 PR #4884

0.77.0

升级

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

文档

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

翻译

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

0.76.0

升级

  • ⬆ 将 Starlette 从 0.17.1 升级到 0.18.0。 由 @Kludex 提交的 PR #4483

内部

  • 👥 更新 FastAPI People。 由 @github-actions[bot] 提交的 PR #4847
  • 🔧 添加 Budget Insight 赞助商。 由 @tiangolo 提交的 PR #4824
  • 🍱 更新赞助商,ExoFlare 徽章。 由 @tiangolo 提交的 PR #4822
  • 🔧 更新赞助商,重新启用 Dropbase,更新 TalkPython 链接。 由 @tiangolo 提交的 PR #4821

0.75.2

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

修复

  • ✅ 修复使用新的固定 ValidationError JSON Schema 的新的/最近的测试。 由 @tiangolo 提交的 PR #4806
  • 🐛 修复 ValidationError 在字段 loc 的 JSON Schema。 由 @dconathan 提交的 PR #3810
  • 🐛 修复对 APIRouter WebSockets 中前缀的支持。 由 @Kludex 提交的 PR #2640

升级

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

内部

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

0.75.1

翻译

内部

  • 👥 更新 FastAPI People。 由 @github-actions[bot] 提交的 PR #4752
  • ➖ 为了疏通 Pydantic CI,暂时从依赖中移除 typer-cli 并升级 Black。由 @tiangolo 提交的 PR #4754
  • 🔧 添加配置以通知荷兰语翻译。由 @tiangolo 提交的 PR #4702
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #4699
  • 🐛 修复 FastAPI People 的生成过程,以在提交中包含缺失的文件。由 @tiangolo 提交的 PR #4695
  • 🔧 更新 Classiq 赞助商链接。由 @tiangolo 提交的 PR #4688
  • 🔧 添加赞助商 Classiq。由 @tiangolo 提交的 PR #4671
  • 📝 在文档中添加 Jina 的问答机器人,以帮助想要快速提问的人。由 @tiangolo 基于 @hanxiao 的原始 PR #4626 提交的 PR #4655

0.75.0

特性

0.74.1

特性

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

0.74.0

破坏性变更

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

带有 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

内部

  • 🔧 添加赞助商 Striveworks。由 @tiangolo 提交的 PR #4596
  • 💚 仅在 master 分支上推送时才构建文档,以避免 PR 导致的重复运行。由 @tiangolo 提交的 PR #4564
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #4502

0.73.0

特性

文档

  • 📝 调整和改进“请求文件”的文档。由 @tiangolo 提交的 PR #4470

修复

  • 🐛 修复使用元组(tuples)时阻止使用 OpenAPI 的错误。由 @victorbenichoux 提交的 PR #3874
  • 🐛 在 jsonable_encoder 中,如果指定了自定义编码器,则优先使用自定义编码器而不是默认编码器。由 @viveksunder 提交的 PR #2061
    • 💚 重复的 PR 以触发 CI。由 @tiangolo 提交的 PR #4467

内部

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

0.72.0

特性

文档

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

翻译

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

内部

  • 🔧 启用 MkDocs Material Insiders 的 content.tabs.link 功能。由 @tiangolo 提交的 PR #4399

0.71.0

特性

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

内部

  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #4354
  • 🔧 为 PyPI 添加 FastAPI Trove 分类器,因为现在有一个了 🤷😁。由 @tiangolo 提交的 PR #4386
  • ⬆ 升级 MkDocs Material 和配置。由 @tiangolo 提交的 PR #4385

0.70.1

这个 FastAPI 版本没有什么特别有趣的内容。它主要是为了启用/疏通下一个版本的 Pydantic 的发布,该版本包含了许多功能和改进。🤩

修复

  • 🐛 修复数据类(dataclasses)的 JSON Schema,支持 Pydantic 1.9 中的修复。由 @PrettyWood 提交的 PR #4272

翻译

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

内部

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。由 @tiangolo 提交的 PR #4016

同时升级了可选依赖项的版本范围:

  • "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 兼容。

您可以阅读有关使用 Hypercorn 运行 FastAPI 与 Trio 的文档。

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

特性

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

文档

  • 📝 添加关于使用 Hypercorn 和 Trio 的文档。由 @tiangolo 提交的 PR #4014
  • ✏ 修复部署指南中的拼写错误。由 @ghandic 提交的 PR #3975
  • 📝 当使用带括号的 extras 时,更新 pip install 调用,使用引号以兼容 Zsh。由 @tomwei7 提交的 PR #3131
  • 📝 添加外部链接到文章:使用 FastAPI 和 Heroku 将机器学习模型部署为 API。由 @kaustubhgupta 提交的 PR #3904
  • ✏ 修复 docs/en/docs/contributing.md 中文件路径的拼写错误。由 @NinaHwang 提交的 PR #3752
  • ✏ 修复 docs/en/docs/advanced/path-operation-advanced-configuration.mddocs/en/docs/release-notes.md 中的拼写错误。由 @saintmalik 提交的 PR #3750
  • ✏️ 在安全教程中添加一个缺失的逗号。由 @jalvaradosegura 提交的 PR #3564
  • ✏ 修复 docs/en/docs/help-fastapi.md 中的拼写错误。由 @jaystone776 提交的 PR #3760
  • ✏ 修复 docs/en/docs/tutorial/bigger-applications.md 中文件路径的拼写错误。由 @HolyDorus 提交的 PR #3285
  • ✏ 在 docs/en/docs/tutorial/testing.md 中重新措辞以阐明测试客户端。由 @Bharat123rox 提交的 PR #3382
  • 📝 修复不正确的高亮代码。由 @paxcodes 提交的 PR #3325
  • 📝 添加外部链接到文章:如何将 FastAPI 应用部署到 Heroku。由 @Jarmos-san 提交的 PR #3241
  • ✏ 修复 docs/en/docs/advanced/templates.md 中的拼写错误(错译)。由 @oerpli 提交的 PR #3211
  • 📝 从 docs/en/docs/tutorial/request-files.md 中移除关于(现已支持的)Swagger UI 功能的说明。由 @gsganden 提交的 PR #2803
  • ✏ 修复 docs/tutorial/handling-errors.md 中的拼写错误并重新措辞。由 @graue70 提交的 PR #2700

翻译

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

内部

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

0.68.2

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

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

很快会有一个新的 FastAPI 版本升级 Starlette 以利用最近的改进,但由于这有更高的破坏性变更风险,它将在一个单独的版本中发布。

特性

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

文档

  • 📝 更新 GraphQL 文档,推荐 Strawberry。由 @tiangolo 提交的 PR #3981
  • 📝 重写并扩展部署指南:概念、Uvicorn、Gunicorn、Docker、容器、Kubernetes。由 @tiangolo 提交的 PR #3974
  • 📝 升级 HTTPS 指南,增加更多解释和图表。由 @tiangolo 提交的 PR #3950

翻译

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

内部

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

0.68.1

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

翻译

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

内部

  • ✨ 添加 GitHub Action:通知翻译。由 @tiangolo 提交的 PR #3715
  • ✨ 更新 FastAPI People 和赞助商的计算方式。由 @tiangolo 提交的 PR #3714
  • ✨ 启用最新的 Material for MkDocs Insiders 功能。由 @tiangolo 提交的 PR #3710
  • 🔥 从文档特性的示例中移除/清理额外的导入。由 @tiangolo 提交的 PR #3709
  • ➕ 更新文档库以在 Markdown 中包含源代码。由 @tiangolo 提交的 PR #3648
  • ⬆ 启用对 Python 3.9 的测试。由 @Kludex 提交的 PR #2298
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #3642

0.68.0

特性

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

文档

  • 📝 更新关于异步和响应模型的文档,使用更中性的语言。由 @Edward-Knight 提交的 PR #1869

翻译

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

内部

  • ✅ 将 docs_src 目录添加到测试覆盖范围并更新测试。由 @Kludex 提交的初始 PR #1904
  • 🔧 为新议题添加带有表单的 GitHub 模板。由 @tiangolo 提交的 PR #3612
  • 📝 在文档中添加 FastAPI 官方 Twitter:@fastapi。由 @tiangolo 提交的 PR #3578

0.67.0

特性

文档

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

内部

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

0.66.1

翻译

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

内部

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

0.66.0

特性

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

修复

  • 🐛 修复 jsonable_encoder 中字典的包含/排除功能。由 @Rubikoid 提交的 PR #2016
  • 🐛 在生成的 OpenAPI 输出中支持自定义 OpenAPI / JSON Schema 字段。由 @jmagnusson 提交的 PR #1429

翻译

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

0.65.3

修复

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

翻译

  • 🌐 初始化印度尼西亚语翻译。由 @pace-noge 提交的 PR #3014
  • 🌐 添加教程 - 路径参数的西班牙语翻译。由 @mariacamilagl 提交的 PR #2219
  • 🌐 添加教程 - 第一步的西班牙语翻译。由 @mariacamilagl 提交的 PR #2208
  • 🌐 教程 - 请求体 - 字段的葡萄牙语翻译。由 @ComicShrimp 提交的 PR #3420
  • 🌐 为教程 - 请求 - 表单 - 和 - 文件添加中文翻译。由 @jaystone776 提交的 PR #3249
  • 🌐 为教程 - 处理 - 错误添加中文翻译。由 @jaystone776 提交的 PR #3299
  • 🌐 为教程 - 表单 - 数据添加中文翻译。由 @jaystone776 提交的 PR #3248
  • 🌐 为教程 - 请求体 - 更新添加中文翻译。由 @jaystone776 提交的 PR #3237
  • 🌐 为 FastAPI People 添加中文翻译。由 @hareru 提交的 PR #3112
  • 🌐 为项目生成添加法语翻译。由 @Smlep 提交的 PR #3197
  • 🌐 为 Python 类型介绍添加法语翻译。由 @Smlep 提交的 PR #3185
  • 🌐 为外部链接添加法语翻译。由 @Smlep 提交的 PR #3103
  • 🌐 为替代方案、灵感和比较添加法语翻译。由 @rjNemo 提交的 PR #3020
  • 🌐 修复教程 - Python 类型介绍中中文翻译代码片段不匹配的问题。由 @BoYanZh 提交的 PR #2573
  • 🌐 为开发贡献添加葡萄牙语翻译。由 @Serrones 提交的 PR #1364
  • 🌐 为教程 - 请求 - 文件添加中文翻译。由 @jaystone776 提交的 PR #3244

内部

0.65.2

安全修复

  • 🔒 在假定为 JSON 之前检查 Content-Type 请求头。由 @patrickkwang 提交的初始 PR #2118

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

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

因此,一个内容类型为 text/plain 且包含 JSON 数据的请求会被接受,并且 JSON 数据会被提取。

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

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

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

内部

  • 🔧 更新赞助商徽章,课程包。由 @tiangolo 提交的 PR #3340
  • 🔧 添加新的黄金赞助商 Jina 🎉。由 @tiangolo 提交的 PR #3291
  • 🔧 为 FastAPI 课程包添加新的横幅赞助商徽章。由 @tiangolo 提交的 PR #3288
  • 👷 升级 Issue Manager GitHub Action。由 @tiangolo 提交的 PR #3236

0.65.1

安全修复

0.65.0

破坏性变更 - 升级

  • ⬆️ 将 Starlette 升级到 0.14.2,包括从 Starlette 迁移过来的内部 UJSONResponse。这包括了 Starlette 的几个错误修复和功能。由 @hanneskuettner 提交的 PR #2335

翻译

内部

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

0.64.0

特性

修复

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

文档

  • 📝 添加俄语文章链接 "FastAPI: знакомимся с фреймворком"。由 @trkohler 提交的 PR #2564
  • 📝 添加外部链接到博客文章 "Authenticate Your FastAPI App with Auth0"。由 @dompatmore 提交的 PR #2172
  • 📝 修复文章的损坏链接:使用 FastAPI 和 Streamlit 提供机器学习模型服务。由 @davidefiocco 提交的 PR #2557
  • 📝 添加 FastAPI Medium 文章:将 dockerized FastAPI 应用程序部署到 AWS。由 @vjanz 提交的 PR #2515
  • ✏ 修复教程 - 处理错误中的拼写错误。由 @johnthagen 提交的 PR #2486
  • ✏ 修复安全 OAuth2 范围中的拼写错误。由 @jugmac00 提交的 PR #2407
  • ✏ 修复/阐明 SQL(关系型)数据库文档中的拼写错误。由 @kangni 提交的 PR #2393
  • 📝 添加外部链接到 "FastAPI for Flask Users"。由 @amitness 提交的 PR #2280

翻译

  • 🌐 修复教程 - 查询参数的中文翻译,移除过时内容。由 @louis70109 提交的 PR #3051
  • 🌐 为教程 - 后台任务添加法语翻译。由 @Smlep 提交的 PR #3098
  • 🌐 修复 docs/docs/index.md 的韩语翻译。由 @SueNaEunYang 提交的 PR #3159
  • 🌐 为教程 - 查询参数添加韩语翻译。由 @hard-coders 提交的 PR #2390
  • 🌐 为 FastAPI People 添加法语翻译。由 @JulianMaurin 提交的 PR #2232
  • 🌐 为教程 - 路径参数添加韩语翻译。由 @hard-coders 提交的 PR #2355
  • 🌐 为特性添加法语翻译。由 @Jefidev 提交的 PR #2157
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #3031
  • 🌐 为教程 - 调试添加中文翻译。由 @blt232018 提交的 PR #2737
  • 🌐 为教程 - 安全 - 带密码(和哈希)的 OAuth2,带 JWT 令牌的 Bearer 添加中文翻译。由 @waynerv 提交的 PR #2642
  • 🌐 为教程 - 头参数添加韩语翻译。由 @mode9 提交的 PR #2589
  • 🌐 为教程 - 元数据和文档 URL 添加中文翻译。由 @blt232018 提交的 PR #2559
  • 🌐 为教程 - 第一步添加韩语翻译。由 @hard-coders 提交的 PR #2323
  • 🌐 为教程 - CORS(跨源资源共享)添加中文翻译。由 @blt232018 提交的 PR #2540
  • 🌐 为教程 - 中间件添加中文翻译。由 @lpdswing 提交的 PR #2334
  • 🌐 为教程 - 介绍添加韩语翻译。由 @hard-coders 提交的 PR #2317
  • 🌐 为教程 - 更大的应用 - 多个文件添加中文翻译。由 @waynerv 提交的 PR #2453
  • 🌐 为教程 - 安全 - 安全介绍添加中文翻译。由 @waynerv 提交的 PR #2443
  • 🌐 为教程 - 头参数添加中文翻译。由 @maoyibo 提交的 PR #2412
  • 🌐 为教程 - 额外数据类型添加中文翻译。由 @maoyibo 提交的 PR #2410
  • 🌐 为部署 - Docker 添加日语翻译。由 @tokusumi 提交的 PR #2312
  • 🌐 为部署 - 版本添加日语翻译。由 @tokusumi 提交的 PR #2310
  • 🌐 为教程 - Cookie 参数添加中文翻译。由 @alicrazy1947 提交的 PR #2261
  • 🌐 为教程 - 静态文件添加日语翻译。由 @tokusumi 提交的 PR #2260
  • 🌐 为教程 - 测试添加日语翻译。由 @tokusumi 提交的 PR #2259
  • 🌐 为教程 - 调试添加日语翻译。由 @tokusumi 提交的 PR #2256
  • 🌐 为教程 - 中间件添加日语翻译。由 @tokusumi 提交的 PR #2255
  • 🌐 为并发和 async / await 添加日语翻译。由 @tokusumi 提交的 PR #2058
  • 🌐 为教程 - 安全 - 简单的带密码和 Bearer 的 OAuth2 添加中文翻译。由 @waynerv 提交的 PR #2514
  • 🌐 为部署 - Deta 添加日语翻译。由 @tokusumi 提交的 PR #2314
  • 🌐 为教程 - 安全 - 获取当前用户添加中文翻译。由 @waynerv 提交的 PR #2474
  • 🌐 为部署 - 手动部署添加日语翻译。由 @tokusumi 提交的 PR #2313
  • 🌐 为部署 - 介绍添加日语翻译。由 @tokusumi 提交的 PR #2309
  • 🌐 为 FastAPI People 添加日语翻译。由 @tokusumi 提交的 PR #2254
  • 🌐 为高级用户指南 - 路径操作高级配置添加日语翻译。由 @Attsun1031 提交的 PR #2124
  • 🌐 为外部链接添加日语翻译。由 @tokusumi 提交的 PR #2070
  • 🌐 为教程 - 请求体 - 更新添加日语翻译。由 @SwftAlpc 提交的 PR #1956
  • 🌐 为教程 - 表单数据添加日语翻译。由 @SwftAlpc 提交的 PR #1943
  • 🌐 为教程 - Cookie 参数添加日语翻译。由 @SwftAlpc 提交的 PR #1933

内部

0.63.0

特性

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

破坏性变更

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

修复

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

文档

  • 📝 更新 Uvicorn 安装说明,使用 uvicorn[standard](包含 uvloop)。由 @tiangolo 提交的 PR #2543
  • 📝 更新 Deta 教程的标题。由 @tiangolo 提交的 PR #2466
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #2454

翻译

  • 🌐 添加文档语言选择器小部件。由 @tiangolo 提交的 PR #2542
  • 🌐 为教程 - 响应状态码添加中文翻译。由 @waynerv 提交的 PR #2442
  • 🌐 开始阿尔巴尼亚语的文档翻译。由 @vjanz 提交的 PR #2516
  • 🌐 为教程 - 额外模型添加中文翻译。由 @waynerv 提交的 PR #2416
  • 🌐 为教程 - 响应模型添加中文翻译。由 @waynerv 提交的 PR #2414
  • 🌐 为教程 - Schema 额外示例添加中文翻译。由 @maoyibo 提交的 PR #2411
  • 🌐 为索引添加韩语翻译。由 @hard-coders 提交的 PR #2192
  • 🌐 为高级用户指南 - 附加状态码添加日语翻译。由 @Attsun1031 提交的 PR #2145

内部

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

0.62.0

特性

  • ✨ 添加对共享/顶级参数(依赖项、标签等)的支持。由 @tiangolo 提交的 PR #2434

到目前为止,对于几个选项,将它们应用于一组路径操作的唯一方法是在 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 schema 中排除。
  • 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 schema 中排除。
  • 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 schema 中显示。
  • callbacks:适用于此路由器中所有路径操作的 OpenAPI 回调。

注意:所有以前的参数仍然存在,因此仍然可以在 include_router 中声明 dependencies

破坏性变更

  • PR #2434 包括了几个改进,这些改进不应影响正常使用情况,但可能在高级场景中产生影响:
    • 如果你在测试生成的 OpenAPI(尽管 FastAPI 已经为你做了大量测试,所以你本不该这么做):为了保持一致性,include_router路径操作tags 的顺序已更新,但这只是一个简单的顺序更改。
    • 如果你有高级的自定义逻辑来访问每个路由的 route.response_classrouter.default_response_classapp.default_response_class:现在 APIRoute 中的 response_class 以及 APIRouterFastAPI 中的 default_response_class 的默认值是一个内部使用的 DefaultPlaceholder,用于处理和解析默认值及覆盖。DefaultPlaceholder 内部的实际响应类可通过 route.response_class.value 获取。

文档

翻译

  • 🌐 为“高级 - 自定义响应”添加日语翻译。由 @Attsun1031 提交的 PR #2193
  • 🌐 为“基准测试”添加中文翻译。由 @spaceack 提交的 PR #2119
  • 🌐 为“教程 - 请求体 - 嵌套模型”添加中文翻译。由 @waynerv 提交的 PR #1609
  • 🌐 为“高级 - 自定义响应”添加中文翻译。由 @RunningIkkyu 提交的 PR #1459
  • 🌐 为“高级 - 直接返回响应”添加中文翻译。由 @RunningIkkyu 提交的 PR #1452
  • 🌐 为“高级 - 额外的状态码”添加中文翻译。由 @RunningIkkyu 提交的 PR #1451
  • 🌐 为“高级 - 路径操作高级配置”添加中文翻译。由 @RunningIkkyu 提交的 PR #1447
  • 🌐 为“高级用户指南 - 简介”添加中文翻译。由 @RunningIkkyu 提交的 PR #1445

内部

  • 🔧 更新赞助商区域中 TestDriven 课程的链接。由 @tiangolo 提交的 PR #2435
  • 🍱 更新赞助商徽标。由 @tiangolo 提交的 PR #2418
  • 💚 修复在 fork 中禁用 Material for MkDocs Insiders 安装的问题,第一次尝试 ⚾。由 @tiangolo 提交的 PR #2340
  • 🐛 修复在 fork 中禁用 Material for MkDocs Insiders 安装的问题。由 @tiangolo 提交的 PR #2339
  • ✨ 添加白银赞助商 WeTransfer。由 @tiangolo 提交的 PR #2338
  • ✨ 为文档设置并启用 Material for MkDocs Insiders。由 @tiangolo 提交的 PR #2325

0.61.2

修复

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

文档

  • ✏️ 修复教程 - 路径参数中的拼写错误。由 @mariacamilagl 提交的 PR #2231
  • ✏ 修复文档中的一处样式错误。由 @ddobrinskiy 提交的 PR #2206
  • ✏ 修复文档中的大小写拼写错误。由 @imba-tjd 提交的 PR #2204
  • ✏ 修复文档中的拼写错误。由 @ammarasmro 提交的 PR #2179
  • 📝 更新/修复文档中的链接以使用 HTTPS。由 @imba-tjd 提交的 PR #2165
  • ✏ 修复文档中的拼写错误并调整措辞。由 @nukopy 提交的 PR #2159
  • 📝 修复教程 - 用户指南 - 路径参数中示例代码的一致性。由 @nukopy 提交的 PR #2158
  • 📝 修复重命名的参数 content_type 的拼写错误。由 @TeoZosa 提交的 PR #2135
  • ✏ 修复文档中的小拼写错误。由 @TeoZosa 提交的 PR #2122
  • ✏ 修复文档和源示例中的拼写错误。由 @AdrianDeAnda 提交的 PR #2102
  • ✏ 修复文档中不正确的 Celery URL。由 @CircleOnCircles 提交的 PR #2100
  • 📝 简化 Python 类型介绍,所有当前支持的 Python 版本都包含类型提示 🎉。由 @ninjaaron 提交的 PR #2085
  • 📝 修复教程 - 请求体 - 嵌套模型 3 中使用集合的示例代码。由 @hitrust 提交的 PR #2054
  • 📝 修复教程 - 请求体 - 嵌套模型 2 中使用集合的示例代码。由 @hitrust 提交的 PR #2053
  • 📝 修复教程 - 请求体 - 嵌套模型中使用集合的示例代码。由 @hitrust 提交的 PR #2052
  • ✏ 修复基准测试中的拼写错误。由 @AlejoAsd 提交的 PR #1995
  • 📝 在 CORS 教程中添加关于 allow_origins 使用 `["*"]` 和 `allow_credentials` 的说明。由 @dsmurrell 提交的 PR #1895
  • 📝 添加到 Deta 的部署,这是第一个黄金赞助商 🎉。由 @tiangolo 提交的 PR #2303
  • 👥 更新 FastAPI People。由 @github-actions[bot] 提交的 PR #2282
  • ✏️ 修复教程 - 查询参数中的大写错误。由 @mariacamilagl 提交的 PR #2245
  • 📝 将文章添加到外部链接。由 @tiangolo 提交的 PR #2247
  • ✏ 修复西班牙语教程索引中的拼写错误。由 @aviloncho 提交的 PR #2020

翻译

  • 🌐 为“高级教程 - 直接返回响应”添加日语翻译。由 @Attsun1031 提交的 PR #2191
  • 📝 为“教程 - 安全 - 第一步”添加日语翻译。由 @komtaki 提交的 PR #2153
  • 🌐 为“教程 - 查询参数和字符串校验”添加日语翻译。由 @SwftAlpc 提交的 PR #1901
  • 🌐 为“外部链接”添加葡萄牙语翻译。由 @Serrones 提交的 PR #1443
  • 🌐 为“教程 - CORS”添加日语翻译。由 @tokusumi 提交的 PR #2125
  • 🌐 为“贡献”添加日语翻译。由 @komtaki 提交的 PR #2067
  • 🌐 为“项目生成”添加日语翻译。由 @tokusumi 提交的 PR #2050
  • 🌐 为“替代方案”添加日语翻译。由 @Attsun1031 提交的 PR #2043
  • 🌐 为“历史、设计和未来”添加日语翻译。由 @komtaki 提交的 PR #2002
  • 🌐 为“基准测试”添加日语翻译。由 @komtaki 提交的 PR #1992
  • 🌐 为“教程 - 请求头参数”添加日语翻译。由 @SwftAlpc 提交的 PR #1935
  • 🌐 为“教程 - 第一步”添加葡萄牙语翻译。由 @jessicapaz 提交的 PR #1861
  • 🌐 为“Python 类型”添加葡萄牙语翻译。由 @izaguerreiro 提交的 PR #1796
  • 🌐 为“帮助 FastAPI”添加日语翻译。由 @tokusumi 提交的 PR #1692
  • 🌐 为“教程 - 请求体”添加日语翻译。由 @tokusumi 提交的 PR #1683
  • 🌐 为“教程 - 查询参数”添加日语翻译。由 @tokusumi 提交的 PR #1674
  • 🌐 为 tutorial/path-params.md 添加日语翻译。由 @tokusumi 提交的 PR #1671
  • 🌐 为 tutorial/first-steps.md 添加日语翻译。由 @tokusumi 提交的 PR #1658
  • 🌐 为 tutorial/index.md 添加日语翻译。由 @tokusumi 提交的 PR #1656
  • 🌐 为“项目生成”添加葡萄牙语翻译。由 @Serrones 提交的 PR #1602
  • 🌐 为“特性”添加日语翻译。由 @tokusumi 提交的 PR #1625
  • 🌐 初始化韩语翻译。由 @hard-coders 提交的 PR #2018
  • 🌐 为“部署”添加葡萄牙语翻译。由 @Serrones 提交的 PR #1374

内部

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

0.61.1

修复

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

文档

翻译

内部

  • 通过将 hl_lines 语法更新为使用范围来提高文档的可维护性。由 @la-mar 提交的 PR #1863

0.61.0

特性

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

破坏性变更

  • 要求 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 代码检查。原始 PR 由 @MashhadiNima 提交的 #1774
  • 禁用 Gitter 机器人,因为它当前已损坏,且 Gitter 的响应未显示问题所在。PR #1853

0.60.2

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

0.60.1

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

0.60.0

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

0.59.0

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

0.58.1

0.58.0

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

0.57.0

0.56.1

0.56.0

0.55.1

0.55.0

0.54.2

0.54.1

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

0.54.0

0.53.2

0.53.1

0.53.0

0.52.0

0.51.0

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

0.50.0

  • 从关于部署时固定版本的文档中添加发布说明的链接。PR #1058
  • 将代码升级至最新版本的 Starlette,包括
    • 多个错误修复。
    • 可选的斜杠重定向,无论结尾是否有 /
    • 路由器的事件,"startup""shutdown"
    • PR #1057
  • 添加关于部署时固定 FastAPI 版本的文档:部署:FastAPI 版本。PR #1056

0.49.2

  • 修复发布说明中的链接。由 @sattosan 提交的 PR #1052
  • 修复发布说明中的拼写错误。由 @sattosan 提交的 PR #1051
  • 重构/阐明 serialize_response 参数名以避免混淆。由 @patrickmckenna 提交的 PR #1031
  • 重构在独立函数中调用每个路径操作的处理函数,以简化性能分析。由 @sm-Fifteen 提交的 PR #1027
  • 为测试添加缺失的依赖。由 @sm-Fifteen 提交的 PR #1026
  • 修复对响应模型有效类型的接受,包括像 List[int] 这样的 Python 类型。由 @patrickmckenna 提交的 PR #1017
  • 修复 SQL 教程中的格式。由 @vegarsti 提交的 PR #1015

0.49.1

  • 修复在依赖项和路径操作函数中使用时路径操作参数重复的问题。由 @merowinger92 提交的 PR #994
  • 更新 Netlify 预览部署的 GitHub action,因为修复已合并并且有了新版本。PR #1047
  • 将 mypy 配置移至配置文件。由 @hukkinj1 提交的 PR #987
  • 临时修复来自 fork 的 PR 无法部署 Netlify 预览的问题。由 @mariacamilagl 提交的 PR #1046

0.49.0

0.48.0

0.47.1

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

0.47.0

0.46.0

  • 修复拼写错误并调整配置。PR #837
  • 外部链接中添加了一篇中文文章的链接。由 @wxq0309 提交的 PR 810
  • 实现了 OAuth2AuthorizationCodeBearer 类。由 @kuwv 提交的 PR #797
  • 更新了文档主页中的示例升级。由 @cdeil 提交的 PR #795
  • 修复了子路由器的回调处理。由 @jekirl 提交的 PR #792
  • 修复拼写错误。由 @kkinder 提交的 PR #784
  • 外部链接添加了 4 篇日文文章。由 @HymanZHAN 提交的 PR #783
  • jsonable_encoder 中添加了对主类型子类型的支持,例如 asyncpg 的 UUID。由 @RmStorm 提交的 PR #756
  • 修复了文档中 Pydantic 的 HttpUrl 的用法。由 @Dustyposa 提交的 PR #832
  • 修复了文档中的 Twitter 链接。由 @justindujardin 提交的 PR #813
  • 添加了关于如何正确将 FastAPI 与 Peewee ORM 结合使用的文档。包括如何覆写 Peewee 的部分以正确处理异步线程。PR #789

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 类型的错误序列化。由 @dmontagu 提交的 PR #748

0.44.0

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

0.43.0

0.42.0

  • 添加带有 yield 的依赖项,也称为退出步骤、上下文管理器、清理、拆卸等。
    • 这允许在依赖项完成后添加额外的代码。例如,可以用来关闭数据库连接。
    • 带有 yield 的依赖项可以是普通的或 async 的,FastAPI 将在线程池中运行普通依赖项。
    • 它们可以与普通依赖项结合使用。
    • 可以有任意层级/级别的带有 yield 的依赖项,并且退出步骤会自动以正确的顺序处理。
    • 它在 Python 3.7 及以上版本中默认工作。对于 Python 3.6,它需要额外的向后移植依赖项
      • async-exit-stack
      • async-generator
    • 新文档位于 带有 yield 的依赖项
    • 更新了数据库文档 SQL(关系型)数据库:主 FastAPI 应用
    • PR #595
  • 修复网站中的 sitemap.xml。由 @samuelcolvin 提交的 PR #598

0.41.0

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

0.40.0

0.39.0

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

0.38.1

  • 修复不正确的 Request 类导入。由 @kamalgill 提交的 PR #493

0.38.0

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

0.37.0

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

0.36.0

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

0.35.0

  • 修复路由 assert 中的拼写错误。由 @pablogamboa 提交的 PR #419
  • 修复文档中的拼写错误。由 @bronsen 提交的 PR #411
  • 修复解析使用 Union 声明的 body 类型。由 @koxudaxi 提交的 PR #400

0.34.0

  • 将 Starlette 支持的范围升级到最新的 0.12.7。新的范围是 0.11.1,<=0.12.7。由 @dedsm 提交的 PR #367

  • #333 中由 @dmontagu 提交的包含重复模型的 OpenAPI schema 添加测试。PR #385

0.33.0

  • 将 Pydantic 版本升级到 0.30.0。由 @jekirl 提交的 PR #384

0.32.0

  • 修复功能文档中的拼写错误。由 @MartinoMensio 提交的 PR #380

  • 修复 查询参数 中示例的源代码 limit。由 @Smashman 提交的 PR #366

  • 更新关于 OAuth2 范围 的文档措辞。由 @cjw296 提交的 PR #371

  • 更新 Enum 的文档,使其继承自 str 并改善 Swagger UI 的渲染。PR #351

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

  • .include_routerprefix 中为路径模板添加测试。PR #349

  • 在文档中添加说明:使用不同的 prefix 多次包含同一个路由器。PR #348

  • 修复为两个同名函数(在不同模块中)和相同的复合 body 生成 OpenAPI/JSON Schema 的问题。

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

0.31.0

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

0.30.1

0.30.0

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

    • 更新了关于使用 SQLAlchemy 的 SQL 文档,使用带有 ORM 模式的 Pydantic 模型、带有关系的 SQLAlchemy 模型、文件分离、代码简化和其他更改。新文档:SQL(关系型)数据库
    • 新的 ORM 模式支持修复了与具有延迟加载、混合属性、动态/getters(使用 @property 装饰器)的 ORM 相关的问题/添加了新功能,以及其他一些用例。
    • 这适用于 SQLAlchemy、Peewee、Tortoise ORM、GINO ORM 等几乎所有 ORM。
    • 如果您的*路径操作*返回一个带属性的任意对象(例如 my_item.name 而不是 my_item["name"])并且您使用了 response_model,请确保按照上述文档链接中的说明,将 Pydantic 模型的 orm_mode 设置为 True
    • 关于接收纯 dict 作为请求体的新文档:任意 dict 的请求体
    • 关于在响应中返回任意 dict 的新文档:带有任意 dict 的响应
    • 技术细节:
      • 当声明 response_model 时,它会直接用于从*路径操作函数*返回的内容生成响应内容。
      • 在此之前,返回内容首先会通过 jsonable_encoder 以确保它是一个“可 JSON 化的”对象,比如一个 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 代码。由 @dmontagu 提交的 PR #314

  • 为额外响应使用默认响应状态码的描述。由 @duxiaoyao 提交的 PR #313

  • 将 Pydantic 支持升级到 0.28。由 @jekirl 提交的 PR #320

0.29.1

0.29.0

  • 添加对声明 Response 参数的支持
    • 这允许声明
    • 所有这些都可以在仍然能够返回任意对象(dict、数据库模型等)的情况下实现。
    • 更新对 Hug 的致谢,感谢其启发了 response 参数模式。
    • PR #294

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 的处理。如果 auto_error=False,当存在不正确的 Authorization 标头时不 raise。PR #282

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

0.27.0

  • 修复关于带范围的 OAuth 2.0 文档中的断开链接。由 @dmontagu 提交的 PR #275

  • 使用 Pydantic Field 重构参数提取

0.26.0

0.25.0

  • 添加对 Pydantic 的 includeexcludeby_alias 的支持。

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

  • 添加对 Pydantic 的 skip_defaults 的支持

0.24.0

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

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

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

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 进行委托认证。
    • @steinitzu 提交的 PR #198
  • 将 Swagger UI 和 ReDoc 路由处理器(*路径操作*)设为 async 函数而不是 lambda,以提高性能。由 @Trim21 提交的 PR #241

  • 使 Swagger UI 和 ReDoc URL 参数化,允许托管和提供它们的本地版本,并拥有离线文档。由 @euri10 提交的 PR #112

0.22.0

  • 添加对 dependencies 参数的支持

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

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

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

  • 为 Python 3.7 重新启用 black 格式化检查。由 @zamiramir 提交的 PR #229

0.21.0

  • 在 body 解析错误时,从前一个异常 raise,以允许在日志记录代码中进行更好的内省。由 @ricardomomm 提交的 PR #192

  • 使用名为 "fastapi" 的 Python logger 而不是根 logger。由 @euri10 提交的 PR #222

  • 将 Pydantic 升级到版本 0.25。由 @euri10 提交的 PR #225

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

0.20.1

  • 向包中添加类型信息,包括文件 py.typed。由 @meadsteve 提交的 PR #209

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

0.20.0

  • 升级 OAuth2

    • 升级使用 Bearer 令牌的密码流,以使用正确的 HTTP 状态码 401 UNAUTHORIZED,并带有 WWW-Authenticate 标头。
    • 更新、简化和改进所有安全文档
    • SecurityScopes 添加新的 scope_str 并更新文档:OAuth2 范围
    • 更新文档、图片、测试。
    • PR #188
  • 在文档中将 Hypercorn 作为备选 ASGI 服务器。PR #187

  • 添加静态文件模板的文档。PR #186

  • 添加处理响应 Cookie响应标头的文档。PR #185

  • 修复文档中的拼写错误。由 @chdsbd 提交的 PR #176

0.19.0

0.18.0

  • 添加HTTP 基本认证的文档。PR #177

  • 升级 HTTP 基本认证处理,带有自动标头(自动浏览器登录提示)。PR #175

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

  • 添加中间件的文档。PR #173

0.17.0

0.16.0

  • 升级*路径操作*的 docstring 解析以支持正确的 Markdown 描述。新文档位于 路径操作配置。PR #163

  • 重构 Pydantic 的内部使用,以使用正确的数据类型。PR #164

  • 将 Pydantic 升级到版本 0.23。由 @euri10 提交的 PR #160

  • 修复关于额外模型的教程中的拼写错误。由 @danielmichaels 提交的 PR #159

  • 修复文档中查询参数的 URL 示例。由 @hayata-yamamoto 提交的 PR #157

0.15.0

0.14.0

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

  • 添加文档:测试 FastAPI。PR #151

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

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

  • 备选方案、灵感和比较中包括 Falcon 和 Hug。

0.13.0

  • 改进/升级使用 SecurityScopes 的 OAuth2 范围支持
    • SecurityScopes 可以像 Request 一样声明为一个参数,以获取所有超级依赖项/依赖项的范围。
    • 改进 Security 处理,在声明 SecurityScopes 时合并范围。
    • 允许将 SecurityBase(如 OAuth2)类与 Depends 一起使用,并仍然记录它们。Security 现在仅用于声明 scopes
    • 更新了关于:使用密码(和哈希)的 OAuth2,带 JWT 令牌的 Bearer 的文档。
    • 关于:OAuth2 范围的新文档。
    • PR #141

0.12.1

  • 错误修复:处理 APIRouter.include_router() 中的额外 responses。PR #140

  • 修复 SQL 教程中的拼写错误。由 @mostaphaRoudsari 提交的 PR #138

  • 修复关于嵌套模型和带 JWT 的 OAuth2 部分中的拼写错误。由 @mmcloud 提交的 PR #127

0.12.0

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

0.11.0

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

  • 更新SQL 教程,即使有异常也关闭数据库会话。由 @alexiri 提交的 PR #89

  • 修复 pyproject.toml 中的重复依赖项。由 @zxalif 提交的 PR #128

0.10.3

0.10.2

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

  • 更新后台任务,添加关于 Celery 的说明。

  • 记录使用 union 和 list 的响应模型,更新于:额外模型。PR #108

0.10.1

0.10.0

0.9.1

0.9.0

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

  • 添加文档:应用配置

  • 修复文档中的拼写错误。由 @matthewhegarty 提交的 PR #76

  • 修复“部署”到“大型应用”的链接。

0.8.0

  • 使开发脚本可执行。由 @euri10 提交的 PR #76

  • 添加在 app.include_router() 中添加 tags 的支持。由 @euri10 提交的 PR #55。文档已在大型应用部分更新。

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

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

0.7.1

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

  • 修复带有 Config 但没有 json_encoders 的 Pydantic 模型的 jsonable_encoder#29

0.2.0

  • 修复安全部分的拼写错误:#24@kkinder 提交。

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

0.1.19

  • 将 Starlette 版本升级到当前最新的 0.10.1#17@euri10 提交。