跳到内容

发布说明

最新变更

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
  • 📝 阐明关于不带 await 使用 async def 的指导。PR #13642 by @swastikpradhan1999
  • 📝 更新 exclude-parameters-from-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

升级

翻译

0.115.9

修复

  • 🐛 确保 HTTPDigest 仅在 auto_errorTrue 时才引发异常。PR #2939 by @arthurio

重构

文档

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

翻译

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

内部

0.115.8

修复

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

重构

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

文档

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

翻译

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

内部

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

0.115.7

升级

重构

文档

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

翻译

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

内部

0.115.6

修复

  • 🐛 当同步依赖项中的 yield 发生异常时,保留堆栈跟踪。PR #5823 by @sombek

重构

  • ♻️ 更新内部检查以支持 Pydantic 2.10。PR #12971 by @tamird

文档

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

翻译

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

内部

0.115.5

重构

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

文档

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

翻译

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

内部

0.115.4

重构

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

文档

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

翻译

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

内部

0.115.3

升级

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

文档

翻译

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

修复

  • 🐛 修复带 alias 的 openapi 生成中的响应 kwarg。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 中 mdx_include Markdown 扩展的 base_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

阅读新文档:查询参数模型

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

功能

  • ✨ 添加对使用 QueryCookieHeader 参数的 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 模型中声明的字段,并禁止请求中发送的任何额外字段,使用 Pydantic 的 model_config = {"extra": "forbid"}

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
  • ♻️ 重构并简化 solve_dependencies() 的内部数据,使用数据类。PR #12100 by @tiangolo
  • ♻️ 重构并简化内部 analyze_param(),使用数据类而非元组来组织数据。PR #12099 by @tiangolo
  • ♻️ 重构并简化依赖项数据结构,使用数据类。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
  • 🔥 从 Advanced Middleware 文档中移除 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
  • 📝 更新 docs/en/docs/tutorial/body.md,添加 Python 3.10 联合类型示例。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 人员,不翻译以获得最新信息。PR #12034 by @tiangolo
  • 🌐 更新 docs/docs/benchmarks.md 的乌尔都语翻译。PR #10046 by @AhsanSheraz

内部

0.112.1

升级

  • ➖ 从默认依赖项中移除 orjsonujson。PR #11842 by @tiangolo

当你使用 pip install "fastapi[all]" 安装时,这些依赖项仍然会被安装。但它们不包含在 pip install fastapi 中。

📝 更新所有文档中的 Hypercorn 链接。PR #11744 by @kittydoor

  • 📝 更新文档,将 Ariadne 引用从 Starlette 改为 FastAPI。PR #11797 by @DamianCzajkowski
  • 📝 更新 fastapi instrumentation 外部链接。PR #11317 by @softwarebloat
  • ✏️ 修复文档中 alembic 示例仓库的链接。PR #11628 by @augiwan
  • ✏️ 更新 docs/en/docs/fastapi-cli.md。PR #11715 by @alejsdev
  • 📝 更新外部链接。PR #11500 by @devon2018
  • 📝 添加外部链接:FastAPI 教程,Python 中最好的框架?PR #11618 by @EduardoZepeda
  • 📝 修复 docs/en/docs/tutorial/body-multiple-params.md 中的错别字。PR #11698 by @mwb-u
  • 📝 添加外部链接:使用 Neon Postgres 和 AWS App Runner 部署无服务器 FastAPI 应用,可伸缩。PR #11633 by @ananis25
  • 📝 更新 security/first-steps.md。PR #11674 by @alejsdev
  • 📝 更新 security/first-steps.md。PR #11673 by @alejsdev

📝 更新 path-params-numeric-validations.md 中的注释。PR #11672 by @alejsdev

  • 📝 调整关于 AnnotatedQuery() 参数的介绍性文档。PR #11664 by @tiangolo
  • 🔧 将变更日志 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
  • 👷 添加标签检查器 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
  • 📝 更新文档中缺失的提示。PR #11998 by @tiangolo
  • 🔨 更新 docs.py 脚本,以有条件地启用脏重新加载。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
  • 👷 更新文档预览以处理无文档更改的情况。PR #11975 by @tiangolo
  • 🔨 重构脚本 deploy_docs_status.py 以考虑带或不带斜杠的部署 URL。PR #11965 by @tiangolo
  • 🔒️ 更新部署文档 action 的权限。PR #11964 by @tiangolo
  • 👷🏻 将部署文档状态和预览链接添加到 PR。PR #11961 by @tiangolo
  • 🔧 使用最新配置和插件更新文档设置。PR #11953 by @tiangolo
  • 🔇 忽略 Trio 中 attrs 的警告。PR #11949 by @tiangolo

0.112.0

破坏性变更

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

总结

安装方式:

pip install "fastapi[standard]"

其他变更

  • 这增加了对以下方式调用 CLI 的支持:
python -m fastapi
  • 并升级 fastapi-cli[standard] >=0.0.5

技术细节

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

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

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

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

此更改是因为默认安装标准可选依赖项对一些用户来说不方便,而改为安装 fastapi-slim 也不是一个可行的解决方案。

在此处讨论:#11522 和此处:#11525

文档

翻译

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

内部

  • 🔧 更新赞助商:添加 liblab。PR #11934 by @tiangolo
  • 👷 更新 GitHub Action label-approved 权限。PR #11933 by @tiangolo
  • 👷 重构 GitHub Action 以评论文档部署 URL 并更新令牌。PR #11925 by @tiangolo
  • 👷 更新 GitHub Actions 的令牌。PR #11924 by @tiangolo
  • 👷 更新令牌权限以在文档中评论部署 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 仪表外部链接。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 添加配置和设置,包括可选的附加项 fastapi-slim[standard],以及默认包含相同 standard 附加项的 fastapi。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
  • 🌐 为 cookie-params 添加西班牙语翻译 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.mdresources/index.mdhelp/index.mdabout/index.md 添加葡萄牙语翻译。PR #10807 by @nazarepiedady
  • 🌐 更新部署文档的俄语翻译。PR #11271 by @Lufa1u
  • 🌐 添加 docs/docs/python-types.md 的孟加拉语翻译。PR #11376 by @imtiaz101325
  • 🌐 添加 docs/docs/tutorial/security/simple-oauth2.md 的韩语翻译。PR #5744 by @KdHyeon0661
  • 🌐 添加 docs/docs/help-fastapi.md 的韩语翻译。PR #4139 by @kty4119
  • 🌐 添加 docs/docs/advanced/events.md 的韩语翻译。PR #5087 by @pers0n4
  • 🌐 添加 docs/docs/tutorial/path-operation-configuration.md 的日语翻译。PR #1954 by @SwftAlpc
  • 🌐 添加 docs/docs/tutorial/request-forms-and-files.md 的日语翻译。PR #1946 by @SwftAlpc
  • 🌐 添加 docs/docs/tutorial/dependencies/dependencies-with-yield.md 的俄语翻译。PR #10532 by @AlertRED
  • 🌐 添加 docs/docs/tutorial/debugging.md 的韩语翻译。PR #5695 by @JungWooGeon

内部

0.110.1

修复

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

重构

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

升级

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

文档

  • 📝 调整文档和翻译链接,并移除旧的文档翻译。PR #11381 by @tiangolo
  • ✏️ 修复 fastapi/security/oauth2.py 中的拼写错误。PR #11368 by @shandongbinzhou
  • 📝 更新 Pydantic 文档链接,指向新网站。PR #11328 by @alejsdev
  • ✏️ 修复 docs/en/docs/tutorial/extra-models.md 中的拼写错误。PR #11329 by @alejsdev
  • 📝 更新 project-generation.md。PR #11326 by @alejsdev
  • 📝 更新外部链接。PR #11327 by @alejsdev
  • 🔥 移除指向 Pydantic 基准测试的链接,以及其他国际化页面上的链接。PR #11224 by @hirotoKirimaru
  • ✏️ 修复文档字符串中的拼写错误。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@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/extending-openapi.md 添加中文翻译。PR #3823@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/testing-dependencies.md 添加中文翻译。PR #3819@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/custom-request-and-route.md 添加中文翻译。PR #3816@jaystone776 提交。
  • 🌐 为 docs/docs/external-links.md 添加中文翻译。PR #3833@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/templates.md 添加中文翻译。PR #3812@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/sub-applications.md 添加中文翻译。PR #3811@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/async-sql-databases.md 添加中文翻译。PR #3805@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/middleware.md 添加中文翻译。PR #3804@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/dataclasses.md 添加中文翻译。PR #3803@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/using-request-directly.md 添加中文翻译。PR #3802@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/security/http-basic-auth.md 添加中文翻译。PR #3801@jaystone776 提交。
  • 🌐 为 docs/docs/advanced/security/oauth2-scopes.md 添加中文翻译。PR #3800@jaystone776 提交。
  • 🌐 更新 docs/docs/tutorial/cookie-params.md 的中文翻译。PR #3486@jaystone776 提交。
  • 🌐 更新 docs/docs/tutorial/header-params.md 的中文翻译。PR #3487@jaystone776 提交。
  • 🌐 更新 docs/tutorial/response-status-code.md 的中文翻译。PR #3498@jaystone776 提交。
  • 🌐 为 docs/docs/tutorial/security/first-steps.md 添加德语翻译。PR #10432@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/events.md 添加德语翻译。PR #10693@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/cloud.md 添加德语翻译。PR #10746@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/behind-a-proxy.md 添加德语翻译。PR #10675@nilslindemann 提交。
  • 🌐 为 docs/docs/help-fastapi.md 添加德语翻译。PR #10455@nilslindemann 提交。
  • 🌐 更新 docs/docs/python-types.md 的德语翻译。PR #10287@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/path-params.md 添加德语翻译。PR #10290@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/handling-errors.md 添加德语翻译。PR #10379@nilslindemann 提交。
  • 🌐 更新 docs/docs/index.md 的德语翻译。PR #10283@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/security/http-basic-auth.md 添加德语翻译。PR #10651@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/bigger-applications.md 添加德语翻译。PR #10554@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/path-operation-advanced-configuration.md 添加德语翻译。PR #10612@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/static-files.md 添加德语翻译。PR #10584@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/security/oauth2-jwt.md 添加德语翻译。PR #10522@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/response-model.md 添加德语翻译。PR #10345@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/extra-models.md 添加德语翻译。PR #10351@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/body-updates.md 添加德语翻译。PR #10396@nilslindemann 提交。
  • 🌐 为 docs/docs/alternatives.md 添加德语翻译。PR #10855@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/templates.md 添加德语翻译。PR #10678@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/security/oauth2-scopes.md 添加德语翻译。PR #10643@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/async-tests.md 添加德语翻译。PR #10708@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/metadata.md 添加德语翻译。PR #10581@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/testing.md 添加德语翻译。PR #10586@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/schema-extra-example.md 添加德语翻译。PR #10597@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/index.md 添加德语翻译。PR #10611@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/response-directly.md 添加德语翻译。PR #10618@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/additional-responses.md 添加德语翻译。PR #10626@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/response-cookies.md 添加德语翻译。PR #10627@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/response-headers.md 添加德语翻译。PR #10628@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/response-change-status-code.md 添加德语翻译。PR #10632@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/advanced-dependencies.md 添加德语翻译。PR #10633@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/security/index.md 添加德语翻译。PR #10635@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/using-request-directly.md 添加德语翻译。PR #10653@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/dataclasses.md 添加德语翻译。PR #10667@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/middleware.md 添加德语翻译。PR #10668@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/sub-applications.md 添加德语翻译。PR #10671@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/websockets.md 添加德语翻译。PR #10687@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/testing-websockets.md 添加德语翻译。PR #10703@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/testing-events.md 添加德语翻译。PR #10704@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/testing-dependencies.md 添加德语翻译。PR #10706@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/openapi-callbacks.md 添加德语翻译。PR #10710@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/settings.md 添加德语翻译。PR #10709@nilslindemann 提交。
  • 🌐 为 docs/docs/advanced/wsgi.md 添加德语翻译。PR #10713@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/index.md 添加德语翻译。PR #10733@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/https.md 添加德语翻译。PR #10737@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/manually.md 添加德语翻译。PR #10738@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/concepts.md 添加德语翻译。PR #10744@nilslindemann 提交。
  • 🌐 更新 docs/docs/features.md 的德语翻译。PR #10284@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/server-workers.md 添加德语翻译。PR #10747@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/docker.md 添加德语翻译。PR #10759@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/index.md 添加德语翻译。PR #10769@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/general.md 添加德语翻译。PR #10770@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/graphql.md 添加德语翻译。PR #10788@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/custom-request-and-route.md 添加德语翻译。PR #10789@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/conditional-openapi.md 添加德语翻译。PR #10790@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/separate-openapi-schemas.md 添加德语翻译。PR #10796@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/configure-swagger-ui.md 添加德语翻译。PR #10804@nilslindemann 提交。
  • 🌐 为 docs/docs/how-to/custom-docs-ui-assets.md 添加德语翻译。PR #10803@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/parameters.md 添加德语翻译。PR #10814@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/status.md 添加德语翻译。PR #10815@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/uploadfile.md 添加德语翻译。PR #10816@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/exceptions.md 添加德语翻译。PR #10817@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/dependencies.md 添加德语翻译。PR #10818@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/apirouter.md 添加德语翻译。PR #10819@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/websockets.md 添加德语翻译。PR #10822@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/httpconnection.md 添加德语翻译。PR #10823@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/response.md 添加德语翻译。PR #10824@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/middleware.md 添加德语翻译。PR #10837@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/openapi/*.md 添加德语翻译。PR #10838@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/security/index.md 添加德语翻译。PR #10839@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/staticfiles.md 添加德语翻译。PR #10841@nilslindemann 提交。
  • 🌐 为 docs/docs/reference/testclient.md 添加德语翻译。PR #10843@nilslindemann 提交。
  • 🌐 为 docs/docs/project-generation.md 添加德语翻译。PR #10851@nilslindemann 提交。
  • 🌐 为 docs/docs/history-design-future.md 添加德语翻译。PR #10865@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-with-yield.md 添加德语翻译。PR #10422@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/global-dependencies.md 添加德语翻译。PR #10420@nilslindemann 提交。
  • 🌐 更新 docs/docs/fastapi-people.md 的德语翻译。PR #10285@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/sub-dependencies.md 添加德语翻译。PR #10409@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/security/index.md 添加德语翻译。PR #10429@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md 添加德语翻译。PR #10411@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/extra-data-types.md 添加德语翻译。PR #10534@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/security/simple-oauth2.md 添加德语翻译。PR #10504@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/security/get-current-user.md 添加德语翻译。PR #10439@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/request-forms-and-files.md 添加德语翻译。PR #10368@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/encoder.md 添加德语翻译。PR #10385@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/request-forms.md 添加德语翻译。PR #10361@nilslindemann 提交。
  • 🌐 为 docs/docs/deployment/versions.md 添加德语翻译。PR #10491@nilslindemann 提交。
  • 🌐 为 docs/docs/async.md 添加德语翻译。PR #10449@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/cookie-params.md 添加德语翻译。PR #10323@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/classes-as-dependencies.md 添加德语翻译。PR #10407@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/index.md 添加德语翻译。PR #10399@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/header-params.md 添加德语翻译。PR #10326@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/path-params-numeric-validations.md 添加德语翻译。PR #10307@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/query-params-str-validations.md 添加德语翻译。PR #10304@nilslindemann 提交。
  • 🌐 为 docs/docs/tutorial/request-files.md 添加德语翻译。PR #10364@nilslindemann 提交。
  • :globe_with_meridians: 为 docs/docs/advanced/templates.md 添加葡萄牙语翻译。PR #11338@SamuelBFavarin 提交。
  • 🌐 为 docs/docs/learn/index.md 添加孟加拉语翻译。PR #11337@imtiaz101325 提交。
  • 🌐 修复 docs/docs/index.md 的韩语翻译。PR #11296@choi-haram 提交。
  • 🌐 为 docs/docs/about/index.md 添加韩语翻译。PR #11299@choi-haram 提交。
  • 🌐 为 docs/docs/advanced/index.md 添加韩语翻译。PR #9613@ElliottLarsen 提交。
  • 🌐 为 docs/docs/how-to/extending-openapi.md 添加德语翻译。PR #10794@nilslindemann 提交。
  • 🌐 更新 docs/docs/tutorial/metadata.md 的中文翻译。PR #11286@jackleeio 提交。
  • 🌐 更新 docs/docs/contributing.md 的中文翻译。PR #10887@Aruelius 提交。
  • 🌐 为 docs/docs/fastapi-people.md 添加阿塞拜疆语翻译。PR #11195@vusallyv 提交。
  • 🌐 为 docs/docs/tutorial/dependencies/index.md 添加俄语翻译。PR #11223@kohiry 提交。
  • 🌐 更新 docs/docs/tutorial/query-params.md 的中文翻译。PR #11242@jackleeio 提交。
  • 🌐 为 docs/learn/index.md 添加阿塞拜疆语翻译。PR #11192@vusallyv 提交。

内部

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

0.110.0

重大更改

  • 🐛 修复内部服务器错误导致未处理的内存增长问题,重构带 yieldexcept 的依赖项,要求像常规 Python 中一样再次引发异常。PR #11191@tiangolo 提交。
    • 这是一项重大更改(且仅轻微),如果你使用了带 yield 的依赖项,并在这些依赖项中使用了 except 但没有再次引发异常,则会受到影响。
    • 此问题由 @rushilsrivastava 内部报告为内存泄漏,当服务器出现未处理的异常导致内部服务器错误时,之前分配的内存不会被释放。
    • 阅读新文档:yieldexcept 的依赖项

简而言之,如果你之前的依赖项是这样的:

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

现在你需要确保在 except 之后再次引发异常,就像在常规 Python 中一样:

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

文档

  • ✏️ 修复 docs/docs/ 中的少量拼写错误。PR #11126@KaniKim 提交。
  • ✏️ 修复 fastapi/applications.py 中的少量拼写错误。PR #11099@JacobHayes 提交。

翻译

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

0.109.2

升级

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

翻译

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

内部

0.109.1

安全修复

  • ⬆️ 将 python-multipart 的最低版本升级到 >=0.0.7,以修复使用表单数据进行 ReDoS 攻击时的漏洞。你也可以直接升级 python-multipart

更多信息请阅读 安全通告:Content-Type Header ReDoS

功能

  • ✨ 在没有响应体的状态码中包含 HTTP 205。PR #10969@tiangolo 提交。

重构

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

文档

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

翻译

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

内部

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

0.109.0

功能

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

升级

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

文档

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

翻译

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

内部

  • 👥 更新 FastAPI 人员名单。PR #10871@tiangolo 提交。
  • 👷 升级了自定义 GitHub Action comment-docs-preview-in-pr。PR #10916@tiangolo 提交。
  • ⬆️ 升级了 GitHub Action latest-changes。PR #10915@tiangolo 提交。
  • 👷 升级了 GitHub Action label-approved。PR #10913@tiangolo 提交。
  • ⬆️ 升级了 GitHub Action label-approved。PR #10905@tiangolo 提交。

0.108.0

升级

  • ⬆️ 将 Starlette 升级到 >=0.29.0,<0.33.0,并更新了文档以及模板对新 Starlette 参数的使用。移除了 AnyIO >=3.7.1,<4.0.0 的版本限制,增加了对 AnyIO 4.x.x 的支持。PR #10846@tiangolo 提交。

0.107.0

升级

  • ⬆️ 将 Starlette 升级到 0.28.0。PR #9636@adriangb 提交。

文档

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

0.106.0

破坏性变更

后台任务中不再支持使用带 yield 的依赖项中的资源。

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

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

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

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

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

app = FastAPI()


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


class OwnerError(Exception):
    pass


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


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

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

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

然而,这意味着在响应通过网络传输时,不必要地占用带有 yield 的依赖项中的资源(例如数据库连接),因此在 FastAPI 0.106.0 中对此进行了更改。

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

如果您以前依赖此行为,那么现在您应该在后台任务本身内部创建资源,并且内部只使用不依赖于带有 yield 的依赖项的资源的数据。

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

FastAPI 0.106.0 之前的执行顺序如下。

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

sequenceDiagram

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

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

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

功能

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

内部

0.105.0

功能

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

重构

文档

  • 📝 微调了生成客户端的默认建议配置。PR #10736@tiangolo 提交。

内部

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

0.104.1

修复

  • 📌 暂时将 Swagger UI 版本固定为 5.9.0,以解决 5.9.1 中导致其崩溃的错误。PR #10529@alejandraklachquin 提交。
    • 这并非 FastAPI 的 bug,而是 Swagger UI 的 bug,但固定版本可以解决问题,直到 Swagger UI 方面找到解决方案。

文档

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

内部

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

0.104.0

功能

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

升级

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

内部

0.103.2

重构

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

翻译

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

内部

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

0.103.1

修复

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

文档

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

翻译

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

重构

  • ✏️ 修复了 fastapi/applications.py 中注释中的错别字。PR #10045@AhsanSheraz 提交。
  • ✅ 为 OpenAPI 示例添加了缺失的测试,它在覆盖范围中缺失。PR #10188@tiangolo 提交。

内部

0.103.0

功能

文档

  • 📝 在文档中添加了关于 FastAPI 版本的独立输入和输出 Schema 的注释。PR #10150@tiangolo 提交。

0.102.0

功能

重构

  • ♻️ 重构了 Pydantic 2.2.1 的新测试。PR #10115@tiangolo 提交。

文档

  • 📝 添加了新的文档部分,How To - Recipes(操作指南 - 技巧),将不需要每个人阅读的文档移动到 How To。PR #10114@tiangolo 提交。
  • 📝 更新了高级文档,添加了赞助商课程的链接。PR #10113@tiangolo 提交。
  • 📝 更新了生成客户端的文档。PR #10112@tiangolo 提交。
  • 📝 微调了 MkDocs 并添加了重定向。PR #10111@tiangolo 提交。
  • 📝 重构了云提供商的文档,包含了赞助商的链接。PR #10110@tiangolo 提交。

内部

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

0.101.1

修复

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

重构

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

文档

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

翻译

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

内部

0.101.0

功能

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

重构

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

升级

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

翻译

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

内部

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

0.100.1

修复

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

文档

  • 📝 更新了自托管 Swagger UI 的链接,指向 v5 版本,支持 OpenAPI 3.1.0。PR #9834@tiangolo 提交。

翻译

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

内部

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

0.100.0

✨ 支持 Pydantic v2

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

  • 改进了边缘情况下的正确性
  • 安全的类型。
  • 更好的性能和更少的能耗
  • 更好的可扩展性
  • 等等。

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

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

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

本次发布的重点是与 Pydantic v1 和 v2 的兼容性,以确保您当前的应用程序能够继续运行。后续将更侧重于重构、正确性、代码改进,然后是性能改进。一些在 FastAPI 测试版发布时运行基准测试的第三方早期测试者报告了 2倍 - 3倍 的性能提升。这对于仅仅执行 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 来进行配置。
  • 内部类 Configschema_extra 属性已由新 model_config 字典中的 json_schema_extra 键替换。
  • 当您安装 "fastapi[all]" 时,现在还包括:
  • 现在 Pydantic Settings 是一个额外的可选包(包含在 "fastapi[all]" 中)。要使用设置,你现在应该从 pydantic_settings 导入 BaseSettings,而不是直接从 pydantic 导入。

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

0.99.1

修复

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

文档

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

0.99.0

功能

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

    • 新增了对文档化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_encoderdeque 对象及其子级的支持。PR #9433@cranium 提交。

文档

  • 📝 修复了 FastAPI 及朋友时事通讯的表单。PR #9749@tiangolo 提交。

翻译

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

内部

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

0.98.0

功能

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

文档

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

翻译

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

内部

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

0.97.0

功能

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

重构

  • ⬆️ 升级并完全迁移到 Ruff,移除了 isort,包含新版 Ruff 建议的一些调整。PR #9660@tiangolo 提交。
  • ♻️ 更新了内部类型注解并升级了 mypy。PR #9658@tiangolo 提交。
  • ♻️ 简化了 AsyncExitStackMiddleware,因为在 Python 3.6 之后 AsyncExitStack 总是可用。PR #9657@tiangolo 提交。

升级

内部

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

0.96.1

修复

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

升级

  • 📌 将 Pydantic 的最低版本更新为 >=1.7.4。这解决了在使用旧版本 Pydantic 时出现的问题。PR #9567@Kludex 提交。

重构

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

文档

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

翻译

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

内部

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

0.96.0

功能

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

文档

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

翻译

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

内部

0.95.2

翻译

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

内部

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

0.95.1

修复

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

文档

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

翻译

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

内部

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

0.95.0

亮点

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

这有几个好处,其中一个主要好处是,现在您函数中使用 Annotated 的参数将完全不受影响

如果您在代码中的其他地方调用这些函数,实际的默认值将保留,您的编辑器将帮助您注意到缺失的必需参数,Python 将要求您在运行时传递必需参数,您将能够将相同的函数用于不同的用途和不同的库(例如,Typer很快也将支持 Annotated,然后您可以将相同的函数用于 API 和 CLI),等等。

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

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

例如,您可能有这样的代码

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


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


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


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


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

依赖项的代码有一些重复

user: User = Depends(get_current_user)

......代码库越大,这一点就越明显。

现在您可以像这样一次性创建一个带有注解的依赖项

CurrentUser = Annotated[User, Depends(get_current_user)]

然后您可以重复使用这个 Annotated 依赖项

CurrentUser = Annotated[User, Depends(get_current_user)]


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


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


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


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

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

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

更新的关键文档是

特别感谢 @nzig 的核心实现,以及 @adriangb 通过 Xpresso 提供的灵感和想法!🚀

特性

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

文档

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

0.94.1

修复

  • 🎨 修复生命周期类型,将 Starlette 升级到 0.26.1。PR #9245 by @tiangolo

0.94.0

升级

文档

翻译

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

内部

0.93.0

特性

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

现在,您可以不再使用独立的 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 的格式。PR #6005 by @eykamp

翻译

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

内部

  • 👷 更新翻译机器人消息。PR #9206 by @tiangolo
  • 👷 更新翻译机器人以使用 Discussions,并在 PR 完成时通知。PR #9183 by @tiangolo
  • 🔧 更新赞助商徽章。PR #9182 by @tiangolo
  • 👥 更新 FastAPI 人员列表。PR #9181 by @github-actions[bot]
  • 🔊 记录 FastAPI 人员列表中的 GraphQL 错误,因为它返回 200,但载荷中包含错误。PR #9171 by @tiangolo
  • 💚 修复/解决 Docker 中 GitHub Actions 与 git for FastAPI People 的问题。PR #9169 by @tiangolo
  • ♻️ 重构 FastAPI Experts,现在问题已迁移,仅使用 discussions。PR #9165 by @tiangolo
  • ⬆️ 升级分析功能。PR #6025 by @tiangolo
  • ⬆️ 升级并重新启用 Typer-CLI 的安装。PR #6008 by @tiangolo

0.92.0

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

升级

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

0.91.0

升级

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

0.90.1

升级

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

文档

翻译

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

内部

0.90.0

升级

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

文档

翻译

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

内部

  • ⬆️ 升级文档工作流的 Ubuntu 版本。PR #5971 by @tiangolo
  • 🔧 更新赞助商徽章。PR #5943 by @tiangolo
  • ✨ 计算 FastAPI Experts 时包含 GitHub Discussions。PR #5941 by @tiangolo
  • ⬆️ 升级 isort 并更新 pre-commit。PR #5940 by @tiangolo
  • 🔧 添加 Discussions 中问题的模板。PR #5920 by @tiangolo
  • 🔧 将赞助商预算洞察更新为 Powens。PR #5916 by @tiangolo
  • 🔧 更新 GitHub 赞助商徽章数据。PR #5915 by @tiangolo

0.89.1

修复

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

文档

翻译

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

0.89.0

特性

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

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

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


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


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

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

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

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

在新的文档中阅读更多内容:响应模型 - 返回类型

文档

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

翻译

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

内部

0.88.0

升级

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

文档

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

翻译

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

内部

0.87.0

此版本的亮点

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

特性

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

文档

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

翻译

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

内部

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

0.86.0

特性

修复

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

文档

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

翻译

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

内部

  • 👷 更新 FastAPI 人员列表以排除机器人:pre-commit-ci, dependabot。PR #5586 by @tiangolo
  • 🎨 格式化 test_starlette_exception.py 中的 OpenAPI JSON。PR #5379 by @iudeen
  • 👷 将 Codecov 切换到 Smokeshow 和 pytest-cov,以便内部测试使用纯 coverage。PR #5583 by @tiangolo
  • 👥 更新 FastAPI 人员列表。PR #5571 by @github-actions[bot]

0.85.2

文档

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

翻译

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

内部

0.85.1

修复

  • 🐛 修复 OpenAPI 状态码中字符串的支持:default, 1XX, 2XX, 3XX, 4XX, 5XX。PR #5187 by @JarroVGIT

文档

  • 📝 将 WayScript x FastAPI 教程添加到外部链接部分。PR #5407 by @moneeka

内部

0.85.0

特性

  • ⬆ 将 Starlette 的最低版本从 0.19.1 升级到 0.20.4。初始 PR #4820 by @Kludex
    • 这包含了 Starlette 中的几个错误修复。
  • ⬆️ 在公共额外依赖项中升级 Uvicorn 最大版本:all。从 >=0.12.0,<0.18.0>=0.12.0,<0.19.0。PR #5401 by @tiangolo

内部

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

0.84.0

破坏性更改

此版本的 FastAPI 不再支持 Python 3.6。🔥 请升级到受支持的 Python 版本(3.7 或更高),Python 3.6 很久以前就已经终止生命周期了。😅☠

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

0.83.0

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

Python 3.6 已于大约一年前终止生命周期,不再受 Python 支持

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

特性

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

修复

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

文档

内部

0.82.0

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

Python 3.6 已于大约一年前终止生命周期,不再受 Python 支持

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

特性

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

修复

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

文档

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

翻译

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

内部

0.81.0

特性

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

修复

  • 🐛 修复 jsonable_encoder 对于带有 pydantic 兼容字段的 dataclasses 的问题。PR #3607 by @himbeles
  • 🐛 修复对使用参数列表扩展 openapi_extras 的支持。PR #4267 by @orilevari

文档

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

翻译

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

内部

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

0.80.0

破坏性更改 - 修复

  • 🐛 修复 response_model 不使 None 失效的问题。PR #2725 by @hukkin

如果您使用 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 不是声明为 Itemresponse_model 的有效类型。

您也可能在不知不觉中隐式返回 None,例如

from fastapi import FastAPI
from pydantic import BaseModel

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

app = FastAPI()

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

如果您使用 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 中授权代码流变体的修复。PR #3439 初始 PR by @koonpeng
  • ♻ 从 docstrings 中提取的描述中去除空白色字符。PR #2821 by @and-semakin
  • 🐛 修复在使用 Security() 和其他地方(例如 Depends())使用不同 OAuth2 作用域的依赖项时,缓存依赖项的问题。PR #2945 by @laggardkernel
  • 🎨 更新 response_model 的类型注解,允许诸如 Union[str, None] 之类的类型。PR #5294 by @tiangolo

翻译

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

0.79.1

修复

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

文档

翻译

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

内部

0.79.0

修复 - 破坏性更改

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

翻译

内部

0.78.0

新功能

  • ✨ 添加了在声明必填参数时省略 ... 作为默认值的支持。

  • Path()

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

新文档位于 教程 - 查询参数和字符串验证 - 设为必填项。PR #4906 by @tiangolo

到目前为止,声明一个必填参数同时添加额外验证或元数据需要使用 ...(省略号)。

例如:

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

app = FastAPI()


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

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

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

✨ 例如,现在支持这样写:

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

app = FastAPI()


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

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

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

app = FastAPI()


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

文档

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

翻译

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

内部

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

0.77.1

升级

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

文档

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

翻译

内部

  • 🔧 在 Uzbek 翻译的 issue 中添加通知。PR #4884 by @tiangolo

0.77.0

升级

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

文档

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

翻译

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

0.76.0

升级

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

内部

0.75.2

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

修复

  • ✅ 修复新/近期测试与新的固定 ValidationError JSON Schema。PR #4806 by @tiangolo
  • 🐛 修复字段 loc 处的 ValidationError 的 JSON Schema。PR #3810 by @dconathan
  • 🐛 修复 APIRouter WebSockets 前缀支持。PR #2640 by @Kludex

升级

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

内部

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

0.75.1

翻译

内部

0.75.0

新功能

0.74.1

新功能

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

0.74.0

破坏性变更

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

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

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

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

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

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

...这样,finally 块无论是否发生异常都会运行。

新功能

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

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

例如,现在这样可以正常工作:

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


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

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

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

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

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

内部

0.73.0

新功能

文档

修复

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

内部

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

0.72.0

新功能

文档

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

翻译

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

内部

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

0.71.0

新功能

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

内部

0.70.1

这个 FastAPI 版本没有什么特别有趣的地方。它主要是为了启用/解除 Pydantic 下一个版本的发布,该版本将带来许多新功能和改进。🤩

修复

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

翻译

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

内部

0.70.0

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

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

  • 首先到 FastAPI 0.68.2,没有破坏性变更,但升级了所有子依赖项。
  • 接下来到 FastAPI 0.69.0,将 Starlette 升级到 0.15.0,支持 AnyIO,并且您的代码有更高几率出现破坏性变更。
  • 最后到 FastAPI 0.70.0,仅将 Starlette 升级到最新版本 0.16.0,并包含额外的错误修复。

这样,如果其中一个版本对您的代码造成了破坏性变更,您仍然可以从之前的升级中受益。✨

破坏性变更 - 升级

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

  • "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。PR #3372 by @graingert
  • ➖ 移除 graphene 作为可选依赖。PR #4007 by @tiangolo

文档

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

翻译

内部

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

0.68.2

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

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

很快将发布一个新的 FastAPI 版本,将 Starlette 升级以利用最近的改进,但由于这有更高几率造成破坏性变更,因此将在单独的版本中发布。

新功能

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

文档

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

翻译

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

内部

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

0.68.1

翻译

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

内部

0.68.0

新功能

文档

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

翻译

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

内部

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

0.67.0

新功能

文档

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

内部

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

0.66.1

翻译

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

内部

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

0.66.0

新功能

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

修复

  • 🐛 修复 jsonable_encoder 中字典的 include/exclude 问题。PR #2016 by @Rubikoid
  • 🐛 支持生成输出 OpenAPI 中的自定义 OpenAPI / JSON Schema 字段。PR #1429 by @jmagnusson

翻译

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

0.65.3

修复

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

翻译

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

内部

0.65.2

安全修复

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

此更改修复了当浏览器使用 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 的安全报告!🙇🔒

内部

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

0.65.1

安全修复

0.65.0

破坏性变更 - 升级

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

翻译

内部

  • 👷 添加 GitHub Action 缓存以加速 CI 安装。PR #3204 by @tiangolo
  • ⬆️ 升级 setup-python GitHub Action 到 v2。PR #3203 by @tiangolo
  • 🐛 修复文档脚本,以生成带有 overrides 样板的新翻译语言。PR #3202 by @tiangolo
  • ✨ 添加新的 Deta 横幅徽章,包含新的赞助等级 🙇。PR #3194 by @tiangolo
  • 👥 更新 FastAPI 人员列表。PR #3189 by @github-actions[bot]
  • 🔊 更新 FastAPI 人员列表以允许更好的调试。PR #3188 by @tiangolo

0.64.0

新功能

修复

  • 📌 锁定 SQLAlchemy 测试范围,因为它不使用 SemVer。PR #3001 by @tiangolo
  • 🎨 为 mypy 添加新必需的类型注释。PR #2882 by @tiangolo
  • 🎨 移除内部“type: ignore”,现在不再需要。PR #2424 by @AsakuraMizu

文档

  • 📝 添加俄语文章链接“FastAPI: 熟悉框架”。PR #2564 by @trkohler
  • 📝 添加外部博客文章链接“使用 Auth0 验证您的 FastAPI 应用程序”。PR #2172 by @dompatmore
  • 📝 修复文章链接损坏:使用 FastAPI 和 Streamlit 在 Python 中提供机器学习模型。PR #2557 by @davidefiocco
  • 📝 添加 FastAPI Medium 文章:将 dockerized FastAPI 应用程序部署到 AWS。PR #2515 by @vjanz
  • ✏ 修复教程 - 错误处理中的错字。PR #2486 by @johnthagen
  • ✏ 修复安全 OAuth2 范围中的错字。PR #2407 by @jugmac00
  • ✏ 修复/澄清 SQL(关系)数据库文档中的错字。PR #2393 by @kangni
  • 📝 添加外部链接:“FastAPI for Flask Users”。PR #2280 by @amitness

翻译

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

内部

0.63.0

特性

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

重大变更

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

修复

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

文档

翻译

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

内部

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

0.62.0

特性

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

到目前为止,对于多个选项,将它们应用于一组 路径操作(path operations) 的唯一方法是在 include_router 中进行。这虽然有效,但 app.include_router()router.include_router() 的调用通常在另一个文件中完成。

这意味着,例如,要将身份验证应用于路由器中的所有 路径操作(path operations),最终会在不同的文件中完成,而不是将相关的逻辑放在一起。

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

FastAPI

这允许设置(主要是新的)参数(除了已有的参数)

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

例如:

from fastapi import FastAPI, Depends


async def some_dependency():
    return


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

APIRouter

这允许设置(主要是新的)参数(除了已有的参数)

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

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

破坏性变更

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

文档

翻译

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

内部

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

0.61.2

修复

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

文档

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

翻译

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

内部

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

0.61.1

修复

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

文档

翻译

内部

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

0.61.0

功能

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

破坏性变更

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

文档

内部

  • 添加 Flake8 linting。原始 PR #1774@MashhadiNima 提交。
  • 禁用 Gitter 机器人,因为它目前已损坏,并且 Gitter 的响应未显示问题。PR #1853

0.60.2

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

0.60.1

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

0.60.0

  • 添加 GitHub Action 以监视丢失的预览文档并触发预览部署。PR #1740
  • 添加自定义 GitHub Action 以获取带有文档预览的 artifact。PR #1739
  • 添加新的 GitHub Actions 以预览 PR 中的文档。PR #1738
  • 添加 XML 测试覆盖率以支持 GitHub Actions。PR #1737
  • 更新徽章并移除 Travis,因为 GitHub Actions 现在是主要的 CI。PR #1736
  • 添加 GitHub Actions 用于 CI,从 Travis 迁移。PR #1735
  • 添加对带有请求体的 GET 请求的 OpenAPI 模式支持。PR #1626@victorphoenix3 提交。

0.59.0

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

0.58.1

0.58.0

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

0.57.0

0.56.1

0.56.0

0.55.1

0.55.0

0.54.2

0.54.1

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

0.54.0

0.53.2

0.53.1

0.53.0

0.52.0

0.51.0

  • 重新导出 Starlette 中的实用程序
    • 这允许使用 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

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

0.49.1

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

0.49.0

0.48.0

0.47.1

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

0.47.0

0.46.0

0.45.0

  • 添加对 OpenAPI 回调的支持
    • 新文档:OpenAPI 回调
    • 重构 operationId 的生成,使其成为有效的 Python 名称(在大多数语言中也是有效的变量)。
    • APIRouter 添加 default_response_class 参数。
    • 原始 PR #722,作者 @booooh
  • 重构日志记录以在所有地方使用相同的记录器,更新日志字符串和级别。PR #781
  • 外部链接 中添加文章:为什么您应该尝试 FastAPI?。PR #766,作者 @prostomarkeloff
  • 移除文档中处理错误的性别偏见。PR #780。原始想法来自 PR #761,作者 @classywhetten
  • 将文档和对 body-schema 的引用重命名为 body-fields,以与 Pydantic 保持一致。PR #746,作者 @prostomarkeloff

0.44.1

  • 将 GitHub 社交预览图片添加到 git。PR #752
  • 更新 PyPI "trove 分类器"。PR #751
  • 添加对 Python 3.8 的完全支持。在 Travis 中全面启用 Python 3.8。PR 749
  • 更新“新问题”模板。PR #749
  • 修正奇异 Pydantic 类型错误的序列化。PR #748,作者 @dmontagu

0.44.0

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

0.43.0

0.42.0

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

0.41.0

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

0.40.0

0.39.0

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

0.38.1

  • 修正不正确的 Request 类导入。PR #493,作者 @kamalgill

0.38.0

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

0.37.0

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

0.36.0

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

0.35.0

  • 修正路由 assert 中的错别字。PR #419,作者 @pablogamboa
  • 修正文档中的错别字。PR #411,作者 @bronsen
  • 修正解析用 Union 声明的主体类型。PR #400,作者 @koxudaxi

0.34.0

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

  • 为来自 PR #333 (作者 @dmontagu) 的重复模型添加 OpenAPI 模式测试。PR #385

0.33.0

  • 升级 Pydantic 版本到 0.30.0。PR #384,作者 @jekirl

0.32.0

  • 修正文档中功能的错别字。PR #380,作者 @MartinoMensio

  • 修正 查询参数 示例中的源代码 limit。PR #366,作者 @Smashman

  • 更新文档中关于 OAuth2 范围 的措辞。PR #371,作者 @cjw296

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

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

  • 添加在 .include_routerprefix 中包含路径模板的测试。PR #349

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

  • 修正两个同名函数(在不同模块中)具有相同复合主体时的 OpenAPI/JSON 模式生成。

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

0.31.0

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

0.30.1

0.30.0

  • 添加对 Pydantic ORM 模式的支持

    • 更新了关于 SQL 与 SQLAlchemy 的文档,使用 ORM 模式的 Pydantic 模型,带关系的 SQLAlchemy 模型,文件分离,代码简化以及其他更改。新文档:SQL(关系型)数据库
    • 对 ORM 模式的新支持解决了/添加了与 ORM 相关的问题/功能,如惰性加载、混合属性、动态/getter(使用 @property 装饰器)以及其他几个用例。
    • 这适用于 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_password)的 UserInDB,并且 User 用于 response_model),它仍然会通过验证(因为 UserInDBUser 的子类),并且对象将按原样返回,包括 hashed_password。为了解决这个问题,如果声明的 response_model 是一个 Pydantic 模型类(或其中包含 Pydantic 模型类,例如在 List[Item] 中),Pydantic 模型类将是一个不同的(“克隆的”)类。因此,子类对象不会简单地通过验证并按原样返回,因为它不再是克隆的 response_model 的子类。相反,将创建一个新的 Pydantic 模型对象,其中包含返回对象的内容。因此,它将是一个新对象(由返回对象的数据创建),并将由克隆的 response_model 过滤,仅包含正常声明的字段。
    • PR #322
  • 移除/清理路由中未使用的正则表达式代码。PR #314,作者 @dmontagu

  • 对附加响应使用默认响应状态码描述。PR #313,作者 @duxiaoyao

  • 升级 Pydantic 支持到 0.28。PR #320,作者 @jekirl

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 的损坏链接。PR #275,作者 @dmontagu

  • 使用 Pydantic Field 重构参数提取

0.26.0

0.25.0

  • 添加对 Pydantic 的 includeexcludeby_alias 的支持。

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

  • 添加对 Pydantic 的 skip_defaults 支持

    • 新增 路径操作装饰器 参数 response_model_skip_defaults
      • 该参数的名称很可能在未来版本中更改为 response_skip_defaultsmodel_skip_defaults 或类似名称。
    • 关于使用 response_model_skip_defaults 的新 文档章节
    • PR #248,作者 @wshayes

0.24.0

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

    • 支持包括
      • Depends
      • 安全
      • Cookie
      • Header
      • Path
      • Query
      • ...因为这些与 WebSockets 协议兼容(例如 Body 不兼容)。
    • 更新 WebSockets 文档.
    • PR #178,作者 @jekirl
  • 将 Pydantic 的兼容版本升级到 0.26.0

    • 这包括对 IP 地址和网络对象的 JSON 模式支持、错误修复和其他功能。
    • PR #247,作者 @euri10

0.23.0

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

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

    • 例如,在开发期间,它可能是 https://:8000/docs/oauth2-redirect
    • 请记住,此回调 URL 独立于您的前端使用的任何回调。您可能在 https://yourdomain.com/login/callback 也有另一个回调。
    • 这仅用于在带有 Swagger UI 的 API 文档中允许委派认证。
    • PR #198,作者 @steinitzu
  • 将 Swagger UI 和 ReDoc 路由处理程序(路径操作)从 lambda 函数改为 async 函数以提高性能。PR #241,作者 @Trim21

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

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}。PR #234,作者 @euri10

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

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

  • 重新启用 Python 3.7 的 black 格式检查。PR #229,作者 @zamiramir

0.21.0

  • 在主体解析错误时,从先前的异常中 raise,以便在日志代码中更好地进行内省。PR #192,作者 @ricardomomm

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

  • 将 Pydantic 升级到 0.25 版本。PR #225,作者 @euri10

  • 修正路由中的错别字。PR #221,作者 @djlambert

0.20.1

  • 添加文件 py.typed,包含包的类型信息。PR #209,作者 @meadsteve

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

0.20.0

  • 升级 OAuth2

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

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

  • 添加关于处理 响应 Cookies响应 Headers 的文档。PR #185

  • 修正文档中的错别字。PR #176,作者 @chdsbd

0.19.0

0.18.0

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

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

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

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

0.17.0

0.16.0

0.15.0

0.14.0

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

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

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

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

  • 替代方案、启发和比较 中包含 Falcon 和 Hug。

0.13.0

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

0.12.1

  • 修正错误:处理 APIRouter.include_router() 中的附加 responses。PR #140

  • 修正 SQL 教程中的错别字。PR #138,作者 @mostaphaRoudsari

  • 修正关于嵌套模型和带 JWT 的 OAuth2 章节中的错别字。PR #127,作者 @mmcloud

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 教程 以在发生异常时也关闭数据库会话。PR #89,作者 @alexiri

  • 修正 pyproject.toml 中的重复依赖项。PR #128,作者 @zxalif

0.10.3

0.10.2

  • 修正 Python Union 声明的 OpenAPI (JSON 模式) (JSON 模式 additionalProperties)。PR #121

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

  • 文档化使用联合和列表的响应模型,更新于:额外模型。PR #108

0.10.1

0.10.0

0.9.1

0.9.0

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

  • 添加关于:应用程序配置 的文档。

  • 修正文档中的错别字。PR #76,作者 @matthewhegarty

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

0.8.0

  • 使开发脚本可执行。PR #76,作者 @euri10

  • 添加在 app.include_router() 中添加 tags 的支持。PR #55,作者 @euri10。文档在章节 大型应用程序 中已更新。

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

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

0.7.1

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

  • 修正 jsonable_encoder 对于带有 Config 但没有 json_encoders 的 Pydantic 模型的问题:#29

0.2.0

  • 修正安全章节中的错别字:#24,作者 @kkinder

  • 添加对 Pydantic 自定义 JSON 编码器的支持:#21,作者 @euri10

0.1.19

  • 将 Starlette 版本升级到当前最新的 0.10.1#17,作者 @euri10