发布说明¶
最新更改¶
文档¶
翻译¶
- 🌐 为
docs/pt/docs/deployment/cloud.md
添加葡萄牙语翻译。PR #12217 由 @marcelomarkus 提交。 - ✏️ 修复
docs/es/docs/python-types.md
中的错别字。PR #12235 由 @JavierSanchezCastro 提交。 - 🌐 为
docs/nl/docs/environment-variables.md
添加荷兰语翻译。PR #12200 由 @maxscheijen 提交。 - 🌐 为
docs/pt/docs/deployment/manually.md
添加葡萄牙语翻译。PR #12210 由 @JoaoGustavoRogel 提交。 - 🌐 为
docs/pt/docs/deployment/server-workers.md
添加葡萄牙语翻译。PR #12220 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/how-to/configure-swagger-ui.md
添加葡萄牙语翻译。PR #12222 由 @marcelomarkus 提交。
内部¶
- 🔧 更新赞助商,删除 Fine.dev。PR #12271 由 @tiangolo 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12253 由 @pre-commit-ci[bot] 提交。
- ✏️ 修复 http 安全中的文档字符串错别字。PR #12223 由 @albertvillanova 提交。
0.115.0¶
亮点¶
现在您可以使用 Pydantic 模型声明 Query
、Header
和 Cookie
参数。🎉
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
参数模型¶
对 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 参数模型。
禁止额外的查询(Cookie、Header)参数¶
使用 Pydantic 模型来限制 Query
参数的额外值(也适用于 Header
和 Cookie
参数)。
要实现此目的,请使用 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
这适用于 Query
、Header
和 Cookie
参数,请阅读新的文档
功能¶
翻译¶
内部¶
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12204 由 @pre-commit-ci[bot] 提交。
0.114.2¶
修复¶
- 🐛 修复使用
alias
时的表单字段回归问题。PR #12194 由 @Wurstnase 提交。
翻译¶
- 🌐 为
docs/pt/docs/tutorial/request-form-models.md
添加葡萄牙语翻译。PR #12175 由 @ceb10n 提交。 - 🌐 为
docs/zh/docs/project-generation.md
添加中文翻译。PR #12170 由 @waketzheng 提交。 - 🌐 为
docs/nl/docs/python-types.md
添加荷兰语翻译。PR #12158 由 @maxscheijen 提交。
内部¶
0.114.1¶
重构¶
文档¶
翻译¶
- 🌐 为
docs/pt/docs/virtual-environments.md
添加葡萄牙语翻译。PR #12163 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/environment-variables.md
添加葡萄牙语翻译。PR #12162 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/tutorial/testing.md
添加葡萄牙语翻译。PR #12164 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/tutorial/debugging.md
添加葡萄牙语翻译。PR #12165 由 @marcelomarkus 提交。 - 🌐 为
docs/ko/docs/project-generation.md
添加韩语翻译。PR #12157 由 @BORA040126 提交。
内部¶
- ⬆ 将 tiangolo/issue-manager 从 0.5.0 升级到 0.5.1。PR #12173 由 @dependabot[bot] 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12176 由 @pre-commit-ci[bot] 提交。
- 👷 更新
issue-manager.yml
。PR #12159 由 @tiangolo 提交。 - ✏️ 修复
fastapi/params.py
中的错别字。PR #12143 由 @surreal30 提交。
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
阅读新的文档:表单模型 - 禁止额外的表单字段。
特性¶
文档¶
内部¶
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
阅读新的文档:表单模型。
特性¶
内部¶
0.112.4¶
此版本主要是一个大型内部重构,以启用为Form
字段添加 Pydantic 模型支持,但该功能将在下一个版本中提供。
此版本不应以任何方式影响使用 FastAPI 的应用程序。您甚至不必升级到此版本。它只是一个检查点。🤓
重构¶
内部¶
- ⏪️ 临时撤销“✨ 添加对
Form
参数中 Pydantic 模型的支持”,以进行检查点发布。PR #12128 由 @tiangolo 提交。由 PR #12129 恢复。 - ✨ 添加对
Form
参数中 Pydantic 模型的支持。PR #12127 由 @tiangolo 提交。由 PR #12128 撤销,以进行仅包含重构的检查点发布。由 PR #12129 恢复。
0.112.3¶
此版本主要是内部重构,不应以任何方式影响使用 FastAPI 的应用程序。您甚至不必升级到此版本。之后会有几个更大的版本发布。🚀
重构¶
- ♻️ 重构内部
check_file_field()
,重命名为ensure_multipart_is_installed()
以阐明其目的。PR #12106 由 @tiangolo 提交。 - ♻️ 将内部
create_response_field()
重命名为create_model_field()
,因为它用于的不仅仅是响应模型。PR #12103 由 @tiangolo 提交。 - ♻️ 使用 dataclasses 重构和简化来自
solve_dependencies()
的内部数据。PR #12100 由 @tiangolo 提交。 - ♻️ 重构和简化内部
analyze_param()
,使用 dataclasses 而不是元组来组织数据。PR #12099 由 @tiangolo 提交。 - ♻️ 使用 dataclasses 重构和简化依赖项数据结构。PR #12098 由 @tiangolo 提交。
文档¶
- 📝 添加外部链接:FastAPI 中 SQLAlchemy 全局过滤器的技术和应用。PR #12109 由 @TheShubhendra 提交。
- 📝 添加关于中间件中
time.perf_counter()
的说明。PR #12095 由 @tiangolo 提交。 - 📝 将中间件代码示例中的
time.time()
调整为time.perf_counter()
。PR #11957 由 @domdent 提交。 - 🔧 更新赞助商:Coherence。PR #12093 由 @tiangolo 提交。
- 📝 修复异步测试示例不触发 DeprecationWarning。PR #12084 由 @marcinsulikowski 提交。
- 📝 更新
docs_src/path_params_numeric_validations/tutorial006.py
。PR #11478 由 @MuhammadAshiqAmeer 提交。 - 📝 更新
docs/en/docs/async.md
中的逗号。PR #12062 由 @Alec-Gillis 提交。 - 📝 更新关于服务 FastAPI 的文档:ASGI 服务器、Docker 容器等。PR #12069 由 @tiangolo 提交。
- 📝 阐明
response_class
参数、验证以及直接返回响应。PR #12067 由 @tiangolo 提交。 - 📝 修复文档中的少量错别字和问题。PR #12063 由 @svlandeg 提交。
- 📝 在 Docker 文档中添加关于使用
CMD
exec 形式确保优雅关闭和生命周期事件的说明。PR #11960 由 @GPla 提交。
翻译¶
- 🌐 为
docs/nl/docs/features.md
添加荷兰语翻译。PR #12101 由 @maxscheijen 提交。 - 🌐 为
docs/pt/docs/advanced/testing-events.md
添加葡萄牙语翻译。PR #12108 由 @ceb10n 提交。 - 🌐 为
docs/pt/docs/advanced/security/index.md
添加葡萄牙语翻译。PR #12114 由 @ceb10n 提交。 - 🌐 为
docs/nl/docs/index.md
添加荷兰语翻译。PR #12042 由 @svlandeg 提交。 - 🌐 更新
docs/zh/docs/how-to/index.md
的中文翻译。PR #12070 由 @synthpop123 提交。
内部¶
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12115 由 @pre-commit-ci[bot] 提交。
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.10.0 升级到 1.10.1。PR #12120 由 @dependabot[bot] 提交。
- ⬆ 将 pillow 从 10.3.0 升级到 10.4.0。PR #12105 由 @dependabot[bot] 提交。
- 💚 使用
upload-artifact
GH action 时将include-hidden-files
设置为True
。PR #12118 由 @svlandeg 提交。 - ⬆ 将 pypa/gh-action-pypi-publish 从 1.9.0 升级到 1.10.0。PR #12112 由 @dependabot[bot] 提交。
- 🔧 更新赞助商链接:Coherence。PR #12097 由 @tiangolo 提交。
- 🔧 更新 labeler 配置以处理赞助数据。PR #12096 由 @tiangolo 提交。
- 🔧 更新赞助商,移除 Kong。PR #12085 由 @tiangolo 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12076 由 @pre-commit-ci[bot] 提交。
- 👷 更新
latest-changes
GitHub Action。PR #12073 由 @tiangolo 提交。
0.112.2¶
修复¶
- 🐛 修复 Param 和 Body 类中的
allow_inf_nan
选项。PR #11867 由 @giunio-prc 提交。 - 🐛 确保
app.include_router
合并嵌套的生命周期。PR #9630 由 @Lancetnik 提交。
重构¶
- 🎨 修复半内部
FastAPI.add_api_route()
的类型注解。PR #10240 由 @ordinary-jamie 提交。 - ⬆️ 升级 Ruff 版本并重新格式化。PR #12032 由 @tiangolo 提交。
文档¶
- 📝 修复
docs/en/docs/virtual-environments.md
中的错别字。PR #12064 由 @aymenkrifa 提交。 - 📝 添加关于环境变量和虚拟环境的文档。PR #12054 由 @tiangolo 提交。
- 📝 在异步文档中添加 Asyncer 的说明。PR #12037 由 @tiangolo 提交。
- 📝 将功能文档移至顶层,以改进主页菜单。PR #12036 由 @tiangolo 提交。
- ✏️ 修复
Security
参考示例中的导入错别字。PR #11168 由 @0shah0 提交。 - 📝 在教程
docs/en/docs/tutorial/body-multiple-params.md
中突出显示正确的行。PR #11978 由 @svlandeg 提交。 - 🔥 从高级中间件文档中删除 Sentry 链接。PR #12031 由 @alejsdev 提交。
- 📝 阐明翻译管理任务,在一个 PR 中处理多个文件。PR #12030 由 @tiangolo 提交。
- 📝 编辑“OpenAPI 中的其他响应”部分中指向 OpenAPI“响应对象”和“响应对象”部分的链接。PR #11996 由 @VaitoSoi 提交。
- 🔨 使用连字符指定
email-validator
依赖项。PR #11515 由 @jirikuncar 提交。 - 🌐 为
docs/es/docs/project-generation.md
添加西班牙语翻译。PR #11947 由 @alejsdev 提交。 - 📝 修复轻微的错别字。PR #12026 由 @MicaelJarniac 提交。
- 📝 多项文档改进、调整和澄清。PR #11390 由 @nilslindemann 提交。
- 📝 为
GZipMiddleware
的文档添加缺少的compresslevel
参数。PR #11350 由 @junah201 提交。 - 📝 修复文档中项目已存在时测试的响应代码不一致问题。PR #11818 由 @lokomilo 提交。
- 📝 使用 Python 3.10 联合类型示例更新
docs/en/docs/tutorial/body.md
。PR #11415 由 @rangzen 提交。
翻译¶
- 🌐 为
docs/pt/docs/tutorial/request_file.md
添加葡萄牙语翻译。PR #12018 由 @Joao-Pedro-P-Holanda 提交。 - 🌐 为
docs/ja/docs/learn/index.md
添加日语翻译。PR #11592 由 @ukwhatn 提交。 - 📝 更新西班牙语翻译文档以保持一致性。PR #12044 由 @alejsdev 提交。
- 🌐 更新
docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
的中文翻译。PR #12028 由 @xuvjso 提交。 - 📝 更新 FastAPI 人员信息,不进行翻译以获取最新信息。PR #12034 由 @tiangolo 提交。
- 🌐 更新
docs/ur/docs/benchmarks.md
的乌尔都语翻译。PR #10046 由 @AhsanSheraz 提交。
内部¶
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #12046 由 @pre-commit-ci[bot] 提交。
- 🔧 更新覆盖率配置文件。PR #12035 由 @tiangolo 提交。
- 🔨 标准化 shell 脚本中的 shebang。PR #11942 由 @gitworkflows 提交。
- ⬆ 将 sqlalchemy 依赖项从 <1.4.43,>=1.3.18 更新到 >=1.3.18,<2.0.33。PR #11979 由 @dependabot[bot] 提交。
- 🔊 删除旧的忽略警告。PR #11950 由 @tiangolo 提交。
- ⬆️ 升级 griffe-typingdoc 以用于文档。PR #12029 由 @tiangolo 提交。
- 🙈 将 .coverage* 添加到
.gitignore
。PR #11940 由 @gitworkflows 提交。 - ⚙️ 记录和显示测试覆盖率上下文(哪个测试覆盖了哪一行)。PR #11518 由 @slafs 提交。
0.112.1¶
升级¶
- ⬆️ 允许 Starlette 0.38.x,将固定版本更新为
>=0.37.2,<0.39.0
。PR #11876 由 @musicinmybrain 提交。
文档¶
- 📝 更新关于“不要翻译这些页面”的文档部分。PR #12022 由 @tiangolo 提交。
- 📝 添加未翻译页面和验证脚本的文档。PR #12020 由 @tiangolo 提交。
- 📝 更新关于讨论问题的文档。PR #11985 由 @tiangolo 提交。
翻译¶
- 🌐 为
docs/pt/docs/tutorial/bigger-applications.md
添加葡萄牙语翻译。PR #11971 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/advanced/testing-websockets.md
添加葡萄牙语翻译。PR #11994 由 @ceb10n 提交。 - 🌐 为
docs/pt/docs/advanced/testing-dependencies.md
添加葡萄牙语翻译。PR #11995 由 @ceb10n 提交。 - 🌐 为
docs/pt/docs/advanced/using-request-directly.md
添加葡萄牙语翻译。PR #11956 由 @ceb10n 提交。 - 🌐 为
docs/fr/docs/tutorial/body-multiple-params.md
添加法语翻译。PR #11796 由 @pe-brian 提交。 - 🌐 更新
docs/zh/docs/tutorial/query-params.md
的中文翻译。PR #11557 由 @caomingpei 提交。 - 🌐 修复
docs/zh/docs/advanced/testing-dependencies.md
的中文翻译中的错别字。PR #11944 由 @bestony 提交。 - 🌐 为
docs/pt/docs/advanced/sub-applications.md
和docs/pt/docs/advanced/behind-a-proxy.md
添加葡萄牙语翻译。PR #11856 由 @marcelomarkus 提交。 - 🌐 为
docs/pt/docs/tutorial/cors.md
和docs/pt/docs/tutorial/middleware.md
添加葡萄牙语翻译。PR #11916 由 @wesinalves 提交。 - 🌐 为
docs/fr/docs/tutorial/path-params-numeric-validations.md
添加法语翻译。PR #11788 由 @pe-brian 提交。
内部¶
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.14 提升到 1.9.0。PR #11727 由 @dependabot[bot] 提交。
- 🔧 将变更日志 URL 添加到
pyproject.toml
,在 PyPI 中显示。PR #11152 由 @Pierre-VF 提交。 - 👷 不同步标签,因为它会覆盖手动添加的标签。PR #12024 由 @tiangolo 提交。
- 👷🏻 更新 Labeler GitHub Actions。PR #12019 由 @tiangolo 提交。
- 🔧 更新 MkDocs 的语言和社交卡片配置。PR #12016 由 @tiangolo 提交。
- 👷 更新 Labeler GitHub Action 的权限和配置。PR #12008 由 @tiangolo 提交。
- 👷🏻 添加 GitHub Action label-checker。PR #12005 由 @tiangolo 提交。
- 👷 添加标签检查器 GitHub Action。PR #12004 由 @tiangolo 提交。
- 👷 更新 GitHub Action add-to-project。PR #12002 由 @tiangolo 提交。
- 🔧 更新 Labeler GitHub Action。PR #12001 由 @tiangolo 提交。
- 👷 添加 GitHub Action Labeler。PR #12000 由 @tiangolo 提交。
- 👷 添加 GitHub Action add-to-project。PR #11999 由 @tiangolo 提交。
- 📝 更新文档中缺少的警告。PR #11998 由 @tiangolo 提交。
- 🔨 更新 docs.py 脚本以有条件地启用脏重载。PR #11986 由 @tiangolo 提交。
- 🔧 更新 MkDocs 即时预览。PR #11982 由 @tiangolo 提交。
- 🐛 修复部署文档预览脚本以处理 mkdocs.yml 文件。PR #11984 由 @tiangolo 提交。
- 💡 添加关于自定义 Termynal 行高的注释。PR #11976 由 @tiangolo 提交。
- 👷 为 test-redistribute 添加 alls-green。PR #11974 由 @tiangolo 提交。
- 👷 更新 docs-previews 以处理没有文档更改的情况。PR #11975 由 @tiangolo 提交。
- 🔨 重构脚本
deploy_docs_status.py
以处理带有或不带尾部斜杠的部署 URL。PR #11965 由 @tiangolo 提交。 - 🔒️ 更新部署文档操作的权限。PR #11964 由 @tiangolo 提交。
- 👷🏻 将部署文档状态和预览链接添加到 PR。PR #11961 由 @tiangolo 提交。
- 🔧 使用最新的配置和插件更新文档设置。PR #11953 由 @tiangolo 提交。
- 🔇 忽略 Trio 中 attrs 发出的警告。PR #11949 由 @tiangolo 提交。
0.112.0¶
重大更改¶
摘要¶
使用以下命令安装
pip install "fastapi[standard]"
其他更改¶
- 这添加了对以下方式调用 CLI 的支持:
python -m fastapi
- 并且它升级了
fastapi-cli[standard] >=0.0.5
。
技术细节¶
在此之前,fastapi
会包含标准依赖项,包括 Uvicorn 和 fastapi-cli
等。
而 fastapi-slim
则不包含这些标准依赖项。
现在fastapi
不再默认包含这些标准依赖项,除非你使用pip install "fastapi[standard]"
安装。
之前,您会安装pip install fastapi
,现在您应该包含standard
可选依赖项(除非您想排除其中一个):pip install "fastapi[standard]"
。
此更改是因为默认安装标准可选依赖项对一些用户来说很不方便,而改为安装fastapi-slim
则不是一个可行的解决方案。
文档¶
- ✏️ 修复文档中的错别字。PR #11926 by @jianghuyiyuan。
- 📝 微调管理文档。PR #11918 by @tiangolo。
- 🚚 将GitHub链接从tiangolo/fastapi重命名为fastapi/fastapi。PR #11913 by @tiangolo。
- 📝 添加有关FastAPI团队和项目管理的文档。PR #11908 by @tiangolo。
- 📝 重构文档主菜单。PR #11904 by @tiangolo。
- 📝 更新Speakeasy URL。PR #11871 by @ndimares。
翻译¶
- 🌐 更新
docs/pt/docs/alternatives.md
的葡萄牙语翻译。PR #11931 by @ceb10n。 - 🌐 添加
docs/ru/docs/tutorial/dependencies/sub-dependencies.md
的俄语翻译。PR #10515 by @AlertRED。 - 🌐 添加
docs/pt/docs/advanced/response-change-status-code.md
的葡萄牙语翻译。PR #11863 by @ceb10n。 - 🌐 添加
docs/pt/docs/reference/background.md
的葡萄牙语翻译。PR #11849 by @lucasbalieiro。 - 🌐 添加
docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md
的葡萄牙语翻译。PR #11848 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/pt/docs/reference/apirouter.md
的葡萄牙语翻译。PR #11843 by @lucasbalieiro。
内部¶
- 🔧 更新赞助商:添加liblab。PR #11934 by @tiangolo。
- 👷 更新GitHub Action label-approved权限。PR #11933 by @tiangolo。
- 👷 重构GitHub Action以评论文档部署URL并更新token。PR #11925 by @tiangolo。
- 👷 更新GitHub Actions的token。PR #11924 by @tiangolo。
- 👷 更新token权限以在文档中评论部署URL。PR #11917 by @tiangolo。
- 👷 更新GitHub Actions的token权限。PR #11915 by @tiangolo。
- 👷 更新GitHub Actions token的使用。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¶
升级¶
- ➖ 从默认依赖项中移除
orjson
和ujson
。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。
- 📝 添加外部链接: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。 - 📝 微调关于
Annotated
和Query()
参数的介绍性文档。PR #11664 by @tiangolo。 - 📝 更新JWT身份验证文档,使用PyJWT代替pyhon-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/es/docs/how-to/graphql.md
的西班牙语翻译。PR #11697 by @camigomezdev。 - 🌐 添加
docs/pt/docs/reference/index.md
的葡萄牙语翻译。PR #11840 by @lucasbalieiro。 - 🌐 修复德语翻译中的链接。PR #11836 by @anitahammer。
- 🌐 添加
docs/pt/docs/tutorial/dependencies/sub-dependencies.md
的葡萄牙语翻译。PR #11792 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/tr/docs/tutorial/request-forms.md
的土耳其语翻译。PR #11553 by @hasansezertasan。 - 🌐 添加
docs/pt/docs/reference/exceptions.md
的葡萄牙语翻译。PR #11834 by @lucasbalieiro。 - 🌐 添加
docs/pt/docs/tutorial/dependencies/global-dependencies.md
的葡萄牙语翻译。PR #11826 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/pt/docs/how-to/general.md
的葡萄牙语翻译。PR #11825 by @lucasbalieiro。 - 🌐 添加
docs/pt/docs/advanced/async-tests.md
的葡萄牙语翻译。PR #11808 by @ceb10n。 - 🌐 添加
docs/uk/docs/tutorial/first-steps.md
的乌克兰语翻译。PR #11809 by @vkhoroshchak。 - 🌐 添加
docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-operators.md
的葡萄牙语翻译。PR #11804 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/zh/docs/fastapi-cli.md
的中文翻译。PR #11786 by @logan2d5。 - 🌐 添加
docs/pt/docs/advanced/openapi-webhooks.md
的葡萄牙语翻译。PR #11791 by @ceb10n。 - 🌐 更新
docs/tutorial/security/oauth2-jwt.md
的中文翻译。PR #11781 by @logan2d5。 - 📝 修复法语翻译
docs/fr/docs/async.md
中缺少的图片。PR #11787 by @pe-brian。 - 🌐 添加
docs/pt/docs/advanced/advanced-dependencies.md
的葡萄牙语翻译。PR #11775 by @ceb10n。 - 🌐 添加
docs/pt/docs/tutorial/dependencies/classes-as-dependencies.md
的葡萄牙语翻译。PR #11768 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/pt/docs/advanced/additional-status-codes.md
的葡萄牙语翻译。PR #11753 by @ceb10n。 - 🌐 添加
docs/pt/docs/tutorial/dependencies/index.md
的葡萄牙语翻译。PR #11757 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/pt/docs/advanced/settings.md
的葡萄牙语翻译。PR #11739 by @Joao-Pedro-P-Holanda。 - 🌐 添加
docs/fr/docs/learn/index.md
的法语翻译。PR #11712 by @benjaminvandammeholberton。 - 🌐 添加
docs/pt/docs/how-to/index.md
的葡萄牙语翻译。PR #11731 by @vhsenna。 - 🌐 添加
docs/pt/docs/advanced/additional-responses.md
的葡萄牙语翻译。PR #11736 by @ceb10n。 - 🌐 添加
docs/pt/docs/advanced/benchmarks.md
的葡萄牙语翻译。PR #11713 by @ceb10n。 - 🌐 修复
docs/ko/docs/tutorial/response-status-code.md
的韩语翻译。PR #11718 by @nayeonkinn。 - 🌐 添加
docs/ko/docs/tutorial/extra-data-types.md
的韩语翻译。PR #11711 by @nayeonkinn。 - 🌐 修复
docs/ko/docs/tutorial/body-nested-models.md
的韩语翻译。PR #11710 by @nayeonkinn。 - 🌐 添加
docs/pt/docs/advanced/fastapi-cli.md
的葡萄牙语翻译。PR #11641 by @ayr-ton。 - 🌐 添加
docs/zh-hant/docs/fastapi-people.md
的繁体中文翻译。PR #11639 by @hsuanchi。 - 🌐 添加
docs/tr/docs/advanced/index.md
的土耳其语翻译。PR #11606 by @hasansezertasan。 - 🌐 添加
docs/tr/docs/deployment/cloud.md
的土耳其语翻译。PR #11610 by @hasansezertasan。 - 🌐 添加
docs/tr/docs/advanced/security/index.md
的土耳其语翻译。PR #11609 by @hasansezertasan。 - 🌐 为
docs/tr/docs/advanced/testing-websockets.md
添加土耳其语翻译。PR #11608 由 @hasansezertasan提交。 - 🌐 为
docs/tr/docs/how-to/general.md
添加土耳其语翻译。PR #11607 由 @hasansezertasan提交。 - 🌐 更新
docs/zh/docs/advanced/templates.md
的中文翻译。PR #11620 由 @chaoless提交。 - 🌐 为
docs/tr/docs/deployment/index.md
添加土耳其语翻译。PR #11605 由 @hasansezertasan提交。 - 🌐 为
docs/tr/docs/tutorial/static-files.md
添加土耳其语翻译。PR #11599 由 @hasansezertasan提交。 - 🌐 为
docs/pl/docs/fastapi-people.md
进行波兰语翻译润色。PR #10196 由 @isulim提交。 - 🌐 为
docs/tr/docs/advanced/wsgi.md
添加土耳其语翻译。PR #11575 由 @hasansezertasan提交。 - 🌐 为
docs/tr/docs/tutorial/cookie-params.md
添加土耳其语翻译。PR #11561 由 @hasansezertasan提交。 - 🌐 为
docs/ru/docs/about/index.md
添加俄语翻译。PR #10961 由 @s111d提交。 - 🌐 更新
docs/zh/docs/tutorial/sql-databases.md
的中文翻译。PR #11539 由 @chaoless提交。 - 🌐 为
docs/zh/docs/how-to/configure-swagger-ui.md
添加中文翻译。PR #11501 由 @Lucas-lyh提交。 - 🌐 更新
/docs/advanced/security/http-basic-auth.md
的中文翻译。PR #11512 由 @nick-cjyx9提交。
内部¶
- ♻️ 简化内部文档脚本。PR #11777 由 @gitworkflows提交。
- 🔧 更新赞助商:添加 Fine。PR #11784 由 @tiangolo提交。
- 🔧 微调赞助商:Kong URL。PR #11765 由 @tiangolo提交。
- 🔧 微调赞助商:Kong URL。PR #11764 由 @tiangolo提交。
- 🔧 更新赞助商,添加 Stainless。PR #11763 由 @tiangolo提交。
- 🔧 更新赞助商,添加 Zuplo。PR #11729 由 @tiangolo提交。
- 🔧 更新赞助商链接:Coherence。PR #11730 由 @tiangolo提交。
- 👥 更新 FastAPI 人员。PR #11669 由 @tiangolo提交。
- 🔧 添加赞助商 Kong。PR #11662 由 @tiangolo提交。
- 👷 更新 Smokeshow,修复同步下载工件和 smokeshow 配置。PR #11563 由 @tiangolo提交。
- 👷 更新 Smokeshow 下载工件 GitHub Action。PR #11562 由 @tiangolo提交。
- 👷 更新 GitHub Actions 以将工件下载并上传到 v4,用于文档和覆盖率。PR #11550 由 @tamird提交。
- 👷 微调 CI 以进行测试重新分发,为 slim 添加所需的 env 变量。PR #11549 由 @tiangolo提交。
- 👥 更新 FastAPI 人员。PR #11511 由 @tiangolo提交。
0.111.0¶
功能¶
- ✨ 添加 FastAPI CLI,新的
fastapi
命令。PR #11522 由 @tiangolo提交。- 新文档:FastAPI CLI。
使用以下命令尝试:
$ 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]
和fastapi
,默认包含相同的standard
额外功能。PR #11503 由 @tiangolo提交。
0.110.3¶
文档¶
- 📝 更新对 Python 版本的引用,FastAPI 支持所有当前版本,无需明确指定版本。PR #11496 由 @tiangolo提交。
- ✏️ 修复
fastapi/security/api_key.py
中的错别字。PR #11481 由 @ch33zer提交。 - ✏️ 修复
security/http.py
中的错别字。PR #11455 由 @omarmoo5提交。
翻译¶
- 🌐 为
docs/zh-hant/benchmarks.md
添加繁体中文翻译。PR #11484 由 @KNChiu提交。 - 🌐 更新
docs/zh/docs/fastapi-people.md
的中文翻译。PR #11476 由 @billzhong提交。 - 🌐 为
docs/zh/docs/how-to/index.md
和docs/zh/docs/how-to/general.md
添加中文翻译。PR #11443 由 @billzhong提交。 - 🌐 为 cookie-params
docs/es/docs/tutorial/cookie-params.md
添加西班牙语翻译。PR #11410 由 @fabianfalon提交。
内部¶
- ⬆ 将 mkdocstrings[python] 从 0.23.0 升级到 0.24.3。PR #11469 由 @dependabot[bot]提交。
- 🔨 更新内部脚本并删除未使用的脚本。PR #11499 由 @tiangolo提交。
- 🔧 将内部构建从 Hatch 迁移到 PDM。PR #11498 由 @tiangolo提交。
- ⬆️ 升级 MkDocs Material 并重新启用卡片。PR #11466 由 @tiangolo提交。
- ⬆ 将 pillow 从 10.2.0 升级到 10.3.0。PR #11403 由 @dependabot[bot]提交。
- 🔧 取消对 dependabot 更新的分组。PR #11465 由 @tiangolo提交。
0.110.2¶
修复¶
- 🐛 修复对具有列表类型查询参数的支持,处理 JSON 编码 Pydantic
UndefinedType
。PR #9929 由 @arjwilliams提交。
重构¶
- ♻️ 简化
fastapi/openapi/models.py
中 OpenAPI 模型中的 Pydantic 配置。PR #10886 由 @JoeTanto2提交。 - ✨ 添加对 Pydantic 2.7 中新的已弃用 Field 参数的支持,从验证错误响应中删除 URL。PR #11461 由 @tiangolo提交。
文档¶
- 📝 修复
docs_src/extra_data_types
下示例中的类型。PR #10535 由 @nilslindemann提交。 - 📝 更新对 UJSON 的引用。PR #11464 由 @tiangolo提交。
- 📝 微调文档和翻译链接、错别字、格式。PR #11389 由 @nilslindemann提交。
- 📝 修复
docs/es/docs/async.md
中的错别字。PR #11400 由 @fabianfalon提交。 - 📝 更新 OpenAPI 客户端生成文档以使用
@hey-api/openapi-ts
。PR #11339 由 @jordanshatford提交。
翻译¶
- 🌐 更新
docs/zh/docs/index.html
的中文翻译。PR #11430 由 @waketzheng提交。 - 🌐 为
docs/ru/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
添加俄语翻译。PR #11411 由 @anton2yakovlev提交。 - 🌐 为
learn/index.md
resources/index.md
help/index.md
about/index.md
添加葡萄牙语翻译。PR #10807 由 @nazarepiedady提交。 - 🌐 更新部署文档的俄语翻译。PR #11271 由 @Lufa1u提交。
- 🌐 为
docs/bn/docs/python-types.md
添加孟加拉语翻译。PR #11376 由 @imtiaz101325提交。 - 🌐 为
docs/ko/docs/tutorial/security/simple-oauth2.md
添加韩语翻译。PR #5744 由 @KdHyeon0661提交。 - 🌐 为
docs/ko/docs/help-fastapi.md
添加韩语翻译。PR #4139 由 @kty4119提交。 - 🌐 为
docs/ko/docs/advanced/events.md
添加韩语翻译。PR #5087 由 @pers0n4提交。 - 🌐 为
docs/ja/docs/tutorial/path-operation-configuration.md
添加日语翻译。PR #1954 由 @SwftAlpc提交。 - 🌐 为
docs/ja/docs/tutorial/request-forms-and-files.md
添加日语翻译。PR #1946 由 @SwftAlpc提交。 - 🌐 为
docs/ru/docs/tutorial/dependencies/dependencies-with-yield.md
添加俄语翻译。PR #10532 由 @AlertRED提交。 - 🌐 为
docs/ko/docs/tutorial/debugging.md
添加韩语翻译。PR #5695 由 @JungWooGeon提交。
内部¶
0.110.1¶
修复¶
重构¶
- ♻️ 更新 mypy。PR #11049 由 @k0t3n提交。
- ♻️ 使用 f-strings 简化
fastapi/applications.py
中的字符串格式。PR #11335 由 @igeni提交。
升级¶
文档¶
- 📝 微调文档和翻译链接,并删除旧的文档翻译。PR #11381 由 @tiangolo提交。
- ✏️ 修复
fastapi/security/oauth2.py
中的错别字。PR #11368 由 @shandongbinzhou提交。 - 📝 更新指向 Pydantic 文档的链接,使其指向新的网站。PR #11328 由 @alejsdev提交。
- ✏️ 修复
docs/en/docs/tutorial/extra-models.md
中的错别字。PR #11329 由 @alejsdev提交。 - 📝 更新
project-generation.md
。PR #11326 由 @alejsdev提交。 - 📝 更新外部链接。PR #11327 由 @alejsdev提交。
- 🔥 从其他 i18n 页面中移除指向 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/de/docs/tutorial/response-status-code.md
添加德语翻译。PR #10357 by @nilslindemann. - 🌐 更新
docs/zh/docs/tutorial/query-params.md
的中文翻译。PR #3480 by @jaystone776. - 🌐 更新
docs/zh/docs/tutorial/body.md
的中文翻译。PR #3481 by @jaystone776. - 🌐 更新
docs/zh/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/ja/docs/tutorial/metadata.md
添加日语翻译。PR #2667 by @tokusumi. - 🌐 为
docs/de/docs/contributing.md
添加德语翻译。PR #10487 by @nilslindemann. - 🌐 更新
docs/ja/docs/tutorial/query-params.md
的日语翻译。PR #10808 by @urushio. - 🌐 更新
docs/zh/docs/tutorial/security/get-current-user.md
的中文翻译。PR #3842 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/openapi-callbacks.md
添加中文翻译。PR #3825 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/extending-openapi.md
添加中文翻译。PR #3823 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/testing-dependencies.md
添加中文翻译。PR #3819 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/custom-request-and-route.md
添加中文翻译。PR #3816 by @jaystone776. - 🌐 为
docs/zh/docs/external-links.md
添加中文翻译。PR #3833 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/templates.md
添加中文翻译。PR #3812 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/sub-applications.md
添加中文翻译。PR #3811 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/async-sql-databases.md
添加中文翻译。PR #3805 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/middleware.md
添加中文翻译。PR #3804 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/dataclasses.md
添加中文翻译。PR #3803 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/using-request-directly.md
添加中文翻译。PR #3802 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/security/http-basic-auth.md
添加中文翻译。PR #3801 by @jaystone776. - 🌐 为
docs/zh/docs/advanced/security/oauth2-scopes.md
添加中文翻译。PR #3800 by @jaystone776. - 🌐 更新
docs/zh/docs/tutorial/cookie-params.md
的中文翻译。PR #3486 by @jaystone776. - 🌐 更新
docs/zh/docs/tutorial/header-params.md
的中文翻译。PR #3487 by @jaystone776. - 🌐 更新
docs/tutorial/response-status-code.md
的中文翻译。PR #3498 by @jaystone776. - 🌐 为
docs/de/docs/tutorial/security/first-steps.md
添加德语翻译。PR #10432 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/events.md
添加德语翻译。PR #10693 by @nilslindemann. - 🌐 为
docs/de/docs/deployment/cloud.md
添加德语翻译。PR #10746 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/behind-a-proxy.md
添加德语翻译。PR #10675 by @nilslindemann. - 🌐 为
docs/de/docs/help-fastapi.md
添加德语翻译。PR #10455 by @nilslindemann. - 🌐 更新
docs/de/docs/python-types.md
的德语翻译。PR #10287 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/path-params.md
添加德语翻译。PR #10290 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/handling-errors.md
添加德语翻译。PR #10379 by @nilslindemann. - 🌐 更新
docs/de/docs/index.md
的德语翻译。PR #10283 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/security/http-basic-auth.md
添加德语翻译。PR #10651 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/bigger-applications.md
添加德语翻译。PR #10554 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/path-operation-advanced-configuration.md
添加德语翻译。PR #10612 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/static-files.md
添加德语翻译。PR #10584 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/security/oauth2-jwt.md
添加德语翻译。PR #10522 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/response-model.md
添加德语翻译。PR #10345 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/extra-models.md
添加德语翻译。PR #10351 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/body-updates.md
添加德语翻译。PR #10396 by @nilslindemann. - 🌐 为
docs/de/docs/alternatives.md
添加德语翻译。PR #10855 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/templates.md
添加德语翻译。PR #10678 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/security/oauth2-scopes.md
添加德语翻译。PR #10643 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/async-tests.md
添加德语翻译。PR #10708 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/metadata.md
添加德语翻译。PR #10581 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/testing.md
添加德语翻译。PR #10586 by @nilslindemann. - 🌐 为
docs/de/docs/tutorial/schema-extra-example.md
添加德语翻译。PR #10597 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/index.md
添加德语翻译。PR #10611 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/response-directly.md
添加德语翻译。PR #10618 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/additional-responses.md
添加德语翻译。PR #10626 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/response-cookies.md
添加德语翻译。PR #10627 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/response-headers.md
添加德语翻译。PR #10628 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/response-change-status-code.md
添加德语翻译。PR #10632 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/advanced-dependencies.md
添加德语翻译。PR #10633 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/security/index.md
添加德语翻译。PR #10635 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/using-request-directly.md
添加德语翻译。PR #10653 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/dataclasses.md
添加德语翻译。PR #10667 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/middleware.md
添加德语翻译。PR #10668 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/sub-applications.md
添加德语翻译。PR #10671 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/websockets.md
添加德语翻译。PR #10687 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/testing-websockets.md
添加德语翻译。PR #10703 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/testing-events.md
添加德语翻译。PR #10704 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/testing-dependencies.md
添加德语翻译。PR #10706 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/openapi-callbacks.md
添加德语翻译。PR #10710 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/settings.md
添加德语翻译。PR #10709 by @nilslindemann. - 🌐 为
docs/de/docs/advanced/wsgi.md
添加德语翻译。PR #10713 by @nilslindemann. - 🌐 为
docs/de/docs/deployment/index.md
添加德语翻译。PR #10733 by @nilslindemann. - 🌐 为
docs/de/docs/deployment/https.md
添加德语翻译。PR #10737 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/deployment/manually.md
添加德语翻译。PR #10738 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/deployment/concepts.md
添加德语翻译。PR #10744 由 @nilslindemann 提交。 - 🌐 更新
docs/de/docs/features.md
的德语翻译。PR #10284 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/deployment/server-workers.md
添加德语翻译。PR #10747 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/deployment/docker.md
添加德语翻译。PR #10759 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/index.md
添加德语翻译。PR #10769 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/general.md
添加德语翻译。PR #10770 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/graphql.md
添加德语翻译。PR #10788 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/custom-request-and-route.md
添加德语翻译。PR #10789 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/conditional-openapi.md
添加德语翻译。PR #10790 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/separate-openapi-schemas.md
添加德语翻译。PR #10796 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/configure-swagger-ui.md
添加德语翻译。PR #10804 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/how-to/custom-docs-ui-assets.md
添加德语翻译。PR #10803 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/parameters.md
添加德语翻译。PR #10814 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/status.md
添加德语翻译。PR #10815 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/uploadfile.md
添加德语翻译。PR #10816 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/exceptions.md
添加德语翻译。PR #10817 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/dependencies.md
添加德语翻译。PR #10818 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/apirouter.md
添加德语翻译。PR #10819 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/websockets.md
添加德语翻译。PR #10822 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/httpconnection.md
添加德语翻译。PR #10823 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/response.md
添加德语翻译。PR #10824 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/middleware.md
添加德语翻译。PR #10837 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/openapi/*.md
添加德语翻译。PR #10838 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/security/index.md
添加德语翻译。PR #10839 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/staticfiles.md
添加德语翻译。PR #10841 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/testclient.md
添加德语翻译。PR #10843 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/project-generation.md
添加德语翻译。PR #10851 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/history-design-future.md
添加德语翻译。PR #10865 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/dependencies-with-yield.md
添加德语翻译。PR #10422 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/global-dependencies.md
添加德语翻译。PR #10420 由 @nilslindemann 提交。 - 🌐 更新
docs/de/docs/fastapi-people.md
的德语翻译。PR #10285 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/sub-dependencies.md
添加德语翻译。PR #10409 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/security/index.md
添加德语翻译。PR #10429 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
添加德语翻译。PR #10411 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/extra-data-types.md
添加德语翻译。PR #10534 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/security/simple-oauth2.md
添加德语翻译。PR #10504 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/security/get-current-user.md
添加德语翻译。PR #10439 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/request-forms-and-files.md
添加德语翻译。PR #10368 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/encoder.md
添加德语翻译。PR #10385 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/request-forms.md
添加德语翻译。PR #10361 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/deployment/versions.md
添加德语翻译。PR #10491 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/async.md
添加德语翻译。PR #10449 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/cookie-params.md
添加德语翻译。PR #10323 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/classes-as-dependencies.md
添加德语翻译。PR #10407 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/dependencies/index.md
添加德语翻译。PR #10399 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/header-params.md
添加德语翻译。PR #10326 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/path-params-numeric-validations.md
添加德语翻译。PR #10307 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/query-params-str-validations.md
添加德语翻译。PR #10304 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/request-files.md
添加德语翻译。PR #10364 由 @nilslindemann 提交。 - :globe_with_meridians: 为
docs/pt/docs/advanced/templates.md
添加葡萄牙语翻译。PR #11338 由 @SamuelBFavarin 提交。 - 🌐 为
docs/bn/docs/learn/index.md
添加孟加拉语翻译。PR #11337 由 @imtiaz101325 提交。 - 🌐 修复
docs/ko/docs/index.md
的韩语翻译。PR #11296 由 @choi-haram 提交。 - 🌐 为
docs/ko/docs/about/index.md
添加韩语翻译。PR #11299 由 @choi-haram 提交。 - 🌐 为
docs/ko/docs/advanced/index.md
添加韩语翻译。PR #9613 由 @ElliottLarsen 提交。 - 🌐 为
docs/de/docs/how-to/extending-openapi.md
添加德语翻译。PR #10794 由 @nilslindemann 提交。 - 🌐 更新
docs/zh/docs/tutorial/metadata.md
的中文翻译。PR #11286 由 @jackleeio 提交。 - 🌐 更新
docs/zh/docs/contributing.md
的中文翻译。PR #10887 由 @Aruelius 提交。 - 🌐 为
docs/az/docs/fastapi-people.md
添加阿塞拜疆语翻译。PR #11195 由 @vusallyv 提交。 - 🌐 为
docs/ru/docs/tutorial/dependencies/index.md
添加俄语翻译。PR #11223 由 @kohiry 提交。 - 🌐 更新
docs/zh/docs/tutorial/query-params.md
的中文翻译。PR #11242 由 @jackleeio 提交。 - 🌐 为
docs/az/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-markdownextradata-plugin 替换为 mkdocs-macros-plugin。PR #11383 由 @tiangolo 提交。
- 👷 在 MkDocs Material 中处理问题期间,禁用 MkDocs 内部人员社交插件。PR #11373 由 @tiangolo 提交。
- 👷 修复安装和使用 MkDocs 内部人员版本的逻辑。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¶
重大变更¶
- 🐛 修复内部服务器错误时未处理的内存增长问题,使用
yield
和except
重构依赖项,以要求像普通 Python 一样重新引发异常。PR #11191 由 @tiangolo 提交。- 如果您使用了带有
yield
的依赖项,在这些依赖项中使用了except
,并且没有重新引发异常,则这是一个(并且只是轻微的)重大更改。 - 这由 @rushilsrivastava 在内部报告为内存泄漏,当服务器出现未处理的异常导致内部服务器错误时,在此之前分配的内存将不会释放。
- 阅读新的文档:带有
yield
和except
的依赖项。
- 如果您使用了带有
简而言之,如果您有如下所示的依赖项
def my_dep():
try:
yield
except SomeException:
pass
现在您需要确保在except
之后重新引发异常,就像在普通 Python 中一样
def my_dep():
try:
yield
except SomeException:
raise
文档¶
- ✏️ 修复
docs/ko/docs/
中的小错误。PR #11126 由 @KaniKim 提交。 - ✏️ 修复
fastapi/applications.py
中的小错误。PR #11099 由 @JacobHayes 提交。
翻译¶
- 🌐 为
docs/de/docs/reference/background.md
添加德语翻译。PR #10820 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/templating.md
添加德语翻译。PR #10842 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/external-links.md
添加德语翻译。PR #10852 由 @nilslindemann 提交。 - 🌐 更新
docs/tr/docs/tutorial/query-params.md
的土耳其语翻译。PR #11162 由 @hasansezertasan 提交。 - 🌐 为
docs/de/docs/reference/encoders.md
添加德语翻译。PR #10840 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/responses.md
添加德语翻译。PR #10825 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/reference/request.md
添加德语翻译。PR #10821 由 @nilslindemann 提交。 - 🌐 为
docs/tr/docs/tutorial/query-params.md
添加土耳其语翻译。PR #11078 由 @emrhnsyts 提交。 - 🌐 为
docs/de/docs/reference/fastapi.md
添加德语翻译。PR #10813 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/newsletter.md
添加德语翻译。PR #10853 由 @nilslindemann 提交。 - 🌐 为
docs/zh-hant/docs/learn/index.md
添加繁体中文翻译。PR #11142 由 @hsuanchi 提交。 - 🌐 为
/docs/ko/docs/tutorial/dependencies/global-dependencies.md
添加韩语翻译。PR #11123 由 @riroan 提交。 - 🌐 为
/docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
添加韩语翻译。PR #11124 由 @riroan 提交。 - 🌐 为
/docs/ko/docs/tutorial/schema-extra-example.md
添加韩语翻译。PR #11121 由 @KaniKim 提交。 - 🌐 为
/docs/ko/docs/tutorial/body-fields.md
添加韩语翻译。PR #11112 由 @KaniKim 提交。 - 🌐 为
/docs/ko/docs/tutorial/cookie-params.md
添加韩语翻译。PR #11118 由 @riroan 提交。 - 🌐 更新
/docs/ko/docs/dependencies/index.md
的韩语翻译。PR #11114 由 @KaniKim 提交。 - 🌐 更新
/docs/ko/docs/deployment/docker.md
的韩语翻译。PR #11113 由 @KaniKim 提交。 - 🌐 更新
docs/tr/docs/tutorial/first-steps.md
的土耳其语翻译。PR #11094 由 @hasansezertasan 提交。 - 🌐 为
docs/es/docs/advanced/security/index.md
添加西班牙语翻译。PR #2278 由 @Xaraxx 提交。 - 🌐 为
docs/es/docs/advanced/response-headers.md
添加西班牙语翻译。PR #2276 由 @Xaraxx 提交。 - 🌐 为
docs/es/docs/deployment/index.md
和~/deployment/versions.md
添加西班牙语翻译。PR #9669 由 @pabloperezmoya 提交。 - 🌐 为
docs/es/docs/benchmarks.md
添加西班牙语翻译。PR #10928 由 @pablocm83 提交。 - 🌐 为
docs/es/docs/advanced/response-change-status-code.md
添加西班牙语翻译。PR #11100 由 @alejsdev 提交。
0.109.2¶
升级¶
翻译¶
内部¶
0.109.1¶
安全修复¶
- ⬆️ 将
python-multipart
的最低版本升级到>=0.0.7
以修复在使用带有 ReDos 攻击的表单数据时的漏洞。您也可以简单地升级python-multipart
。
在公告:Content-Type 标头 ReDoS中了解更多信息。
功能¶
重构¶
- ✅ 重构测试以生成重复的操作 ID,以与运行 FastAPI 测试套件的其他工具兼容。PR #10876 由 @emmettbutler 提交。
- ♻️ 在
fastapi/utils.py
中使用 f-字符串简化字符串格式。PR #10576 由 @eukub 提交。 - 🔧 修复 Ruff 配置意外启用和禁用 mccabe 复杂度检查的问题。PR #10893 由 @jiridanek 提交。
- ✅ 在 Starlette 中修复后,重新启用
tests/test_tutorial/test_header_params/test_tutorial003.py
中的测试。PR #10904 由 @ooknimm 提交。
文档¶
- 📝 调整
help-fastapi.md
中的措辞。PR #11040 由 @tiangolo 提交。 - 📝 调整代理后面文档的措辞。PR #11038 由 @tiangolo 提交。
- 📝 添加外部链接:将 SQLAlchemy 添加到 FastAPI 的 10 个技巧。PR #11036 由 @Donnype 提交。
- 📝 添加外部链接:关于从 Flask 迁移到 FastAPI 反之亦然的技巧。PR #11029 由 @jtemporal 提交。
- 📝 弃用旧教程:Peewee、Couchbase、encode/databases。PR #10979 由 @tiangolo 提交。
- ✏️ 修复
fastapi/security/oauth2.py
中的错别字。PR #10972 由 @RafalSkolasinski 提交。 - 📝 更新
docs/en/docs/tutorial/handling-errors.md
中的HTTPException
详细信息。PR #5418 由 @papb 提交。 - ✏️ 对
docs/de/docs/tutorial/first-steps.md
进行了一些调整。PR #10959 由 @nilslindemann 提交。 - ✏️ 修复
docs/en/docs/advanced/async-tests.md
中的链接。PR #10960 由 @nilslindemann 提交。 - ✏️ 修复西班牙语文档的错别字。PR #10957 由 @jlopezlira 提交。
- 📝 添加关于生命周期函数和与事件向后兼容性的警告。PR #10734 由 @jacob-indigo 提交。
- ✏️ 修复几种语言中
docs/tutorial/sql-databases.md
中损坏的链接。PR #10716 由 @theoohoho 提交。 - ✏️ 从
external_links.yml
中删除损坏的链接。PR #10943 由 @Torabek 提交。 - 📝 使用有关
url_for
的更多信息更新模板文档。PR #5937 由 @EzzEddin 提交。 - 📝 更新安全文档中 Token 模型的使用。PR #9313 由 @piotrszacilowski 提交。
- ✏️ 更新
docs/en/docs/tutorial/bigger-applications.md
中突出显示的行。PR #5490 由 @papb 提交。 - 📝 添加外部链接:探索如何有效地将 JWT 与 FastAPI 结合使用。PR #10212 由 @aanchlia 提交。
- 📝 为
docs/en/docs/tutorial/static-files.md
添加超链接。PR #10243 由 @hungtsetse 提交。 - 📝 添加外部链接:使用 OpenTelemetry 为 FastAPI 服务添加跟踪并以 Grafana Tempo 中发送/显示跟踪。PR #9440 由 @softwarebloat 提交。
- 📝 审查和改写
en/docs/contributing.md
。PR #10480 由 @nilslindemann 提交。 - 📝 添加外部链接:使用 FastAPI 和 Evidently 进行机器学习服务和监控。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/es/docs/external-links.md
添加西班牙语翻译。PR #10933 由 @pablocm83 提交。 - 🌐 更新
docs/ko/docs/tutorial/first-steps.md
、docs/ko/docs/tutorial/index.md
、docs/ko/docs/tutorial/path-params.md
和docs/ko/docs/tutorial/query-params.md
的韩语翻译。PR #4218 由 @SnowSuno 提交。 - 🌐 为
docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
添加中文翻译。PR #10870 由 @zhiquanchi 提交。 - 🌐 为
docs/zh/docs/deployment/concepts.md
添加中文翻译。PR #10282 由 @xzmeng 提交。 - 🌐 为
docs/az/docs/index.md
添加阿塞拜疆语翻译。PR #11047 由 @aykhans 提交。 - 🌐 为
docs/ko/docs/tutorial/middleware.md
添加韩语翻译。PR #2829 由 @JeongHyeongKim 提交。 - 🌐 为
docs/de/docs/tutorial/body-nested-models.md
添加德语翻译。PR #10313 由 @nilslindemann 提交。 - 🌐 为
docs/fa/docs/tutorial/middleware.md
添加波斯语翻译。PR #9695 由 @mojtabapaso 提交。 - 🌐 更新
docs/fa/docs/index.md
的波斯语翻译。PR #10216 由 @theonlykingpin 提交。 - 🌐 为
docs/de/docs/tutorial/body-fields.md
添加德语翻译。PR #10310 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/body.md
添加德语翻译。PR #10295 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/body-multiple-params.md
添加德语翻译。PR #10308 由 @nilslindemann 提交。 - 🌐 为
docs/ja/docs/tutorial/security/get-current-user.md
添加日语翻译。PR #2681 由 @sh0nk 提交。 - 🌐 为
docs/zh/docs/advanced/advanced-dependencies.md
添加中文翻译。PR #3798 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/advanced/events.md
添加中文翻译。PR #3815 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/advanced/behind-a-proxy.md
添加中文翻译。PR #3820 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/advanced/testing-events.md
添加中文翻译。PR #3818 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/advanced/testing-websockets.md
添加中文翻译。PR #3817 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/advanced/testing-database.md
添加中文翻译。PR #3821 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/deployment/deta.md
添加中文翻译。PR #3837 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/history-design-future.md
添加中文翻译。PR #3832 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/project-generation.md
添加中文翻译。PR #3831 由 @jaystone776 提交。 - 🌐 为
docs/zh/docs/deployment/docker.md
添加中文翻译。PR #10296 由 @xzmeng 提交。 - 🌐 更新
docs/es/docs/features.md
的西班牙语翻译。PR #10884 由 @pablocm83 提交。 - 🌐 为
docs/es/docs/newsletter.md
添加西班牙语翻译。PR #10922 由 @pablocm83 提交。 - 🌐 为
docs/ko/docs/tutorial/background-tasks.md
添加韩语翻译。PR #5910 由 @junah201 提交。 - :globe_with_meridians: 为
docs/tr/docs/alternatives.md
添加土耳其语翻译。PR #10502 由 @alperiox 提交。 - 🌐 为
docs/ko/docs/tutorial/dependencies/index.md
添加韩语翻译。PR #10989 由 @KaniKim 提交。 - 🌐 为
/docs/ko/docs/tutorial/body.md
添加韩语翻译。PR #11000 由 @KaniKim 提交。 - 🌐 为
docs/pt/docs/tutorial/schema-extra-example.md
添加葡萄牙语翻译。PR #4065 由 @luccasmmg 提交。 - 🌐 为
docs/tr/docs/history-design-future.md
添加土耳其语翻译。PR #11012 由 @hasansezertasan 提交。 - 🌐 为
docs/tr/docs/resources/index.md
添加土耳其语翻译。PR #11020 由 @hasansezertasan 提交。 - 🌐 为
docs/tr/docs/how-to/index.md
添加土耳其语翻译。PR #11021 由 @hasansezertasan 提交。 - 🌐 为
docs/de/docs/tutorial/query-params.md
添加德语翻译。PR #10293 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/benchmarks.md
添加德语翻译。PR #10866 由 @nilslindemann 提交。 - 🌐 为
docs/tr/docs/learn/index.md
添加土耳其语翻译。PR #11014 由 @hasansezertasan 提交。 - 🌐 为
docs/fa/docs/tutorial/security/index.md
添加波斯语翻译。PR #9945 由 @mojtabapaso 提交。 - 🌐 为
docs/tr/docs/help/index.md
添加土耳其语翻译。PR #11013 由 @hasansezertasan 提交。 - 🌐 为
docs/tr/docs/about/index.md
添加土耳其语翻译。PR #11006 由 @hasansezertasan 提交。 - 🌐 更新
docs/tr/docs/benchmarks.md
的土耳其语翻译。PR #11005 由 @hasansezertasan 提交。 - 🌐 为
docs/it/docs/index.md
添加意大利语翻译。PR #5233 由 @matteospanio 提交。 - 🌐 为
docs/ko/docs/help/index.md
添加韩语翻译。PR #10983 由 @KaniKim 提交。 - 🌐 为
docs/ko/docs/features.md
添加韩语翻译。PR #10976 由 @KaniKim 提交。 - 🌐 为
docs/ko/docs/tutorial/security/get-current-user.md
添加韩语翻译。PR #5737 由 @KdHyeon0661 提交。 - 🌐 为
docs/ru/docs/tutorial/security/first-steps.md
添加俄语翻译。PR #10541 由 @AlertRED 提交。 - 🌐 为
docs/ru/docs/tutorial/handling-errors.md
添加俄语翻译。PR #10375 由 @AlertRED 提交。 - 🌐 为
docs/ru/docs/tutorial/encoder.md
添加俄语翻译。PR #10374 由 @AlertRED 提交。 - 🌐 为
docs/ru/docs/tutorial/body-updates.md
添加俄语翻译。PR #10373 由 @AlertRED 提交。 - 🌐 俄语翻译:更新了
fastapi-people.md
。PR #10255 由 @NiKuma0 提交。 - 🌐 为
docs/ja/docs/tutorial/security/index.md
添加日语翻译。PR #5798 由 @3w36zj6 提交。 - 🌐 为
docs/de/docs/advanced/generate-clients.md
添加德语翻译。PR #10725 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/advanced/openapi-webhooks.md
添加德语翻译。PR #10712 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/advanced/custom-response.md
添加德语翻译。PR #10624 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/advanced/additional-status-codes.md
添加德语翻译。PR #10617 由 @nilslindemann 提交。 - 🌐 为
docs/de/docs/tutorial/middleware.md
添加德语翻译。PR #10391 由 @JohannesJungbluth 提交。 - 🌐 为简介文档添加德语翻译。PR #10497 由 @nilslindemann 提交。
- 🌐 为
docs/ja/docs/tutorial/encoder.md
添加日语翻译。PR #1955 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/extra-data-types.md
添加日语翻译。PR #1932 由 @SwftAlpc 提交。 - 🌐 为
docs/tr/docs/async.md
添加土耳其语翻译。PR #5191 由 @BilalAlpaslan 提交。 - 🌐 为
docs/tr/docs/project-generation.md
添加土耳其语翻译。PR #5192 由 @BilalAlpaslan 提交。 - 🌐 为
docs/ko/docs/deployment/docker.md
添加韩语翻译。PR #5657 由 @nearnear 提交。 - 🌐 为
docs/ko/docs/deployment/server-workers.md
添加韩语翻译。PR #4935 由 @jujumilk3 提交。 - 🌐 为
docs/ko/docs/deployment/index.md
添加韩语翻译。PR #4561 由 @jujumilk3 提交。 - 🌐 为
docs/ko/docs/tutorial/path-operation-configuration.md
添加韩语翻译。PR #3639 由 @jungsu-kwon 提交。 - 🌐 修改
zh
(繁体中文)的描述。PR #10889 由 @cherinyy 提交。 - 🌐 为
docs/ko/docs/tutorial/static-files.md
添加韩语翻译。PR #2957 由 @jeesang7 提交。 - 🌐 为
docs/ko/docs/tutorial/response-model.md
添加韩语翻译。PR #2766 由 @hard-coders 提交。 - 🌐 为
docs/ko/docs/tutorial/body-multiple-params.md
添加韩语翻译。PR #2461 由 @PandaHun 提交。 - 🌐 为
docs/ko/docs/tutorial/query-params-str-validations.md
添加韩语翻译。PR #2415 由 @hard-coders 提交。 - 🌐 为
docs/ko/docs/python-types.md
添加韩语翻译。PR #2267 由 @jrim 提交。 - 🌐 为
docs/ko/docs/tutorial/body-nested-models.md
添加韩语翻译。PR #2506 由 @hard-coders 提交。 - 🌐 为
docs/ko/docs/learn/index.md
添加韩语翻译。PR #10977 由 @KaniKim 提交。 - 🌐 初始化繁体中文翻译。PR #10505 由 @hsuanchi 提交。
- ✏️ 微调
docs/de/docs/tutorial/index.md
的德语翻译。PR #10962 由 @nilslindemann 提交。 - ✏️ 修复
docs/ko/docs/tutorial/path-params.md
中的拼写错误。PR #10758 由 @2chanhaeng 提交。 - 🌐 为
docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
添加日语翻译。PR #1961 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
添加日语翻译。PR #1960 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/dependencies/sub-dependencies.md
添加日语翻译。PR #1959 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/background-tasks.md
添加日语翻译。PR #2668 由 @tokusumi 提交。 - 🌐 为
docs/ja/docs/tutorial/dependencies/index.md
和docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md
添加日语翻译。PR #1958 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/response-model.md
添加日语翻译。PR #1938 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/body-multiple-params.md
添加日语翻译。PR #1903 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/path-params-numeric-validations.md
添加日语翻译。PR #1902 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/python-types.md
添加日语翻译。PR #1899 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/handling-errors.md
添加日语翻译。PR #1953 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/response-status-code.md
添加日语翻译。PR #1942 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/extra-models.md
添加日语翻译。PR #1941 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/schema-extra-example.md
添加日语翻译。PR #1931 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/body-nested-models.md
添加日语翻译。PR #1930 由 @SwftAlpc 提交。 - 🌐 为
docs/ja/docs/tutorial/body-fields.md
添加日语翻译。PR #1923 由 @SwftAlpc 提交。 - 🌐 为
docs/de/docs/tutorial/index.md
添加德语翻译。PR #9502 由 @fhabers21 提交。 - 🌐 为
docs/de/docs/tutorial/background-tasks.md
添加德语翻译。PR #10566 由 @nilslindemann 提交。 - ✏️ 修复
docs/ru/docs/index.md
中的错别字。PR #10672 由 @Delitel-WEB 提交。 - ✏️ 修复
docs/zh/docs/tutorial/extra-data-types.md
中的错别字。PR #10727 由 @HiemalBeryl 提交。 - 🌐 为
docs/ru/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 issue manager 中添加更改请求处理。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¶
特性¶
升级¶
文档¶
- ✏️ 修复
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.md
和docs/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 更新 SQL 数据库的示例源文件。PR #9508 由 @s-mustafa 提交。
- 📝 更新文档中有关主体部分的代码示例,在适当情况下将名称
create_item
替换为update_item
。PR #5913 由 @OttoAndrey 提交。 - ✏️ 修复带有 yield 的依赖项源示例中的错别字。PR #10847 由 @tiangolo 提交。
翻译¶
- 🌐 为
docs/bn/docs/index.md
添加孟加拉语翻译。PR #9177 由 @Fahad-Md-Kamal 提交。 - ✏️ 更新多种语言的
index.md
中的 Python 版本。PR #10711 由 @tamago3keran 提交。 - 🌐 为
docs/ru/docs/tutorial/request-forms-and-files.md
添加俄语翻译。PR #10347 由 @AlertRED 提交。 - 🌐 为
docs/uk/docs/index.md
添加乌克兰语翻译。PR #10362 由 @rostik1410 提交。 - ✏️ 更新
docs/ko/docs/index.md
中的 Python 版本。PR #10680 由 @Eeap 提交。 - 🌐 为
docs/fa/docs/features.md
添加波斯语翻译。PR #5887 由 @amirilf 提交。 - 🌐 为
docs/zh/docs/advanced/additional-responses.md
添加中文翻译。PR #10325 由 @ShuibeiC 提交。 - 🌐 修复俄语翻译中
docs/ru/docs/tutorial/background-tasks.md
、docs/ru/docs/tutorial/body-nested-models.md
、docs/ru/docs/tutorial/debugging.md
、docs/ru/docs/tutorial/testing.md
的错别字。PR #10311 由 @AlertRED 提交。 - 🌐 为
docs/ru/docs/tutorial/request-files.md
添加俄语翻译。PR #10332 由 @AlertRED 提交。 - 🌐 为
docs/zh/docs/deployment/server-workers.md
添加中文翻译。PR #10292 由 @xzmeng 提交。 - 🌐 为
docs/zh/docs/deployment/cloud.md
添加中文翻译。PR #10291 由 @xzmeng 提交。 - 🌐 为
docs/zh/docs/deployment/manually.md
添加中文翻译。PR #10279 由 @xzmeng 提交。 - 🌐 为
docs/zh/docs/deployment/https.md
添加中文翻译。PR #10277 由 @xzmeng 提交。 - 🌐 为
docs/zh/docs/deployment/index.md
添加中文翻译。PR #10275 由 @xzmeng 提交。 - 🌐 为
docs/de/docs/tutorial/first-steps.md
添加德语翻译。PR #9530 由 @fhabers21 提交。 - 🌐 更新
docs/tr/docs/index.md
的土耳其语翻译。PR #10444 由 @hasansezertasan 提交。 - 🌐 为
docs/zh/docs/learn/index.md
添加中文翻译。PR #10479 由 @KAZAMA-DREAM 提交。 - 🌐 为
docs/ru/docs/learn/index.md
添加俄语翻译。PR #10539 由 @AlertRED 提交。 - 🌐 更新中文翻译
docs/zh/docs/tutorial/sql-databases.md
中的 SQLAlchemy 指令。PR #9712 由 @Royc30ne 提交。 - 🌐 为
docs/tr/docs/external-links.md
添加土耳其语翻译。PR #10549 由 @hasansezertasan 提交。 - 🌐 为
docs/es/docs/learn/index.md
添加西班牙语翻译。PR #10885 由 @pablocm83提交。 - 🌐 为
docs/uk/docs/tutorial/body-fields.md
添加乌克兰语翻译。PR #10670 由 @ArtemKhymenko提交。 - 🌐 为
/docs/hu/docs/index.md
添加匈牙利语翻译。PR #10812 由 @takacs提交。 - 🌐 为
docs/tr/docs/newsletter.md
添加土耳其语翻译。PR #10550 由 @hasansezertasan提交。 - 🌐 为
docs/es/docs/help/index.md
添加西班牙语翻译。PR #10907 由 @pablocm83提交。 - 🌐 为
docs/es/docs/about/index.md
添加西班牙语翻译。PR #10908 由 @pablocm83提交。 - 🌐 为
docs/es/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¶
升级¶
文档¶
- 📝 添加文档:更新为生成客户端的OpenAPI的Node.js脚本替代方案。PR #10845 由 @alejsdev提交。
- 📝 重构“贡献”页面中的文档部分。PR #10844 由 @alejsdev提交。
0.106.0¶
重大更改¶
不再支持在后台任务中使用yield
从依赖项获取资源。
此更改支持新功能,请参阅以下内容。🤓
使用yield
、HTTPException
和后台任务的依赖项¶
现在,使用yield
的依赖项可以在yield
之后引发HTTPException
和其他异常。🎉
请在此处阅读新的文档:使用yield
和HTTPException
的依赖项。
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
的依赖项的执行。
功能¶
内部¶
0.105.0¶
功能¶
重构¶
文档¶
内部¶
- 🔧 更新赞助商,添加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提交。
- 📝 更新发行说明,移动和检查latest-changes。PR #10588 由 @tiangolo提交。
- 👷 升级latest-changes GitHub Action。PR #10587 由 @tiangolo提交。
0.104.1¶
修复¶
- 📌 临时将Swagger UI版本固定到5.9.0以处理导致其在5.9.1中崩溃的错误。PR #10529 由 @alejandraklachquin提交。
- 这并不是FastAPI中的错误,而是Swagger UI中的错误,但是固定版本将在Swagger UI端找到解决方案之前有效。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提交。 - 🔥 删除不必要的重复文档字符串。PR #10484 由 @tiangolo提交。
内部¶
- ✏️ 更新Pydantic链接到dotenv支持。PR #10511 由 @White-Mask提交。
- ✏️ 更新
docs/en/docs/async.md
和docs/zh/docs/async.md
中的链接,使其成为相对链接。PR #10498 由 @hasnatsajid提交。 - ✏️ 修复
docs/em/docs/async.md
中的链接。PR #10507 由 @hasnatsajid提交。 - ✏️ 修复
docs/em/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提交。 - 🐛 修复在钩子中覆盖MKDocs主题语言的问题。PR #10490 由 @tiangolo提交。
- 🔥 停止使用/关闭 Gitter 聊天。问题请移至 GitHub Discussions,非正式聊天请移至 Discord。PR #10485 by @tiangolo。
0.104.0¶
功能¶
- ✨ 使用 PEP 727 添加参考(代码 API)文档,为
BackgroundTasks
添加具有自定义文档字符串的子类,重构文档结构。PR #10392 by @tiangolo。新的文档位于 FastAPI 参考 - 代码 API。
升级¶
内部¶
- ⬆ 将 dawidd6/action-download-artifact 从 2.27.0 升级到 2.28.0。PR #10268 by @dependabot[bot]。
- ⬆ 将 actions/checkout 从 3 升级到 4。PR #10208 by @dependabot[bot]。
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.8.6 升级到 1.8.10。PR #10061 by @dependabot[bot]。
- 🔧 更新赞助商,更新 Bump.sh 镜像。PR #10381 by @tiangolo。
- 👥 更新 FastAPI 人员。PR #10363 by @tiangolo。
0.103.2¶
重构¶
翻译¶
- 🌐 为
docs/uk/docs/tutorial/extra-data-types.md
添加乌克兰语翻译。PR #10132 by @ArtemKhymenko。 - 🌐 修复
docs/fr/docs/advanced/path-operation-advanced-configuration.md
、docs/fr/docs/alternatives.md
、docs/fr/docs/async.md
、docs/fr/docs/features.md
、docs/fr/docs/help-fastapi.md
、docs/fr/docs/index.md
、docs/fr/docs/python-types.md
、docs/fr/docs/tutorial/body.md
、docs/fr/docs/tutorial/first-steps.md
、docs/fr/docs/tutorial/query-params.md
法语翻译中的错别字。PR #10154 by @s-rigaud。 - 🌐 为
docs/zh/docs/async.md
添加中文翻译。PR #5591 by @mkdir700。 - 🌐 更新
docs/tutorial/security/simple-oauth2.md
的中文翻译。PR #3844 by @jaystone776。 - 🌐 为
docs/ko/docs/deployment/cloud.md
添加韩语翻译。PR #10191 by @Sion99。 - 🌐 为
docs/ja/docs/deployment/https.md
添加日语翻译。PR #10298 by @tamtam-fitness。 - 🌐 修复
docs/ru/docs/tutorial/body-fields.md
俄语翻译中的错别字。PR #10224 by @AlertRED。 - 🌐 为
docs/pl/docs/help-fastapi.md
添加波兰语翻译。PR #10121 by @romabozhanovgithub。 - 🌐 为
docs/ru/docs/tutorial/header-params.md
添加俄语翻译。PR #10226 by @AlertRED。 - 🌐 为
docs/zh/docs/deployment/versions.md
添加中文翻译。PR #10276 by @xzmeng。
内部¶
- 🔧 更新赞助商,移除 Flint。PR #10349 by @tiangolo。
- 🔧 将标签“awaiting review”重命名为“awaiting-review”,以简化搜索查询。PR #10343 by @tiangolo。
- 🔧 更新赞助商,启用 Svix(恢复 #10228)。PR #10253 by @tiangolo。
- 🔧 更新赞助商,移除 Svix。PR #10228 by @tiangolo。
- 🔧 更新赞助商,添加 Bump.sh。PR #10227 by @tiangolo。
0.103.1¶
修复¶
文档¶
- ✏️ 修复文档中验证参数名称,从
regex
改为pattern
。PR #10085 by @pablodorrio。 - ✏️ 修复
docs/en/docs/deployment/server-workers.md
中的缩进格式。PR #10066 by @tamtam-fitness。 - ✏️ 修复教程中 Python 类型相关的 Pydantic 示例。PR #9961 by @rahulsalgare。
- ✏️ 修复
docs/en/docs/tutorial/extra-data-types.md
中指向 Pydantic 文档的链接。PR #10155 by @hasnatsajid。 - ✏️ 修复
docs/en/docs/tutorial/handling-errors.md
中的错别字。PR #10170 by @poupapaa。 - ✏️ 修复
docs/en/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
中的错别字。PR #10172 by @ragul-kachiappan。
翻译¶
- 🌐 移除
docs/pt/docs/tutorial/path-params.md
翻译中的重复行。PR #10126 by @LecoOliveira。 - 🌐 为
docs/yo/docs/index.md
添加约鲁巴语翻译。PR #10033 by @AfolabiOlaoluwa。 - 🌐 为
docs/uk/docs/python-types.md
添加乌克兰语翻译。PR #10080 by @rostik1410。 - 🌐 为
docs/vi/docs/tutorial/first-steps.md
和docs/vi/docs/tutorial/index.md
添加越南语翻译。PR #10088 by @magiskboy。 - 🌐 为
docs/uk/docs/alternatives.md
添加乌克兰语翻译。PR #10060 by @whysage。 - 🌐 为
docs/uk/docs/tutorial/index.md
添加乌克兰语翻译。PR #10079 by @rostik1410。 - ✏️ 修复
docs/en/docs/how-to/separate-openapi-schemas.md
和docs/en/docs/tutorial/schema-extra-example.md
中的错别字。PR #10189 by @xzmeng。 - 🌐 为
docs/zh/docs/advanced/generate-clients.md
添加中文翻译。PR #9883 by @funny-cat-happy。
重构¶
- ✏️ 修复
fastapi/applications.py
中注释中的错别字。PR #10045 by @AhsanSheraz。 - ✅ 为 OpenAPI 示例添加缺失的测试,该测试在覆盖率中丢失。PR #10188 by @tiangolo。
内部¶
0.103.0¶
功能¶
- ✨ 为所有 FastAPI 参数添加对
openapi_examples
的支持。PR #10152 by @tiangolo。- 新文档:OpenAPI 特定示例。
文档¶
0.102.0¶
功能¶
- ✨ 添加对使用 Pydantic v2 使用
separate_input_output_schemas=False
禁用 OpenAPI 中输入和输出 JSON 模式分离的支持。PR #10145 by @tiangolo。- 新文档 分离或不分离 OpenAPI 中输入和输出的模式。
- 此 PR 还包括用于为文档生成屏幕截图的新设置(内部工具)。
重构¶
文档¶
- 📝 添加新的文档部分,“如何操作 - 食谱”,将不必每个人都阅读的文档移动到“如何操作”部分。PR #10114 by @tiangolo。
- 📝 更新高级文档,添加指向赞助课程的链接。PR #10113 by @tiangolo。
- 📝 更新生成客户端的文档。PR #10112 by @tiangolo。
- 📝 微调 MkDocs 并添加重定向。PR #10111 by @tiangolo。
- 📝 重构云提供商的文档,包含指向赞助商的链接。PR #10110 by @tiangolo。
内部¶
0.101.1¶
修复¶
重构¶
- ✏️ 修复
fastapi/params.py
中弃用警告的错别字。PR #9854 by @russbiggs。 - ✏️ 修复
fastapi/concurrency.py
和fastapi/routing.py
中内部代码注释的错别字。PR #9590 by @ElliottLarsen。
文档¶
- ✏️ 修复发行说明中的错别字。PR #9835 by @francisbergin。
- 📝 添加外部文章:使用 FaunaDB 和 FastAPI 构建无服务器短信垃圾邮件分类器。PR #9847 by @adejumoridwan。
- 📝 修复
docs/en/docs/contributing.md
中的错别字。PR #9878 by @VicenteMerino。 - 📝 修复
docs/en/docs/tutorial/bigger-applications.md
中的代码高亮显示。PR #9806 by @theonlykingpin。
翻译¶
- 🌐 为
docs/ja/docs/deployment/concepts.md
添加日语翻译。PR #10062 由 @tamtam-fitness 提交。 - 🌐 为
docs/ja/docs/deployment/server-workers.md
添加日语翻译。PR #10064 由 @tamtam-fitness 提交。 - 🌐 更新
docs/ja/docs/deployment/docker.md
的日语翻译。PR #10073 由 @tamtam-fitness 提交。 - 🌐 为
docs/uk/docs/fastapi-people.md
添加乌克兰语翻译。PR #10059 由 @rostik1410 提交。 - 🌐 为
docs/uk/docs/tutorial/cookie-params.md
添加乌克兰语翻译。PR #10032 由 @rostik1410 提交。 - 🌐 为
docs/ru/docs/deployment/docker.md
添加俄语翻译。PR #9971 由 @Xewus 提交。 - 🌐 为
docs/vi/docs/python-types.md
添加越南语翻译。PR #10047 由 @magiskboy 提交。 - 🌐 为
docs/ru/docs/tutorial/dependencies/global-dependencies.md
添加俄语翻译。PR #9970 由 @dudyaosuplayer 提交。 - 🌐 为
docs/ur/docs/benchmarks.md
添加乌尔都语翻译。PR #9974 由 @AhsanSheraz 提交。
内部¶
- 🔧 添加赞助商 Porter。PR #10051 由 @tiangolo 提交。
- 🔧 更新赞助商,将 Jina 重新添加为青铜赞助商。PR #10050 由 @tiangolo 提交。
- ⬆ 将 mypy 从 1.4.0 升级到 1.4.1。PR #9756 由 @dependabot[bot] 提交。
- ⬆ 将 mkdocs-material 从 9.1.17 升级到 9.1.21。PR #9960 由 @dependabot[bot] 提交。
0.101.0¶
特性¶
- ✨ 启用 Pydantic 的序列化模式用于响应,添加对 Pydantic 的
computed_field
的支持,改进响应模型的 OpenAPI,正确处理必需属性,改进生成的客户端。PR #10011 由 @tiangolo 提交。
重构¶
- ✅ 修复测试以兼容 pydantic 2.1.1。PR #9943 由 @dmontagu 提交。
- ✅ 修复 Windows 上
jsonable_encoder
的测试错误。PR #9840 由 @iudeen 提交。
升级¶
翻译¶
- 🌐 为
docs/ru/docs/tutorial/security/index.md
添加俄语翻译。PR #9963 由 @eVery1337 提交。 - 🌐 删除关于缺少越南语翻译的注释。PR #9957 由 @tiangolo 提交。
内部¶
- 👷 添加 GitHub Actions 步骤,将上下文转储到调试外部故障。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¶
修复¶
文档¶
翻译¶
- 🌐 为
docs/uk/docs/tutorial/body.md
添加乌克兰语翻译。PR #4574 由 @ss-o-furda 提交。 - 🌐 为
docs/vi/docs/features.md
和docs/vi/docs/index.md
添加越南语翻译。PR #3006 由 @magiskboy 提交。 - 🌐 为
docs/ko/docs/async.md
添加韩语翻译。PR #4179 由 @NinaHwang 提交。 - 🌐 为
docs/zh/docs/tutorial/background-tasks.md
添加中文翻译。PR #9812 由 @wdh99 提交。 - 🌐 为
docs/fr/docs/tutorial/query-params-str-validations.md
添加法语翻译。PR #4075 由 @Smlep 提交。 - 🌐 为
docs/fr/docs/tutorial/index.md
添加法语翻译。PR #2234 由 @JulianMaurin 提交。 - 🌐 为
docs/fr/docs/contributing.md
添加法语翻译。PR #2132 由 @JulianMaurin 提交。 - 🌐 为
docs/fr/docs/benchmarks.md
添加法语翻译。PR #2155 由 @clemsau 提交。 - 🌐 使用新的源文件更新中文翻译。PR #9738 由 @mahone3297 提交。
- 🌐 为
docs/ru/docs/tutorial/request-forms.md
添加俄语翻译。PR #9841 由 @dedkot01 提交。 - 🌐 更新
docs/zh/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 版本 2 的 **核心** 使用 **Rust** 重写,并包含许多改进和功能,例如
- 改进的极端情况下的 **正确性**。
- 更 **安全** 的类型。
- 更好的 **性能** 和更低的 **能耗**。
- 更好的 **可扩展性**。
- 等等。
...所有这些都保持了 **相同的 Python API**。在大多数情况下,对于简单的模型,您只需升级 Pydantic 版本即可获得所有好处。🚀
在某些情况下,对于纯数据验证和处理,您可以获得 **20 倍** 或更高的性能提升。这意味着 2000% 或更多。🤯
当您使用 **FastAPI** 时,还有更多操作正在进行,处理请求和响应,处理依赖项,执行 **您自己的代码**,特别是 **等待网络**。但是您可能会仅仅通过升级就获得一些不错的性能提升。
此版本的重点是与 Pydantic v1 和 v2 的 **兼容性**,以确保您当前的应用程序继续运行。稍后将更多关注重构、正确性、代码改进,然后是 **性能** 改进。一些在 FastAPI 的 Beta 版本上运行基准测试的第三方早期 Beta 测试人员报告了 **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
来进行配置。- 您可以在以下文档中了解更多信息:声明请求示例数据。
- 内部类
Config
的属性schema_extra
已被新model_config
字典中的键json_schema_extra
替换。- 您可以在以下文档中了解更多信息:声明请求示例数据。
- 当您安装
"fastapi[all]"
时,它现在还包括pydantic-settings
- 用于设置管理。pydantic-extra-types
- 用于与 Pydantic 一起使用的额外类型。
-
现在 Pydantic Settings 是一个额外的可选包(包含在
"fastapi[all]"
中)。要使用设置,您现在应该导入from pydantic_settings import BaseSettings
而不是直接从pydantic
导入。- 您可以在以下文档中了解更多信息:设置和环境变量。
-
PR #9816 由 @tiangolo 提交,包含了在 beta 分支 (
main-pv2
) 上完成的所有工作(在多个 PR 中)。
0.99.1¶
修复¶
文档¶
0.99.0¶
特性¶
-
✨ 添加对 OpenAPI 3.1.0 的支持。PR #9770 由 @tiangolo 提交。
- 新增对Webhook文档的支持,请在此处阅读新文档:高级用户指南:OpenAPI Webhooks。
- 升级 OpenAPI 3.1.0,它使用 JSON Schema 2020-12。
- 将 Swagger UI 升级到 5.x.x 版本,该版本支持 OpenAPI 3.1.0。
- 更新了
Query()
、Cookie()
、Body()
等中的examples
字段,基于最新的 JSON Schema 和 OpenAPI。现在它接受示例列表,并且这些示例直接包含在 JSON Schema 中,而不是在外部。请在更新的文档中了解更多信息(包括历史技术细节):教程:声明请求示例数据。
-
✨ 在
jsonable_encoder
中添加对deque
对象及其子元素的支持。PR #9433 由 @cranium 提交。
文档¶
翻译¶
- 🌐 为
docs/fa/docs/advanced/sub-applications.md
添加波斯语翻译。PR #9692 由 @mojtabapaso 提交。 - 🌐 为
docs/ru/docs/tutorial/response-model.md
添加俄语翻译。PR #9675 由 @glsglsgls 提交。
内部¶
- 🔨 在本地实时开发期间启用 MkDocs Material 中的 linenums 以简化代码高亮显示。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] 提交。
- ✨ 添加 MkDocs Insiders 功能和卡片的 Material。PR #9748 由 @tiangolo 提交。
- 🔥 删除没有翻译的语言。PR #9743 由 @tiangolo 提交。
- ✨ 重构构建脚本的文档,使用 MkDocs 钩子,简化(删除)语言配置。PR #9742 由 @tiangolo 提交。
- 🔨 添加 MkDocs 钩子,根据第一个索引文件重命名部分。PR #9737 由 @tiangolo 提交。
- 👷 使 cron 作业仅在主仓库上运行,而不是在 fork 上运行,以避免因缺少令牌而导致的错误通知。PR #9735 由 @tiangolo 提交。
- 🔧 更新其他语言的 MkDocs。PR #9734 由 @tiangolo 提交。
- 👷 重构文档 CI,在多个工作进程中使用动态矩阵运行以优化速度。PR #9732 由 @tiangolo 提交。
- 🔥 删除旧的内部 GitHub Action watch-previews,不再需要。PR #9730 由 @tiangolo 提交。
- ⬆️ 升级 MkDocs 和 MkDocs Material。PR #9729 由 @tiangolo 提交。
- 👷 仅在文档更改时构建和部署文档。PR #9728 由 @tiangolo 提交。
0.98.0¶
特性¶
文档¶
- 📝 更新关于 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.md
中的Annotated
注释。PR #9620 由 @Alexandrhub 提交。 - ✏️ 修复
docs/en/docs/tutorial/query-params-str-validations.md
中的错别字Annotation
->Annotated
。PR #9625 由 @mccricardo 提交。 - 📝 使用内存数据库在文档中测试 SQL。PR #1223 由 @HarshaLaxman 提交。
翻译¶
- 🌐 为
docs/ru/docs/tutorial/metadata.md
添加俄语翻译。PR #9681 由 @TabarakoAkula 提交。 - 🌐 修复
docs/es/docs/tutorial/first-steps.md
西班牙语翻译中的错别字。PR #9571 由 @lilidl-nft 提交。 - 🌐 为
docs/tutorial/path-operation-configuration.md
添加俄语翻译。PR #9696 由 @TabarakoAkula 提交。 - 🌐 为
docs/zh/docs/advanced/security/index.md
添加中文翻译。PR #9666 由 @lordqyxz 提交。 - 🌐 为
docs/zh/docs/advanced/settings.md
添加中文翻译。PR #9652 由 @ChoyeonChern 提交。 - 🌐 为
docs/zh/docs/advanced/websockets.md
添加中文翻译。PR #9651 由 @ChoyeonChern 提交。 - 🌐 为
docs/zh/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/pl/docs/features.md
添加波兰语翻译。PR #5348 由 @mbroton 提交。 - 🌐 为
docs/ru/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 by @tiangolo。
- ♻️ 更新内部类型注解并升级 mypy。PR #9658 by @tiangolo。
- ♻️ 简化
AsyncExitStackMiddleware
,因为在 Python 3.6 之后AsyncExitStack
始终可用。PR #9657 by @tiangolo。
升级¶
内部¶
- 💚 更新 CI 缓存以修复依赖项更改时的安装问题。PR #9659 by @tiangolo。
- ⬇️ 将开发所需的依赖项分离到各自的 requirements.txt 文件中,它们不应该作为额外项存在。PR #9655 by @tiangolo。
0.96.1¶
修复¶
- 🐛 修复
HTTPException
头部类型注解。PR #9648 by @tiangolo。 - 🐛 修复 OpenAPI 模型字段整数验证,将
gte
更改为ge
。PR #9635 by @tiangolo。
升级¶
重构¶
- ♻ 从
ORJSONResponse
中移除media_type
,因为它继承自父类。PR #5805 by @Kludex。 - ♻ 仅在需要时实例化
HTTPException
,优化重构。PR #5356 by @pawamoy。
文档¶
翻译¶
- 🌐 修复
docs/id/docs/tutorial/index.md
中印尼语翻译的拼写错误。PR #5635 by @purwowd。 - 🌐 为
docs/ru/docs/tutorial/index.md
添加俄语翻译。PR #5896 by @Wilidon。 - 🌐 为
docs/zh/docs/advanced/response-change-status-code.md
和docs/zh/docs/advanced/response-headers.md
添加中文翻译。PR #9544 by @ChoyeonChern。 - 🌐 为
docs/ru/docs/tutorial/schema-extra-example.md
添加俄语翻译。PR #9621 by @Alexandrhub。
内部¶
- 🔧 添加赞助商 Platform.sh。PR #9650 by @tiangolo。
- 👷 为 Smokeshow 和预览文档的下载工件添加自定义令牌,以防止 API 速率限制。PR #9646 by @tiangolo。
- 👷 为 GitHub Actions 添加自定义令牌以避免速率限制。PR #9647 by @tiangolo。
0.96.0¶
特性¶
文档¶
- 📝 更新 Deta 部署教程以兼容 Deta Space。PR #6004 by @mikBighne98。
- ✏️ 修复 Deta 部署教程中的错别字。PR #9501 by @lemonyte。
翻译¶
- 🌐 为
docs/tutorial/body.md
添加俄语翻译。PR #3885 by @solomein-sv。 - 🌐 为
docs/ru/docs/tutorial/static-files.md
添加俄语翻译。PR #9580 by @Alexandrhub。 - 🌐 为
docs/ru/docs/tutorial/query-params.md
添加俄语翻译。PR #9584 by @Alexandrhub。 - 🌐 为
docs/ru/docs/tutorial/first-steps.md
添加俄语翻译。PR #9471 by @AGolicyn。 - 🌐 为
docs/ru/docs/tutorial/debugging.md
添加俄语翻译。PR #9579 by @Alexandrhub。 - 🌐 为
docs/ru/docs/tutorial/path-params.md
添加俄语翻译。PR #9519 by @AGolicyn。 - 🌐 为
docs/zh/docs/tutorial/static-files.md
添加中文翻译。PR #9436 by @wdh99。 - 🌐 更新西班牙语翻译,包括
docs/es/docs/async.md
中的新插图。PR #9483 by @andresbermeoq。 - 🌐 为
docs/ru/docs/tutorial/path-params-numeric-validations.md
添加俄语翻译。PR #9563 by @ivan-abc。 - 🌐 为
docs/ru/docs/deployment/concepts.md
添加俄语翻译。PR #9577 by @Xewus。 - 🌐 为
docs/ru/docs/tutorial/body-multiple-params.md
添加俄语翻译。PR #9586 by @Alexandrhub。
内部¶
- 👥 更新 FastAPI 人员信息。PR #9602 by @github-actions[bot]。
- 🔧 更新赞助商,移除 InvestSuite。PR #9612 by @tiangolo。
0.95.2¶
- ⬆️ 将 Starlette 版本升级到
>=0.27.0
以进行安全更新。PR #9541 by @tiangolo。详细信息请参见 Starlette 的安全公告。
翻译¶
- 🌐 为
docs/pt/docs/advanced/events.md
添加葡萄牙语翻译。PR #9326 by @oandersonmagalhaes。 - 🌐 为
docs/ru/docs/deployment/manually.md
添加俄语翻译。PR #9417 by @Xewus。 - 🌐 为老挝语添加翻译设置。PR #9396 by @TheBrown。
- 🌐 为
docs/ru/docs/tutorial/testing.md
添加俄语翻译。PR #9403 by @Xewus。 - 🌐 为
docs/ru/docs/deployment/https.md
添加俄语翻译。PR #9428 by @Xewus。 - ✏ 修复在 Windows 中安装依赖项的命令。PR #9445 by @MariiaRomanuik。
- 🌐 为
docs/fr/docs/advanced/response-directly.md
添加法语翻译。PR #9415 by @axel584。 - 🌐 启动捷克语翻译设置。PR #9288 by @3p1463k。
- ✏ 修复
docs/pt/docs/index.md
中葡萄牙语文档的错别字。PR #9337 by @lucasbalieiro。 - 🌐 为
docs/ru/docs/tutorial/response-status-code.md
添加俄语翻译。PR #9370 by @nadia3373。
内部¶
- 🐛 修复内部测试中
flask.escape
的警告。PR #9468 by @samuelcolvin。 - ✅ 重构 2 个测试,以提高一致性和简化性。PR #9504 by @tiangolo。
- ✅ 重构 OpenAPI 测试,为 Pydantic v2 做准备。PR #9503 by @tiangolo。
- ⬆ 将 dawidd6/action-download-artifact 从 2.26.0 提升到 2.27.0。PR #9394 by @dependabot[bot]。
- 💚 在 CI 中禁用 setup-python pip 缓存。PR #9438 by @tiangolo。
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.6.4 提升到 1.8.5。PR #9346 by @dependabot[bot]。
0.95.1¶
修复¶
- 🐛 修复在路由器或多次装饰的路径操作中使用
Annotated
的问题。PR #9315 by @sharonyogev。
文档¶
- 🌐 🔠 📄 🐢 将文档翻译成表情符号 🥳 🎉 💥 🤯 🤯。PR #5385 by @LeeeeT。
- 📝 添加通知消息,警告关于旧版本的 FastAPI 不支持
Annotated
。PR #9298 by @grdworkin。 - 📝 修复
docs/en/docs/advanced/behind-a-proxy.md
中的错别字。PR #5681 by @Leommjr。 - ✏ 修复波斯语翻译中
docs/fa/docs/index.md
中从 typing 模块错误的导入。PR #6083 by @Kimiaattaei。 - ✏️ 修复格式,移除
docs/en/docs/help-fastapi.md
中不必要的星号。PR #9249 by @armgabrielyan。 - ✏ 修复
docs/en/docs/tutorial/query-params-str-validations.md
中的错别字。PR #9272 by @nicornk。 - ✏ 修复
docs/en/docs/tutorial/query-params-str-validations.md
中内联代码示例中的错别字/错误。PR #9273 by @tim-habitat。 - ✏ 修复
docs/en/docs/tutorial/path-params-numeric-validations.md
中的错别字。PR #9282 by @aadarsh977。 - ✏ 修复错别字:将
docs/en/docs/tutorial/query-params-str-validations.md
中的 'wll' 改为 'will'。PR #9380 by @dasstyxx。
翻译¶
- 🌐 为
docs/fr/docs/advanced/index.md
添加法语翻译。PR #5673 by @axel584。 - 🌐 为
docs/pt/docs/tutorial/body-nested-models.md
添加葡萄牙语翻译。PR #4053 by @luccasmmg。 - 🌐 为
docs/ru/docs/alternatives.md
添加俄语翻译。PR #5994 by @Xewus。 - 🌐 为
docs/pt/docs/tutorial/extra-models.md
添加葡萄牙语翻译。PR #5912 by @LorhanSohaky。 - 🌐 为
docs/pt/docs/tutorial/path-operation-configuration.md
添加葡萄牙语翻译。PR #5936 by @LorhanSohaky。 - 🌐 为
docs/ru/docs/contributing.md
添加俄语翻译。PR #6002 by @stigsanek。 - 🌐 为
docs/tutorial/dependencies/classes-as-dependencies.md
添加韩语翻译。PR #9176 由 @sehwan505 提交。 - 🌐 为
docs/ru/docs/project-generation.md
添加俄语翻译。PR #9243 由 @Xewus 提交。 - 🌐 为
docs/fr/docs/index.md
添加法语翻译。PR #9265 由 @frabc 提交。 - 🌐 为
docs/ru/docs/tutorial/query-params-str-validations.md
添加俄语翻译。PR #9267 由 @dedkot01 提交。 - 🌐 为
docs/ru/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 行代码。 🚀
主要更新的文档包括
- Python 类型简介
- 教程
特别感谢 @nzig 的核心实现,以及 @adriangb 的灵感和想法,以及 Xpresso! 🚀
功能¶
文档¶
- 📝 微调文档中推荐
Annotated
的提示。PR #9270 由 @tiangolo 提交。 - 📝 更新示例顺序,最新 Python 版本排在首位,并简化版本标签名称。PR #9269 由 @tiangolo 提交。
- 📝 更新所有文档以使用
Annotated
作为主要建议,并提供新的示例和测试。PR #9268 由 @tiangolo 提交。
0.94.1¶
修复¶
0.94.0¶
升级¶
- ⬆ 升级 python-multipart 以支持 0.0.6。PR #9212 由 @musicinmybrain 提交。
- ⬆️ 升级 Starlette 版本,支持带有状态的新
lifespan
。PR #9239 由 @tiangolo 提交。
文档¶
翻译¶
内部¶
- ➕ 将
pydantic
添加到 PyPI 分类器中。PR #5914 由 @yezz123 提交。 - ⬆ 将 black 从 22.10.0 提升到 23.1.0。PR #5953 由 @dependabot[bot] 提交。
- ⬆ 将 types-ujson 从 5.6.0.0 提升到 5.7.0.1。PR #6027 由 @dependabot[bot] 提交。
- ⬆ 将 dawidd6/action-download-artifact 从 2.24.3 提升到 2.26.0。PR #6034 由 @dependabot[bot] 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5709 由 @pre-commit-ci[bot] 提交。
0.93.0¶
功能¶
现在,您可以使用 @asynccontextmanager
(异步上下文管理器)修饰的带有 yield
的单个函数来定义该逻辑,而不是使用独立的 startup
和 shutdown
事件。
例如
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}
**注意**:这是今后推荐的方式,而不是使用 startup
和 shutdown
事件。
在新的文档中了解更多信息:高级用户指南:生命周期事件。
文档¶
翻译¶
- 🌐 泰米尔语翻译 - 初始设置。PR #5564 由 @gusty1g 提交。
- 🌐 为
docs/fr/docs/advanced/path-operation-advanced-configuration.md
添加法语翻译。PR #9221 由 @axel584 提交。 - 🌐 为
docs/tutorial/debugging.md
添加法语翻译。PR #9175 由 @frabc 提交。 - 🌐 启动亚美尼亚语翻译设置。PR #5844 由 @har8 提交。
- 🌐 为
deployment/manually.md
添加法语翻译。PR #3693 由 @rjNemo 提交。
内部¶
- 👷 更新翻译机器人消息。PR #9206 由 @tiangolo 提交。
- 👷 更新翻译机器人以使用讨论,并在 PR 完成时发出通知。PR #9183 由 @tiangolo 提交。
- 🔧 更新 sponsors-badges。PR #9182 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员。PR #9181 由 @github-actions[bot] 提交。
- 🔊 记录 FastAPI 人员中的 GraphQL 错误,因为它返回 200,并带有包含错误的有效负载。PR #9171 由 @tiangolo 提交。
- 💚 修复/解决 FastAPI 人员中 Docker 中的 GitHub Actions 与 git 的冲突。PR #9169 由 @tiangolo 提交。
- ♻️ 重构 FastAPI 专家,现在问题已迁移,因此仅使用讨论。PR #9165 由 @tiangolo 提交。
- ⬆️ 升级分析。PR #6025 由 @tiangolo 提交。
- ⬆️ 升级并重新启用安装 Typer-CLI。PR #6008 由 @tiangolo 提交。
0.92.0¶
🚨 这是一个安全修复。请尽快升级。
升级¶
- ⬆️ 将 Starlette 升级到 0.25.0。PR #5996 由 @tiangolo 提交。
- 这解决了可能允许通过使用许多小的多部分字段/文件(部件)来执行拒绝服务攻击的漏洞,从而消耗大量的 CPU 和内存。
- 仅使用表单(例如文件上传)的应用程序可能会受到影响。
- 对于大多数情况,升级不会有任何重大更改。
0.91.0¶
升级¶
0.90.1¶
升级¶
文档¶
- ✏ 调整措辞以阐明
docs/en/docs/project-generation.md
。PR #5930 由 @chandra-deb 提交。 - ✏ 更新 Pydantic GitHub URL。PR #5952 由 @yezz123 提交。
- 📝 添加来自思科的意见。PR #5981 由 @tiangolo 提交。
翻译¶
内部¶
- ✏ 更新
zip-docs.sh
内部脚本,删除多余空格。PR #5931 由 @JuanPerdomo00 提交。
0.90.0¶
升级¶
文档¶
- 📝 将文章“Tortoise ORM / FastAPI 整合快速笔记”添加到外部链接。PR #5496 由 @Leon0824 提交。
- 👥 更新 FastAPI 人员。PR #5954 由 @github-actions[bot] 提交。
- 📝 微调帮助文档。PR #5960 由 @tiangolo 提交。
- 🔧 更新新问题选择器以直接到 GitHub 讨论。PR #5948 由 @tiangolo 提交。
- 📝 建议使用 GitHub 讨论来提问。PR #5944 由 @tiangolo 提交。
翻译¶
- 🌐 为
docs/ru/docs/tutorial/body-fields.md
添加俄语翻译。PR #5898 由 @simatheone 提交。 - 🌐 为
docs/ru/docs/help-fastapi.md
添加俄语翻译。PR #5970 由 @tiangolo 提交。 - 🌐 为
docs/pt/docs/tutorial/static-files.md
添加葡萄牙语翻译。PR #5858 由 @batlopes 提交。 - 🌐 为
docs/pt/docs/tutorial/encoder.md
添加葡萄牙语翻译。PR #5525 由 @felipebpl 提交。 - 🌐 为
docs/ru/docs/contributing.md
添加俄语翻译。PR #5870 由 @Xewus 提交。
内部¶
- ⬆️ 升级文档工作流的 Ubuntu 版本。PR #5971 由 @tiangolo 提交。
- 🔧 更新赞助商徽章。PR #5943 由 @tiangolo 提交。
- ✨ 计算 FastAPI 专家,包括 GitHub 讨论。PR #5941 由 @tiangolo 提交。
- ⬆️ 升级 isort 并更新 pre-commit。PR #5940 由 @tiangolo 提交。
- 🔧 为讨论中的问题添加模板。PR #5920 由 @tiangolo 提交。
- 🔧 更新赞助商 Budget Insight 为 Powens。PR #5916 由 @tiangolo 提交。
- 🔧 更新 GitHub 赞助商徽章数据。PR #5915 由 @tiangolo 提交。
0.89.1¶
修复¶
文档¶
- 📝 更新有关使用返回类型注释的响应模型的文档和示例,并更新运行时错误。PR #5873 由 @tiangolo 提交。新文档位于 响应模型 - 返回类型:其他返回类型注释。
- 📝 添加外部链接:FastAPI lambda 容器:简化无服务器。PR #5784 由 @rafrasenberg 提交。
翻译¶
- 🌐 为
docs/tr/docs/tutorial/first_steps.md
添加土耳其语翻译。PR #5691 由 @Kadermiyanyedi 提交。
0.89.0¶
特性¶
现在您可以在函数返回类型注释中声明返回类型/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
参数支持。
在新的文档中了解更多信息:响应模型 - 返回类型。
文档¶
- 📝 添加外部链接:使用 Casbin 对 FastAPI 进行授权。PR #5712 由 @Xhy-5000 提交。
- ✏ 修复
docs/en/docs/async.md
中的错别字。PR #5785 由 @Kingdageek 提交。 - ✏ 修复
docs/en/docs/deployment/concepts.md
中的错别字。PR #5824 由 @kelbyfaessler 提交。
翻译¶
- 🌐 为
docs/ru/docs/fastapi-people.md
添加俄语翻译。PR #5577 由 @Xewus 提交。 - 🌐 修复
docs/zh/docs/benchmarks.md
中文翻译中的错别字。PR #4269 由 @15027668g 提交。 - 🌐 为
docs/tutorial/cors.md
添加韩语翻译。PR #3764 由 @NinaHwang 提交。
内部¶
- ⬆ 更新 coverage[toml] 依赖项,从 <7.0,>=6.5.0 更改为 >=6.5.0,<8.0。PR #5801 由 @dependabot[bot] 提交。
- ⬆ 更新 uvicorn[standard] 依赖项,从 <0.19.0,>=0.12.0 更改为 >=0.12.0,<0.21.0 用于开发。PR #5795 由 @dependabot[bot] 提交。
- ⬆ 将 dawidd6/action-download-artifact 从 2.24.2 升级到 2.24.3。PR #5842 由 @dependabot[bot] 提交。
- 👥 更新 FastAPI 人员。PR #5825 由 @github-actions[bot] 提交。
- ⬆ 将 types-ujson 从 5.5.0 升级到 5.6.0.0。PR #5735 由 @dependabot[bot] 提交。
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.5.2 升级到 1.6.4。PR #5750 由 @dependabot[bot] 提交。
- 👷 添加 GitHub Action 网关/检查。PR #5492 由 @webknjaz 提交。
- 🔧 更新赞助商,添加 Svix。PR #5848 由 @tiangolo 提交。
- 🔧 删除 Doist 赞助商。PR #5847 由 @tiangolo 提交。
- ⬆ 更新 sqlalchemy 依赖项,从 <=1.4.41,>=1.3.18 更改为 >=1.3.18,<1.4.43。PR #5540 由 @dependabot[bot] 提交。
- ⬆ 将 nwtgck/actions-netlify 从 1.2.4 升级到 2.0.0。PR #5757 由 @dependabot[bot] 提交。
- 👷 重构 CI 工件上传/下载以用于文档预览。PR #5793 由 @tiangolo 提交。
- ⬆ 将 pypa/gh-action-pypi-publish 从 1.5.1 升级到 1.5.2。PR #5714 由 @dependabot[bot] 提交。
- 👥 更新 FastAPI 人员。PR #5722 由 @github-actions[bot] 提交。
- 🔧 更新赞助商,禁用课程捆绑包。PR #5713 由 @tiangolo 提交。
- ⬆ 更新 typer[all] 依赖项,从 <0.7.0,>=0.6.1 更改为 >=0.6.1,<0.8.0。PR #5639 由 @dependabot[bot] 提交。
0.88.0¶
升级¶
文档¶
- ✏️ 修复
docs/en/docs/advanced/middleware.md
文档中的错别字。PR #5376 由 @rifatrakib 提交。
翻译¶
内部¶
- 👷 调整 build-docs 以提高 CI 性能。PR #5699 由 @tiangolo 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5566 由 @pre-commit-ci[bot] 提交。
- ⬆️ 升级 Ruff。PR #5698 由 @tiangolo 提交。
- 👷 移除 Smokeshow 的 pip 缓存,因为它依赖于 requirements.txt。PR #5700 由 @tiangolo 提交。
- 💚 修复 Smokeshow 的 pip 缓存。PR #5697 由 @tiangolo 提交。
- 👷 修复并调整 CI 缓存处理。PR #5696 由 @tiangolo 提交。
- 👷 更新测试中的
setup-python
操作以使用新的缓存功能。PR #5680 由 @madkinsz 提交。 - ⬆ 将 black 从 22.8.0 升级到 22.10.0。PR #5569 由 @dependabot[bot] 提交。
0.87.0¶
此版本的亮点
- 升级了 Starlette
- 现在
TestClient
基于 HTTPX 而不是 Requests。🚀 - 在
TestClient
使用方面有一些可能的重大更改,但 @Kludex 构建了 bump-testclient 来帮助您自动迁移测试。请确保您正在使用 Git,并且可以在使用bump-testclient
之前撤消任何不必要的更改(误报更改等)。
- 现在
- 新的 WebSocketException(以及文档),从 Starlette 重新导出。
- 升级并放宽了包额外内容
all
的依赖项(包括新的 Uvicorn 版本),当您安装"fastapi[all]"
时。 - 关于如何帮助维护 FastAPI 的新文档。
特性¶
- ⬆️ 升级并放宽额外内容 "all" 的依赖项。PR #5634 by @tiangolo。
- ✨ 重新导出 Starlette 的
WebSocketException
并将其添加到文档中。PR #5629 by @tiangolo。 - 📝 将测试中对 Requests 的引用更新为 HTTPX,并将 HTTPX 添加到额外内容中。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/fr/docs/advanced/additional-status-code.md
添加法语翻译。PR #5477 by @axel584。 - 🌐 为
docs/pt/docs/tutorial/request-forms-and-files.md
添加葡萄牙语翻译。PR #5579 by @batlopes。 - 🌐 为
docs/ja/docs/advanced/websockets.md
添加日语翻译。PR #4983 by @xryuseix。
内部¶
- ✨ 使用 Ruff 进行 lint。PR #5630 by @tiangolo。
- 🛠 将阿拉伯语问题编号添加到通知翻译 GitHub 操作中。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¶
特性¶
修复¶
文档¶
- ✏ 修复
docs/en/docs/tutorial/security/oauth2-jwt.md
中的错别字。PR #5584 by @vivekashok1221。
翻译¶
- 🌐 更新
docs/zh/docs/python-types.md
的中文翻译中的措辞。PR #5416 by @supercaizehua。 - 🌐 为
docs/ru/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 和 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/pt/docs/tutorial/request-forms.md
添加葡萄牙语翻译。PR #4934 by @batlopes。 - 🌐 为
docs/zh/docs/tutorial/dependencies/classes-as-dependencies.md
添加中文翻译。PR #4971 by @Zssaer。 - 🌐 为
deployment/deta.md
添加法语翻译。PR #3692 by @rjNemo。 - 🌐 更新
docs/zh/docs/tutorial/query-params-str-validations.md
的中文翻译。PR #5255 by @hjlarry。 - 🌐 为
docs/zh/docs/tutorial/sql-databases.md
添加中文翻译。PR #4999 by @Zssaer。 - 🌐 为
docs/zh/docs/advanced/wsgi.md
添加中文翻译。PR #4505 by @ASpathfinder。 - 🌐 为
docs/pt/docs/tutorial/body-multiple-params.md
添加葡萄牙语翻译。PR #4111 by @lbmendes。 - 🌐 为
docs/pt/docs/tutorial/path-params-numeric-validations.md
添加葡萄牙语翻译。PR #4099 by @lbmendes。 - 🌐 为
deployment/versions.md
添加法语翻译。PR #3690 by @rjNemo。 - 🌐 为
docs/fr/docs/help-fastapi.md
添加法语翻译。PR #2233 by @JulianMaurin。 - 🌐 修复
docs/zh/docs/tutorial/security/first-steps.md
的中文翻译中的错别字。PR #5530 by @yuki1sntSnow。 - 🌐 为
docs/pt/docs/tutorial/response-status-code.md
添加葡萄牙语翻译。PR #4922 by @batlopes。 - 🔧 添加泰米尔语翻译的配置。PR #5563 by @tiangolo。
内部¶
- ⬆ 将内部依赖项 mypy 从 0.971 提升到 0.982。PR #5541 by @dependabot[bot]。
- ⬆ 将 nwtgck/actions-netlify 从 1.2.3 提升到 1.2.4。PR #5507 by @dependabot[bot]。
- ⬆ 将内部依赖项 types-ujson 从 5.4.0 提升到 5.5.0。PR #5537 by @dependabot[bot]。
- ⬆ 将 dawidd6/action-download-artifact 从 2.23.0 提升到 2.24.0。PR #5508 by @dependabot[bot]。
- ⬆ 将内部依赖项 pytest-cov 的要求从 <4.0.0,>=2.12.0 更新到 >=2.12.0,<5.0.0。PR #5539 by @dependabot[bot]。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5536 by @pre-commit-ci[bot]。
- 🐛 修复内部 Trio 测试警告。PR #5547 by @samuelcolvin。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5408 by @pre-commit-ci[bot]。
- ⬆️ 升级 Typer 以在文档的脚本中包含 Rich。PR #5502 by @tiangolo。
- 🐛 修复作为子进程调用
mkdocs
以修复/启用 MkDocs Material 搜索插件。PR #5501 by @tiangolo。
0.85.1¶
修复¶
- 🐛 修复对 OpenAPI 状态代码中字符串的支持:
default
、1XX
、2XX
、3XX
、4XX
、5XX
。PR #5187 by @JarroVGIT。
文档¶
内部¶
- 👥 更新 FastAPI 人员。PR #5447 by @github-actions[bot]。
- 🔧 禁用 MkDocs 搜索插件的 Material。PR #5495 by @tiangolo。
- 🔇 忽略 CI 测试中的 Trio 警告。PR #5483 by @samuelcolvin。
0.85.0¶
特性¶
- ⬆ 将 Starlette 的所需版本从
0.19.1
升级到0.20.4
。初始 PR #4820 by @Kludex。- 这包含了 Starlette 的一些错误修复。
- ⬆️ 升级公共额外内容:all 中的 Uvicorn 最大版本。从
>=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 由 @tiangolo 提交。
- 🔧 更新测试依赖项,升级 Pytest,将依赖项从开发环境移动到测试环境。PR #5396 由 @tiangolo 提交。
0.84.0¶
重大变更¶
此版本的 FastAPI 放弃了对 Python 3.6 的支持。🔥 请升级到受支持的 Python 版本(3.7 或更高版本),Python 3.6 很久以前就已停止维护。😅☠
0.83.0¶
🚨 这可能是最后一个(或其中一个)支持 Python 3.6 的版本。🔥
Python 3.6 已达到 生命周期结束,并且自大约一年前起不再受 Python 支持。
希望您之前已经升级到受支持的 Python 版本。如果您还没有,真的应该升级了。
功能¶
修复¶
- 🐛 修复
HTTPException
的状态码没有内容时引发的RuntimeError
。PR #5365 由 @iudeen 提交。 - 🐛 修复当默认
status_code
为空但设置了带有response.status_code
的Response
参数时返回空主体的问题。PR #5360 由 @tmeckel 提交。
文档¶
内部¶
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5352 由 @pre-commit-ci[bot] 提交。
0.82.0¶
🚨 这可能是最后一个(或其中一个)支持 Python 3.6 的版本。🔥
Python 3.6 已达到 生命周期结束,并且自大约一年前起不再受 Python 支持。
希望您之前已经升级到受支持的 Python 版本。如果您还没有,真的应该升级了。
功能¶
- ✨ 在
fastapi.websockets
中导出WebSocketState
。PR #4376 由 @matiuszka 提交。 - ✨ 支持 Pydantic 模型文档字符串中的 Python 内部描述。PR #3032 由 @Kludex 提交。
- ✨ 更新
ORJSONResponse
以支持非str
键和序列化 Numpy 数组。PR #3892 由 @baby5 提交。
修复¶
- 🐛 允许使用
yield
的依赖项的退出代码始终执行,方法是删除它们的容量限制器,例如允许关闭数据库连接而不会出现死锁。PR #5122 由 @adriangb 提交。 - 🐛 修复 FastAPI People GitHub Action:为 GraphQL 查询请求设置 HTTPX 超时。PR #5222 由 @iudeen 提交。
- 🐛 确保即使在另一个依赖项中定义为可选,定义为必需的参数在 OpenAPI 中也保持必需。PR #4319 由 @cd17822 提交。
- 🐛 修复对 WebSocket 中路径参数的支持。PR #3879 由 @davidbrochart 提交。
文档¶
- ✏ 更新 Hypercorn 链接,现在指向 GitHub。PR #5346 由 @baconfield 提交。
- ✏ 调整
docs/en/docs/advanced/dataclasses.md
中的措辞。PR #3698 由 @pfackeldey 提交。 - 📝 在关于响应模型的解释中添加关于 Python 3.10
X | Y
运算符的注释。PR #5307 由 @MendyLanda 提交。 - 📝 添加指向 New Relic 文章的链接:“如何使用 Python 代理监控 FastAPI 应用程序性能”。PR #5260 由 @sjyothi54 提交。
- 📝 使用有关提高性能的详细信息更新
ORJSONResponse
的文档。PR #2615 由 @falkben 提交。 - 📝 添加创建自定义 Response 类的文档。PR #5331 由 @tiangolo 提交。
- 📝 添加关于为表单数据字段使用别名的提示。PR #5329 由 @tiangolo 提交。
翻译¶
- 🌐 为
docs/ru/docs/features.md
添加俄语翻译。PR #5315 由 @Xewus 提交。 - 🌐 更新
docs/zh/docs/tutorial/request-files.md
的中文翻译。PR #4529 由 @ASpathfinder 提交。 - 🌐 为
docs/zh/docs/tutorial/encoder.md
添加中文翻译。PR #4969 由 @Zssaer 提交。 - 🌐 修复
background-task.md
的葡萄牙语翻译的 MkDocs 文件行。PR #5242 由 @ComicShrimp 提交。
内部¶
- 👥 更新 FastAPI People。PR #5347 由 @github-actions[bot] 提交。
- ⬆ 将 dawidd6/action-download-artifact 从 2.22.0 升级到 2.23.0。PR #5321 由 @dependabot[bot] 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5318 由 @pre-commit-ci[bot] 提交。
- ✏ 修复一个小代码高亮行错误。PR #5256 由 @hjlarry 提交。
- ♻ 内部小重构,为了与代码保持一致,移动删除方法中的
operation_id
参数位置。PR #4474 由 @hiel 提交。 - 🔧 更新赞助商,禁用 ImgWhale。PR #5338 由 @tiangolo 提交。
0.81.0¶
功能¶
- ✨ 在 JS 被禁用时添加 ReDoc
<noscript>
警告。PR #5074 由 @evroon 提交。 - ✨ 添加对参数(例如查询)中
FrozenSet
的支持。PR #2938 由 @juntatalor 提交。 - ✨ 允许自定义中间件引发
HTTPException
并传播它们。PR #2036 由 @ghandic 提交。 - ✨ 在处理请求主体中的无效 JSON 时保留
json.JSONDecodeError
信息,以支持使用其信息的自定义异常处理程序。PR #4057 由 @UKnowWhoIm 提交。
修复¶
- 🐛 修复带有 pydantic 兼容字段的 dataclasses 的
jsonable_encoder
。PR #3607 由 @himbeles 提交。 - 🐛 修复使用参数列表扩展
openapi_extras
的支持。PR #4267 由 @orilevari 提交。
文档¶
- ✏ 修复
docs/en/docs/python-types.md
中的一个简单拼写错误。PR #5193 由 @GlitchingCore 提交。 - ✏ 修复
tests/test_schema_extra_examples.py
中的拼写错误。PR #5126 由 @supraaxdd 提交。 - ✏ 修复
docs/en/docs/tutorial/path-params-numeric-validations.md
中的拼写错误。PR #5142 由 @invisibleroads 提交。 - 📝 在
docs/en/docs/contributing.md
中添加关于升级虚拟环境中 pip 的步骤,以避免安装依赖项时出现错误。PR #5181 由 @edisnake 提交。 - ✏ 重写并阐明教程
docs/en/docs/tutorial/body-nested-models.md
中的文本。PR #5169 由 @papb 提交。 - ✏ 修复
docs/en/docs/features.md
中的小错误。PR #5206 由 @OtherBarry 提交。 - ✏ 修复
docs/en/docs/async.md
中的小错误。PR #5125 由 @Ksenofanex 提交。 - 📝 向文档添加外部链接:“Fastapi、Docker(Docker compose)和 Postgres”。PR #5033 由 @krishnardt 提交。
- 📝 简化其他响应文档的示例,删除不必要的
else
。PR #4693 由 @adriangb 提交。 - 📝 更新文档,使用身份而不是相等性比较枚举。PR #4905 由 @MicaelJarniac 提交。
- ✏ 修复
docs/en/docs/python-types.md
中的拼写错误。PR #4886 由 @MicaelJarniac 提交。 - 🎨 修复 OpenAPI 回调文档中的语法高亮。PR #4368 由 @xncbf 提交。
- ✏ 重写文档文件
typo-fix-path-params-numeric-validations.md
中令人困惑的句子。PR #3219 由 @ccrenfroe 提交。 - 📝 更新处理 HTTP 基本身份验证的文档,使用
secrets.compare_digest()
来处理非 ASCII 字符。PR #3536 由 @lewoudar 提交。 - 📝 更新测试文档,修复使用相对导入的示例。PR #5302 由 @tiangolo 提交。
翻译¶
- 🌐 为
docs/ru/docs/index.md
添加俄语翻译。PR #5289 由 @impocode 提交。 - 🌐 为
docs/ru/docs/deployment/versions.md
添加俄语翻译。PR #4985 由 @emp7yhead 提交。 - 🌐 为
docs/pt/docs/tutorial/header-params.md
添加葡萄牙语翻译。PR #4921 由 @batlopes 提交。 - 🌐 更新
ko/mkdocs.yml
以修复缺失的链接。PR #5020 由 @dalinaum 提交。
内部¶
- ⬆ 将 dawidd6/action-download-artifact 从 2.21.1 升级到 2.22.0。PR #5258 由 @dependabot[bot] 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5196 由 @pre-commit-ci[bot] 提交。
- 🔥 删除
tests/test_tutorial/test_sql_databases/test_sql_databases.py
中重复的测试。PR #5040 由 @raccoonyy 提交。 - ♻ 简化
fastapi/utils.py
中的内部正则表达式。PR #5057 由 @pylounge 提交。 - 🔧 修复
auto_error
的类型提示,它不需要是Optional[bool]
。PR #4933 由 @DavidKimDY 提交。 - 🔧 更新 mypy 配置,使用
strict = true
代替手动配置。PR #4605 由 @michaeloliverx 提交。 - ♻ 将
fastapi/utils.py
中的dict()
替换为{}
。PR #3138 由 @ShahriyarR 提交。 - ♻ 将
jsonable_encoder
中用于错误的内部变量移动,使相关代码更靠近。PR #4560 由 @GuilleQP 提交。 - ♻ 简化
fastapi/dependencies/utils.py
中的条件赋值。PR #4597 由 @cikay 提交。 - ⬆ 将内部代码中 Flake8 的版本限制升级到
flake8 >=3.8.3,<6.0.0
。PR #4097 由 @jamescurtin 提交。 - 🍱 更新 Jina 横幅,修复错别字。PR #5301 由 @tiangolo 提交。
0.80.0¶
重大变更 - 修复¶
如果您正在使用不包含None
的某些类型的response_model
,但函数返回了None
,它现在将引发内部服务器错误,因为您返回的无效数据违反了response_model
中的契约。在此版本之前,它允许违反该契约返回None
。
例如,如果您有一个这样的应用程序
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
return None
...调用路径/items/invalidnone
将引发错误,因为None
对于使用Item
声明的response_model
来说不是有效类型。
您也可能在未意识到的情况下隐式地返回了None
,例如
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@app.get("/items/invalidnone", response_model=Item)
def get_invalid_none():
if flag:
return {"name": "foo"}
# if flag is False, at this point the function will implicitly return None
如果您有使用response_model
的路径操作需要允许返回None
,请使用Union[Something, None]
在response_model
中明确表示。
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: Optional[float] = None
owner_ids: Optional[List[int]] = None
app = FastAPI()
@app.get("/items/invalidnone", response_model=Union[Item, None])
def get_invalid_none():
return None
这样,数据将被正确验证,您不会遇到内部服务器错误,并且文档也将反映此路径操作可能会返回None
(或 JSON 中的null
)。
修复¶
- ⬆ 将 Swagger UI 中
oauth2-redirect.html
的副本升级,以包含 Swagger UI 中授权码流类型的修复。PR #3439 初始 PR 由 @koonpeng 提交。 - ♻ 从文档字符串中提取的描述中去除多余的空格。PR #2821 由 @and-semakin 提交。
- 🐛 修复在
Security()
和其他地方(例如Depends()
)使用具有不同 OAuth2 范围的依赖项时的缓存依赖项问题。PR #2945 由 @laggardkernel 提交。 - 🎨 更新
response_model
的类型注释,允许使用诸如Union[str, None]
之类的内容。PR #5294 由 @tiangolo 提交。
翻译¶
- 🌐 修复
docs/de/docs/features.md
中德语翻译的错别字。PR #4533 由 @0xflotus 提交。 - 🌐 在韩语翻译中添加了
encoder.md
缺少的导航器。PR #5238 由 @joonas-yoon 提交。 - (意外合并的空 PR)#4913。
0.79.1¶
修复¶
- 🐛 修复
jsonable_encoder
在非 Pydantic 对象上使用include
和exclude
参数的问题。PR #2606 由 @xaviml 提交。 - 🐛 修复重复别名名称未在 OpenAPI 中显示的边缘情况。PR #2351 由 @klaa97 提交。
- 📝 将其他依赖项安装添加到教程文档中。PR #2126 由 @TeoZosa 提交。
文档¶
- 📝 添加注释,感谢 Ketrina Thompson 提供插图。PR #5284 由 @tiangolo 提交。
- ✏ 修复
python-types.md
中的错别字。PR #5116 由 @Kludex 提交。 - ✏ 修复
docs/en/docs/python-types.md
中的错别字。PR #5007 由 @atiabbz 提交。 - 📝 从异步主题简介中删除不必要的 Django/Flask 引用。PR #5280 由 @carltongibson 提交。
- ✨ 添加并发汉堡和并行汉堡的插图。PR #5277 由 @tiangolo 提交。更新的文档位于:并发和汉堡。
翻译¶
- 🌐 为
docs/pt/docs/tutorial/query-params.md
添加葡萄牙语翻译。PR #4775 由 @batlopes 提交。 - 🌐 为
docs/pt/docs/tutorial/security/first-steps.md
添加葡萄牙语翻译。PR #4954 由 @FLAIR7 提交。 - 🌐 为
docs/zh/docs/advanced/response-cookies.md
添加翻译。PR #4638 由 @zhangbo2012 提交。 - 🌐 为
docs/fr/docs/deployment/index.md
添加法语翻译。PR #3689 由 @rjNemo 提交。 - 🌐 为
tutorial/handling-errors.md
添加葡萄牙语翻译。PR #4769 由 @frnsimoes 提交。 - 🌐 为
docs/fr/docs/history-design-future.md
添加法语翻译。PR #3451 由 @rjNemo 提交。 - 🌐 为
docs/ru/docs/tutorial/background-tasks.md
添加俄语翻译。PR #4854 由 @AdmiralDesu 提交。 - 🌐 为
docs/tutorial/security/first-steps.md
添加中文翻译。PR #3841 由 @jaystone776 提交。 - 🌐 为
docs/ja/docs/advanced/nosql-databases.md
添加日语翻译。PR #4205 由 @sUeharaE4 提交。 - 🌐 为
docs/id/docs/tutorial/index.md
添加印尼语翻译。PR #4705 由 @bas-baskara 提交。 - 🌐 为
docs/fa/docs/index.md
添加波斯语翻译并调整从右到左的 CSS。PR #2395 由 @mohsen-mahmoodi 提交。
内部¶
- 🔧 更新 Jina 赞助信息。PR #5283 由 @tiangolo 提交。
- 🔧 更新 Jina 赞助信息。PR #5272 由 @tiangolo 提交。
- 🔧 更新赞助商,Striveworks 徽章。PR #5179 由 @tiangolo 提交。
0.79.0¶
修复 - 重大变更¶
- 🐛 修复从不支持主体状态码中删除主体的问题。PR #5145 由 @tiangolo 提交。
- 将
status_code
设置为204
、304
或任何低于200
(1xx)的代码将从响应中删除主体。 - 这修复了 Uvicorn 中的一个错误,否则将抛出:
RuntimeError: Response content longer than Content-Length
。 - 这删除了
fastapi.openapi.constants.STATUS_CODES_WITH_NO_BODY
,它被 utils 中的一个函数替换。
- 将
翻译¶
- 🌐 希伯来语翻译开始。PR #5050 由 @itay-raveh 提交。
- 🔧 添加瑞典语翻译通知配置。PR #5147 由 @tiangolo 提交。
- 🌐 瑞典语翻译开始。PR #5062 由 @MrRawbin 提交。
- 🌐 为
docs/ja/docs/advanced/index.md
添加日语翻译。PR #5043 由 @wakabame 提交。 - 🌐🇵🇱 为
docs/pl/docs/tutorial/first-steps.md
添加波兰语翻译。PR #5024 由 @Valaraucoo 提交。
内部¶
- 🔧 更新希伯来语翻译通知。PR #5158 由 @tiangolo 提交。
- 🔧 更新 Dependabot 提交消息。PR #5156 由 @tiangolo 提交。
- ⬆ 将 actions/upload-artifact 从 2 升级到 3。PR #5148 由 @dependabot[bot] 提交。
- ⬆ 将 actions/cache 从 2 升级到 3。PR #5149 由 @dependabot[bot] 提交。
- 🔧 更新赞助商徽章配置。PR #5155 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员信息。PR #5154 由 @tiangolo 提交。
- 🔧 更新 Jina 赞助商徽章。PR #5151 由 @tiangolo 提交。
- ⬆ 将 actions/checkout 从 2 升级到 3。PR #5133 由 @dependabot[bot] 提交。
- ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5030 由 @pre-commit-ci[bot] 提交。
- ⬆ 将 nwtgck/actions-netlify 从 1.1.5 升级到 1.2.3。PR #5132 由 @dependabot[bot] 提交。
- ⬆ 将 codecov/codecov-action 从 2 升级到 3。PR #5131 由 @dependabot[bot] 提交。
- ⬆ 将 dawidd6/action-download-artifact 从 2.9.0 升级到 2.21.1。PR #5130 由 @dependabot[bot] 提交。
- ⬆ 将 actions/setup-python 从 2 升级到 4。PR #5129 由 @dependabot[bot] 提交。
- 👷 添加 Dependabot。PR #5128 由 @tiangolo 提交。
- ♻️ 将内部实用程序中的
Optional[X]
更改为Union[X, None]
。PR #5124 由 @tiangolo 提交。 - 🔧 更新赞助商,删除 Dropbase,添加 Doist。PR #5096 由 @tiangolo 提交。
- 🔧 更新赞助商,删除 Classiq,添加 ImgWhale。PR #5079 由 @tiangolo 提交。
0.78.0¶
特性¶
-
✨ 添加对使用时省略
...
作为默认值的支持 -
Path()
Query()
Header()
Cookie()
Body()
Form()
File()
新的文档位于 教程 - 查询参数和字符串验证 - 设置为必填。PR #4906 由 @tiangolo 提交。
到目前为止,声明一个必填参数,同时使用...
(省略号)添加额外的验证或元数据。
例如
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@app.get("/items/{item_id}")
def main(
item_id: int = Path(default=..., gt=0),
query: str = Query(default=..., max_length=10),
session: str = Cookie(default=..., min_length=3),
x_trace: str = Header(default=..., title="Tracing header"),
):
return {"message": "Hello World"}
...所有这些参数都是必填的,因为默认值为...
(省略号)。
但现在可以并且支持只省略默认值,就像 Pydantic 字段一样,参数仍然是必填的。
✨ 例如,现在支持以下操作
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@app.get("/items/{item_id}")
def main(
item_id: int = Path(gt=0),
query: str = Query(max_length=10),
session: str = Cookie(min_length=3),
x_trace: str = Header(title="Tracing header"),
):
return {"message": "Hello World"}
要将参数声明为可选(非必需),您可以始终设置默认值,例如使用None
from typing import Union
from fastapi import Cookie, FastAPI, Header, Path, Query
app = FastAPI()
@app.get("/items/{item_id}")
def main(
item_id: int = Path(gt=0),
query: Union[str, None] = Query(default=None, max_length=10),
session: Union[str, None] = Cookie(default=None, min_length=3),
x_trace: Union[str, None] = Header(default=None, title="Tracing header"),
):
return {"message": "Hello World"}
文档¶
- 📝 添加推荐使用
Union
而不是Optional
的文档,并迁移源代码示例。新的文档位于Python 类型简介 - 使用Union
或Optional
。PR #4908 由 @tiangolo提交。 - 🎨 修复教程中路径操作高级配置中设置的默认值。PR #4899 由 @tiangolo提交。
- 📝 为重新定义的路径操作添加文档。PR #4864 由 @madkinsz提交。
- 📝 更新 Celery 文档的链接。PR #4736 由 @sammyzord提交。
- ✏ 修复教程中主体嵌套模型中使用集合的示例代码。PR #3030 由 @hitrust提交。
- ✏ 修复指向 Pydantic 文档的链接。PR #4670 由 @kinuax提交。
- 📝 更新有关使用较新的源链接自托管 Swagger UI 的文档。PR #4813 由 @Kastakin提交。
- 📝 添加指向外部文章的链接:使用 FastAPI 和 React 从 Django 教程构建投票应用。PR #4778 由 @jbrocher提交。
- 📝 在“主体 - 字段”文档中添加 OpenAPI 警告,并添加额外的模式扩展。PR #4846 由 @ml-evs提交。
翻译¶
- 🌐 修复日语翻译中
docs/ja/docs/tutorial/testing.md
的代码示例。PR #4623 由 @hirotoKirimaru提交。
内部¶
- ♻ 重构字典值提取以最大程度减少键查找
fastapi/utils.py
。PR #3139 由 @ShahriyarR提交。 - ✅ 为必需的可空参数和主体字段添加测试。PR #4907 由 @tiangolo提交。
- 👷 修复在 CI 中安装 Material for MkDocs Insiders。PR #4897 由 @tiangolo提交。
- 👷 添加预提交 CI 以代替自定义 GitHub Action。PR #4896 由 @tiangolo提交。
- 👷 添加预提交 GitHub Action 工作流。PR #4895 由 @tiangolo提交。
- 📝 根据操作系统偏好设置,为文档添加暗模式自动切换。PR #4869 由 @ComicShrimp提交。
- 🔥 删除未使用的旧挂起测试,这些测试已在其他地方覆盖。PR #4891 由 @tiangolo提交。
- 🔧 将 Python 格式化钩子添加到预提交。PR #4890 由 @tiangolo提交。
- 🔧 添加预提交,并进行第一次配置和格式化传递。PR #4888 由 @tiangolo提交。
- 👷 禁用 CI 在 fork 中安装 Material for MkDocs。PR #4410 由 @dolfinus提交。
0.77.1¶
升级¶
文档¶
- 📝 添加指向德语文章的链接:使用 Python 和 FastAPI 模块编写 REST API。PR #4624 由 @fschuermeyer提交。
- 📝 添加外部链接:PyCharm FastAPI 指南。PR #4512 由 @mukulmantosh提交。
- 📝 添加指向文章的外部链接:使用 FastAPI 和 Supabase 构建 API 并部署到 Deta。PR #4440 由 @aUnicornDev提交。
- ✏ 修复
docs/en/docs/tutorial/security/first-steps.md
中的一个小错误。PR #4515 由 @KikoIlievski提交。
翻译¶
- 🌐 为
docs/pl/docs/tutorial/index.md
添加波兰语翻译。PR #4516 由 @MKaczkow提交。 - ✏ 修复部署中的错别字。PR #4629 由 @raisulislam541提交。
- 🌐 为
docs/pt/docs/help-fastapi.md
添加葡萄牙语翻译。PR #4583 由 @mateusjs提交。
内部¶
0.77.0¶
升级¶
文档¶
- 📝 添加指向文章的外部链接:使用 ConfZ 无缝配置 FastAPI。PR #4414 由 @silvanmelchior提交。
- 📝 添加指向文章的外部链接:您应该尝试的 5 个 FastAPI 高级功能。PR #4436 由 @kaustubhgupta提交。
- ✏ 改写以提高有关
TestClient
文档的可读性。PR #4389 由 @rgilton提交。 - 📝 添加指向关于 Kafka、FastAPI 和 Ably 的博文外部链接。PR #4044 由 @Ugbot提交。
- ✏ 修复
docs/en/docs/tutorial/sql-databases.md
中的错别字。PR #4875 由 @wpyoga提交。 - ✏ 修复
docs/en/docs/async.md
中的错别字。PR #4726 由 @Prezu提交。
翻译¶
- 🌐 更新
docs/zh/docs/tutorial/query-params-str-validations.md
的源代码示例突出显示。PR #4237 由 @caimaoy提交。 - 🌐 删除翻译文档中对 aiofiles 的引用,因为它自 AnyIO 以来不再需要。PR #3594 由 @alonme提交。
- ✏ 🌐 修复葡萄牙语翻译中
docs/pt/docs/tutorial/path-params.md
的错别字。PR #4722 由 @CleoMenezesJr提交。 - 🌐 为某些语言修复翻译的实时文档服务器。PR #4729 由 @wakabame提交。
- 🌐 为
docs/pt/docs/tutorial/cookie-params.md
添加葡萄牙语翻译。PR #4112 由 @lbmendes提交。 - 🌐 修复法语翻译中
docs/tutorial/body.md
。PR #4332 由 @Smlep提交。 - 🌐 为
docs/ja/docs/advanced/conditional-openapi.md
添加日语翻译。PR #2631 由 @sh0nk提交。 - 🌐 修复日语翻译中
docs/ja/docs/tutorial/body.md
。PR #3062 由 @a-takahashi223提交。 - 🌐 为
docs/pt/docs/tutorial/background-tasks.md
添加葡萄牙语翻译。PR #2170 由 @izaguerreiro提交。 - 🌐 为
docs/deployment/deta.md
添加葡萄牙语翻译。PR #4442 由 @lsglucas提交。 - 🌐 为
docs/async.md
添加俄语翻译。PR #4036 由 @Winand提交。 - 🌐 为
docs/tutorial/body.md
添加葡萄牙语翻译。PR #3960 由 @leandrodesouzadev提交。 - 🌐 添加
tutorial/extra-data-types.md
的葡萄牙语翻译。PR #4077 由 @luccasmmg提交。 - 🌐 更新
docs/features.md
的德语翻译。PR #3905 由 @jomue提交。
0.76.0¶
升级¶
内部¶
- 👥 更新 FastAPI 人员。PR #4847 由 @github-actions[bot]提交。
- 🔧 添加 Budget Insight 赞助商。PR #4824 由 @tiangolo提交。
- 🍱 更新赞助商,ExoFlare 徽章。PR #4822 由 @tiangolo提交。
- 🔧 更新赞助商,重新启用 Dropbase,更新 TalkPython 链接。PR #4821 由 @tiangolo提交。
0.75.2¶
此版本包含对处理安全问题的第三方软件包的升级。虽然这些问题可能不会特别影响您,但请尽快升级。
修复¶
- ✅ 使用新的已修复的
ValidationError
JSON 模式修复新的/最近的测试。PR #4806 由 @tiangolo提交。 - 🐛 修复字段
loc
处ValidationError
的 JSON 模式。PR #3810 由 @dconathan提交。 - 🐛 修复对 APIRouter WebSockets 上前缀的支持。PR #2640 由 @Kludex提交。
升级¶
- ⬆️ 更新 ujson 范围以解决 CVE-2021-45958。PR #4804 由 @tiangolo提交。
- ⬆️ 升级额外内容“all”的依赖项上限范围。PR #4803 由 @tiangolo提交。
- ⬆ 升级 Swagger UI - swagger-ui-dist@4。这解决了 Swagger UI 本身的一个安全问题,在该问题中,可能能够将 HTML 注入 Swagger UI。请尽快升级,特别是如果您公开将 Swagger UI (
/docs
) 公开给非专业用户。PR #4347 由 @RAlanWright提交。
内部¶
- 🔧 更新赞助商,添加:ExoFlare、Ines 课程;删除:Dropbase、Vim.so、Calmcode;更新:Striveworks、TalkPython 和 TestDriven.io。PR #4805 由 @tiangolo提交。
- ⬆️ 升级 Codecov GitHub Action。PR #4801 由 @tiangolo提交。
0.75.1¶
翻译¶
- 🌐 开始荷兰语翻译。PR #4703 由 @tiangolo提交。
- 🌐 开始波斯语/Farsi 翻译。PR #4243 由 @aminalaee提交。
- ✏ 改写处理错误的句子。PR #1993 由 @khuhroproeza提交。
内部¶
- 👥 FastAPI人员更新。PR #4752 由 @github-actions[bot]提交。
- ➖ 临时从依赖项中移除typer-cli并升级Black以解除Pydantic CI的阻塞。PR #4754 由 @tiangolo提交。
- 🔧 添加配置以通知荷兰语翻译。PR #4702 由 @tiangolo提交。
- 👥 FastAPI人员更新。PR #4699 由 @github-actions[bot]提交。
- 🐛 修复FastAPI人员生成,以在提交中包含缺失的文件。PR #4695 由 @tiangolo提交。
- 🔧 更新Classiq赞助商链接。PR #4688 由 @tiangolo提交。
- 🔧 添加Classiq赞助商。PR #4671 由 @tiangolo提交。
- 📝 在文档中添加Jina的QA Bot,以帮助想要快速提问的人。PR #4655 由 @tiangolo基于原始PR #4626提交,后者由 @hanxiao提交。
0.75.0¶
特性¶
- ✨ 添加对自定义
generate_unique_id_function
的支持,以及生成客户端的文档。新文档:高级 - 生成客户端。PR #4650 由 @tiangolo提交。
0.74.1¶
特性¶
0.74.0¶
重大更改¶
使用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
之后的代码中断,则可以使用带有try
和finally
的块
async def do_something():
try:
yield something
finally:
some_cleanup()
...这样,无论发生什么异常,都会运行finally
块。
特性¶
- 上面提到的同一个PR #4575也修复了
yield
前后代码的contextvars
上下文。这是该PR的主要目标。
这意味着现在,如果您在yield
之前在上下文变量中设置了一个值,则该值在yield
之后仍然可用(正如您直观预期的那样)。它也意味着您可以在之后使用令牌重置上下文变量。
例如,这现在可以正常工作了
from contextvars import ContextVar
from typing import Any, Dict, Optional
legacy_request_state_context_var: ContextVar[Optional[Dict[str, Any]]] = ContextVar(
"legacy_request_state_context_var", default=None
)
async def set_up_request_state_dependency():
request_state = {"user": "deadpond"}
contextvar_token = legacy_request_state_context_var.set(request_state)
yield request_state
legacy_request_state_context_var.reset(contextvar_token)
...在此更改之前,重置上下文变量时会引发错误,因为由于其实现方式,contextvars
上下文不同。
注意:您可能不需要contextvars
,并且应该避免使用它们。但它们在某些高级场景中功能强大且有用,例如,从使用Flask的g
半全局变量的代码迁移。
技术细节:如果您想了解更多技术细节,可以查看PR描述 #4575。
内部¶
- 🔧 添加Striveworks赞助商。PR #4596 由 @tiangolo提交。
- 💚 仅在master分支上推送时构建文档,以避免PR中的重复运行。PR #4564 由 @tiangolo提交。
- 👥 FastAPI人员更新。PR #4502 由 @github-actions[bot]提交。
0.73.0¶
特性¶
- ✨ 添加对声明
UploadFile
参数而不显式使用File()
的支持。PR #4469 由 @tiangolo提交。新文档:请求文件 - 使用UploadFile的文件参数。 - ✨ 添加对使用枚举的标签的支持。PR #4468 由 @tiangolo提交。新文档:路径操作配置 - 使用枚举的标签。
- ✨ 允许隐藏来自OpenAPI(和Swagger UI)的
Query
、Cookie
、Header
和Path
参数。PR #3144 由 @astraldawn提交。新文档:查询参数和字符串验证 - 从OpenAPI中排除。
文档¶
修复¶
- 🐛 修复使用元组时阻止使用OpenAPI的错误。PR #3874 由 @victorbenichoux提交。
- 🐛 如果在
jsonable_encoder
中指定,则优先使用自定义编码器而不是默认编码器。PR #2061 由 @viveksunder提交。
内部¶
0.72.0¶
特性¶
- ✨ 启用配置Swagger UI参数。原始PR #2568 由 @jmriebold提交。以下是新的文档:配置Swagger UI。
文档¶
翻译¶
- 🌐 更新
docs/help-fastapi.md
的中文翻译。PR #3847 由 @jaystone776提交。 - 🌐 修复
docs/ko/docs/index.md
的韩语翻译。PR #4195 由 @kty4119提交。 - 🌐 添加
docs/pl/docs/index.md
的波兰语翻译。PR #4245 由 @MicroPanda123提交。 - 🌐 添加
docs\tutorial\path-operation-configuration.md
的中文翻译。PR #3312 由 @jaystone776提交。
内部¶
0.71.0¶
特性¶
- ✨ 添加Python 3.9和Python 3.10的文档和测试。PR #3712 由 @tiangolo提交。
- 您可以从Python类型简介开始,它解释了不同Python版本、Python 3.9和Python 3.10之间有哪些变化。
- 所有FastAPI文档都已更新。文档中每个可能在Python 3.9或Python 3.10中使用不同语法的代码示例现在都以选项卡的形式提供了所有替代方案。
- ⬆️ 将Starlette升级到0.17.1。PR #4145 由 @simondale00提交。
内部¶
- 👥 FastAPI人员更新。PR #4354 由 @github-actions[bot]提交。
- 🔧 为PyPI添加FastAPI Trove分类器,因为现在有一个了🤷😁。PR #4386 由 @tiangolo提交。
- ⬆ 升级MkDocs Material和配置。PR #4385 由 @tiangolo提交。
0.70.1¶
此特定FastAPI版本中没有有趣的内容。它主要是为了启用/解除阻止下一个版本的Pydantic的发布,该版本包含许多功能和改进。🤩
修复¶
- 🐛 修复数据类的JSON模式,支持Pydantic 1.9中的修复。PR #4272 由 @PrettyWood提交。
翻译¶
- 🌐 添加
docs/tutorial/request-forms-and-files.md
的韩语翻译。PR #3744 由 @NinaHwang提交。 - 🌐 添加
docs/tutorial/request-files.md
的韩语翻译。PR #3743 由 @NinaHwang提交。 - 🌐 添加
docs/tutorial/query-params-str-validations.md
的葡萄牙语翻译。PR #3965 由 @leandrodesouzadev提交。 - 🌐 添加
docs/tutorial/response-status-code.md
的韩语翻译。PR #3742 由 @NinaHwang提交。 - 🌐 添加教程 - JSON兼容编码器的韩语翻译。PR #3152 由 @NEONKID提交。
- 🌐 添加教程 - 路径参数和数字验证的韩语翻译。PR #2432 由 @hard-coders提交。
- 🌐 添加
docs/ko/docs/deployment/versions.md
的韩语翻译。PR #4121 由 @DevDae提交。 - 🌐 修复
docs/ko/docs/tutorial/index.md
的韩语翻译。PR #4193 由 @kimjaeyoonn提交。 - 🔧 添加CryptAPI赞助商。PR #4264 由 @tiangolo提交。
- 📝 更新
docs/tutorial/dependencies/classes-as-dependencies
:在“作为依赖项的类”的描述中添加查询参数的类型。PR #4015 由 @0417taehyun提交。 - 🌐 添加教程 - 第一步的法语翻译。PR #3455 由 @Smlep提交。
- 🌐 为
docs/tutorial/path-params.md
添加法语翻译。PR #3548 由 @Smlep提交。 - 🌐 为
docs/tutorial/query-params.md
添加法语翻译。PR #3556 由 @Smlep提交。 - 🌐 为
docs/python-types.md
添加土耳其语翻译。PR #3926 由 @BilalAlpaslan提交。
内部¶
- 👥 更新FastAPI人员信息。PR #4274 由 @github-actions[bot]提交。
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,使其与**asyncio**和**Trio**兼容。
您可以阅读有关使用Hypercorn运行FastAPI与Trio的文档。
此版本还删除了graphene
作为GraphQL的可选依赖项。如果您需要使用GraphQL,现在推荐的库是Strawberry。您可以阅读新的FastAPI与GraphQL文档。
功能¶
- ✨ 通过AnyIO添加对Trio的支持,将Starlette升级到
0.15.0
。PR #3372 由 @graingert提交。 - ➖ 删除
graphene
作为可选依赖项。PR #4007 由 @tiangolo提交。
文档¶
- 📝 添加使用Trio与Hypercorn的文档。PR #4014 由 @tiangolo提交。
- ✏ 修复部署指南中的错别字。PR #3975 由 @ghandic提交。
- 📝 使用带括号的额外内容时,更新文档中的pip install调用,使用引号以兼容Zsh。PR #3131 由 @tomwei7提交。
- 📝 添加文章外部链接:使用FastAPI和Heroku部署ML模型作为API。PR #3904 由 @kaustubhgupta提交。
- ✏ 修复
docs/en/docs/contributing.md
中文件路径的错别字。PR #3752 由 @NinaHwang提交。 - ✏ 修复
docs/en/docs/advanced/path-operation-advanced-configuration.md
和docs/en/docs/release-notes.md
中的错别字。PR #3750 由 @saintmalik提交。 - ✏️ 在安全教程中添加缺少的逗号。PR #3564 由 @jalvaradosegura提交。
- ✏ 修复
docs/en/docs/help-fastapi.md
中的错别字。PR #3760 由 @jaystone776提交。 - ✏ 修复
docs/en/docs/tutorial/bigger-applications.md
中关于文件路径的错别字。PR #3285 由 @HolyDorus提交。 - ✏ 改写以阐明
docs/en/docs/tutorial/testing.md
中的测试客户端。PR #3382 由 @Bharat123rox提交。 - 📝 修复不正确的突出显示代码。PR #3325 由 @paxcodes提交。
- 📝 添加文章外部链接:如何将FastAPI应用程序部署到Heroku。PR #3241 由 @Jarmos-san提交。
- ✏ 修复
docs/en/docs/advanced/templates.md
中的错别字(误译)。PR #3211 由 @oerpli提交。 - 📝 从
docs/en/docs/tutorial/request-files.md
中删除关于(现在已支持的)Swagger UI功能的说明。PR #2803 由 @gsganden提交。 - ✏ 修复
docs/tutorial/handling-errors.md
中的错别字并改写。PR #2700 由 @graue70提交。
翻译¶
- 🌐 初始化阿塞拜疆语翻译。PR #3941 由 @madatbay提交。
- 🌐 为
docs/fastapi-people.md
添加土耳其语翻译。PR #3848 由 @BilalAlpaslan提交。
内部¶
- 📝 添加支持的Python版本徽章。PR #2794 由 @hramezani提交。
- ✏ 修复日语文档中
docs/ja/docs/deployment/docker.md
的链接。PR #3245 由 @utamori提交。 - 🔧 修正pytest设置中的DeprecationWarning配置和注释。PR #4008 由 @graingert提交。
- 🔧 交换亮/暗主题按钮图标。PR #3246 由 @eddsalkield提交。
- 🔧 仅在Python 3.7及以上版本中进行lint。PR #4006 由 @tiangolo提交。
- 🔧 为阿塞拜疆语添加GitHub Action notify-translations配置。PR #3995 由 @tiangolo提交。
0.68.2¶
此版本**没有破坏性更改**。🎉
它升级了子依赖项的版本范围,以便使用FastAPI的应用程序可以轻松升级它们。
很快将发布一个新的FastAPI版本,将Starlette升级到利用最近的改进,但由于这有更高的可能性出现破坏性更改,因此将在单独的版本中发布。
功能¶
- ⬆ 提高aiofiles的支持版本以抑制警告。PR #2899 由 @SnkSynthesis提交。
- ➖ 在Python >= 3.7中不再需要backports。PR #1880 由 @FFY00提交。
- ⬆ 将所需的Python版本升级到>= 3.6.1,Pydantic使用的typing.Deque需要它。PR #2733 由 @hukkin提交。
- ⬆️ 将Uvicorn最大范围提升到0.15.0。PR #3345 由 @Kludex提交。
文档¶
- 📝 更新GraphQL文档,推荐Strawberry。PR #3981 由 @tiangolo提交。
- 📝 重写并扩展部署指南:概念、Uvicorn、Gunicorn、Docker、容器、Kubernetes。PR #3974 由 @tiangolo提交。
- 📝 使用更多解释和图表升级HTTPS指南。PR #3950 由 @tiangolo提交。
翻译¶
- 🌐 为
docs/features.md
添加土耳其语翻译。PR #1950 由 @ycd提交。 - 🌐 为
docs/benchmarks.md
添加土耳其语翻译。PR #2729 由 @Telomeraz提交。 - 🌐 为
docs/index.md
添加土耳其语翻译。PR #1908 由 @ycd提交。 - 🌐 为
docs/tutorial/body.md
添加法语翻译。PR #3671 由 @Smlep提交。 - 🌐 为
deployment/docker.md
添加法语翻译。PR #3694 由 @rjNemo提交。 - 🌐 为
docs/tutorial/path-params.md
添加葡萄牙语翻译。PR #3664 由 @FelipeSilva93提交。 - 🌐 为
docs/deployment/https.md
添加葡萄牙语翻译。PR #3754 由 @lsglucas提交。 - 🌐 为
docs/features.md
添加德语翻译。PR #3699 由 @mawassk提交。
内部¶
- ✨ 更新GitHub Action:notify-translations,以避免竞争条件。PR #3989 由 @tiangolo提交。
- ⬆️ 升级开发
autoflake
,支持多行导入。PR #3988 由 @tiangolo提交。 - ⬆️ 提高测试和文档的依赖项范围:pytest-cov、pytest-asyncio、black、httpx、sqlalchemy、databases、mkdocs-markdownextradata-plugin。PR #3987 由 @tiangolo提交。
- 👥 更新FastAPI人员信息。PR #3986 由 @github-actions[bot]提交。
- 💚 修复README和主页中的徽章。PR #3979 由 @ghandic提交。
- ⬆ 升级内部测试依赖项:将mypy升级到0.910版本,添加新需要的类型包。PR #3350 由 @ArcLightSlavik提交。
- ✨ 添加Deepset赞助。PR #3976 由 @tiangolo提交。
- 🎨 微调shell动画的CSS样式。PR #3888 由 @tiangolo提交。
- 🔧 添加新的赞助商Calmcode.io。PR #3777 由 @tiangolo提交。
0.68.1¶
翻译¶
- 🌐 添加
docs/fastapi-people.md
的葡萄牙语翻译。PR #3461 由 @ComicShrimp提交。 - 🌐 为
docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
添加中文翻译。PR #3492 由 @jaystone776提交。 - 🔧 为德语和印尼语添加新的翻译跟踪问题。PR #3718 由 @tiangolo提交。
- 🌐 为
docs/tutorial/dependencies/sub-dependencies.md
添加中文翻译。PR #3491 由 @jaystone776提交。 - 🌐 为
docs/advanced/index.md
添加葡萄牙语翻译。PR #3460 由 @ComicShrimp提交。 - 🌐
docs/async.md
的葡萄牙语翻译。PR #1330 由 @Serrones提交。 - 🌐 为
docs/async.md
添加法语翻译。PR #3416 由 @Smlep 提交。
内部事项¶
- ✨ 添加 GitHub Action:通知翻译。PR #3715 由 @tiangolo 提交。
- ✨ 更新 FastAPI 人员和赞助商的计算。PR #3714 由 @tiangolo 提交。
- ✨ 启用最新的 Material for MkDocs Insiders 功能。PR #3710 由 @tiangolo 提交。
- 🔥 删除/清理文档中示例中功能的额外导入。PR #3709 由 @tiangolo 提交。
- ➕ 更新文档库以在 Markdown 中包含源代码。PR #3648 由 @tiangolo 提交。
- ⬆ 启用 Python 3.9 的测试。PR #2298 由 @Kludex 提交。
- 👥 更新 FastAPI 人员。PR #3642 由 @github-actions[bot] 提交。
0.68.0¶
功能¶
- ✨ 添加对扩展的支持,并在每个路径操作中更新 OpenAPI 模式。新文档:FastAPI 路径操作高级配置 - OpenAPI 扩展。初始 PR #1922 由 @edouardlp 提交。
- ✨ 将其他 OpenAPI 元数据参数添加到
FastAPI
类中,并在自动 API 文档 UI 中显示。新文档:元数据和文档 URL。初始 PR #1812 由 @dkreeft 提交。 - ✨ 为所有安全方案类添加
description
参数,例如APIKeyQuery(name="key", description="A very cool API key")
。PR #1757 由 @hylkepostma 提交。 - ✨ 更新 OpenAPI 模型,支持递归模型和扩展。PR #3628 由 @tiangolo 提交。
- ✨ 从 Starlette 导入并重新导出数据结构,这些数据结构由请求属性在
fastapi.datastructures
中使用。初始 PR #1872 由 @jamescurtin 提交。
文档¶
- 📝 更新关于异步和响应模型的文档,使用更具性别中立性的语言。PR #1869 由 @Edward-Knight 提交。
翻译¶
- 🌐 为
docs/python-types.md
添加俄语翻译。PR #3039 由 @dukkee 提交。 - 🌐 为
docs/tutorial/dependencies/index.md
添加中文翻译。PR #3489 由 @jaystone776 提交。 - 🌐 为
docs/external-links.md
添加俄语翻译。PR #3036 由 @dukkee 提交。 - 🌐 为
docs/tutorial/dependencies/global-dependencies.md
添加中文翻译。PR #3493 由 @jaystone776 提交。 - 🌐 为
docs/deployment/versions.md
添加葡萄牙语翻译。PR #3618 由 @lsglucas 提交。 - 🌐 为
docs/tutorial/security/oauth2-jwt.md
添加日语翻译。PR #3526 由 @sattosan 提交。
内部事项¶
- ✅ 将
docs_src
目录添加到测试覆盖范围并更新测试。初始 PR #1904 由 @Kludex 提交。 - 🔧 添加新的 GitHub 模板,其中包含用于新问题的表单。PR #3612 由 @tiangolo 提交。
- 📝 将官方 FastAPI Twitter 添加到文档中:@fastapi。PR #3578 由 @tiangolo 提交。
0.67.0¶
功能¶
- ✨ 在请求体和
response_model
中添加对dataclasses
的支持。新文档:高级用户指南 - 使用 Dataclasses。PR #3577 由 @tiangolo 提交。 - ✨ 支持在响应中使用
dataclasses
。PR #3576 由 @tiangolo 提交,延续自初始 PR #2722 由 @amitlissack 提交。
文档¶
- 📝 添加外部链接:如何为 FastAPI 创建一个伪造的证书颁发机构并生成 TLS 证书。PR #2839 由 @aitoehigie 提交。
- ✏ 修复以下文件中的代码高亮行:
body-nested-models.md
。PR #3463 由 @jaystone776 提交。 - ✏ 修复
body-nested-models.md
中的错别字。PR #3462 由 @jaystone776 提交。 - ✏ 修复错别字“might me” -> “might be”,位于
docs/en/docs/tutorial/schema-extra-example.md
。PR #3362 由 @dbrakman 提交。 - 📝 添加外部链接:使用 NuxtJS 和 FastAPI 构建简单的电子商务网站。PR #3271 由 @ShahriyarR 提交。
- 📝 添加外部链接:使用 Sklearn、FastAPI 和 Docker 提供机器学习模型服务。PR #2974 由 @rodrigo-arenas 提交。
- ✏️ 修复 datastructures 文件中文档字符串的错别字。PR #2887 由 @Kludex 提交。
- 📝 添加外部链接:在 Ubuntu 上部署 FastAPI 并使用 Caddy 2 Web 服务器提供服务。PR #3572 由 @tiangolo 提交。
- 📝 添加外部链接,替换 #1898。PR #3571 由 @tiangolo 提交。
内部事项¶
- 🎨 改善赞助商的样式,添加圆角边框。PR #2388 由 @Kludex 提交。
- 👷 更新 GitHub Action latest-changes。PR #3574 由 @tiangolo 提交。
- 👷 更新 GitHub Action latest-changes。PR #3573 由 @tiangolo 提交。
- 👷 重命名并阐明 CI 工作流作业名称。PR #3570 由 @tiangolo 提交。
- 👷 更新 GitHub Action latest-changes,第二次尝试 ⚾。PR #3575 由 @tiangolo 提交。
- 🔧 对文档中的外部链接进行排序,使最新的链接位于顶部。PR #3568 由 @tiangolo 提交。
0.66.1¶
翻译¶
- 🌐 添加德语翻译的基本设置。PR #3522 由 @0x4Dark 提交。
- 🌐 为
docs/tutorial/security/index.md
添加葡萄牙语翻译。PR #3507 由 @oandersonmagalhaes 提交。 - 🌐 为
docs/deployment/index.md
添加葡萄牙语翻译。PR #3337 由 @lsglucas 提交。
内部事项¶
- 🔧 配置严格的 pytest 选项并更新/重构测试。将 pytest 升级到
>=6.2.4,<7.0.0
,并将 pytest-cov 升级到>=2.12.0,<3.0.0
。初始 PR #2790 由 @graingert 提交。 - ⬆️ 将 python-jose 依赖项升级到
>=3.3.0,<4.0.0
以用于测试。PR #3468 由 @tiangolo 提交。
0.66.0¶
功能¶
- ✨ 允许将
response_class
设置为RedirectResponse
或FileResponse
,并从函数中返回 URL。新的和更新的文档位于教程部分的**自定义响应 - HTML、流、文件等**中,在RedirectResponse和FileResponse中。PR #3457 由 @tiangolo 提交。
修复¶
- 🐛 修复
jsonable_encoder
中字典的 include/exclude 问题。PR #2016 由 @Rubikoid 提交。 - 🐛 支持在生成的输出 OpenAPI 中使用自定义 OpenAPI/JSON 模式字段。PR #1429 由 @jmagnusson 提交。
翻译¶
- 🌐 为
tutorial/query-params.md
添加西班牙语翻译。PR #2243 由 @mariacamilagl 提交。 - 🌐 为
advanced/response-directly.md
添加西班牙语翻译。PR #1253 由 @jfunez 提交。 - 🌐 为
advanced/additional-status-codes.md
添加西班牙语翻译。PR #1252 由 @jfunez 提交。 - 🌐 为
advanced/path-operation-advanced-configuration.md
添加西班牙语翻译。PR #1251 由 @jfunez 提交。
0.65.3¶
修复¶
- ♻ 当未提供 Content-Type 标头时,假定请求体包含 JSON。这修复了由0.65.2 版本的 PR #2118 引入的重大更改。它应该允许升级 FastAPI 应用程序,这些应用程序使用发送 JSON 数据但没有
Content-Type
标头的客户端。并且仍然可以防止 CSRF 攻击。PR #3456 由 @tiangolo 提交。
翻译¶
- 🌐 初始化印度尼西亚语翻译。PR #3014 由 @pace-noge 提交。
- 🌐 添加教程 - 路径参数的西班牙语翻译。PR #2219 由 @mariacamilagl 提交。
- 🌐 添加教程 - 第一步的西班牙语翻译。PR #2208 由 @mariacamilagl 提交。
- 🌐 教程 - 主体 - 字段的葡萄牙语翻译。PR #3420 由 @ComicShrimp 提交。
- 🌐 为教程 - 请求 - 表单和文件添加中文翻译。PR #3249 由 @jaystone776 提交。
- 🌐 为教程 - 处理错误添加中文翻译。PR #3299 由 @jaystone776 提交。
- 🌐 为教程 - 表单数据添加中文翻译。PR #3248 由 @jaystone776 提交。
- 🌐 为教程 - 主体 - 更新添加中文翻译。PR #3237 由 @jaystone776 贡献。
- 🌐 为 FastAPI 人物添加中文翻译。PR #3112 由 @hareru 贡献。
- 🌐 为项目生成添加法语翻译。PR #3197 由 @Smlep 贡献。
- 🌐 为 Python 类型简介添加法语翻译。PR #3185 由 @Smlep 贡献。
- 🌐 为外部链接添加法语翻译。PR #3103 由 @Smlep 贡献。
- 🌐 为替代方案、灵感和比较添加法语翻译。PR #3020 由 @rjNemo 贡献。
- 🌐 修复教程 - Python 类型简介中中文翻译代码片段不匹配的问题。PR #2573 由 @BoYanZh 贡献。
- 🌐 为开发贡献添加葡萄牙语翻译。PR #1364 由 @Serrones 贡献。
- 🌐 为教程 - 请求 - 文件添加中文翻译。PR #3244 由 @jaystone776 贡献。
内部¶
- 👥 更新 FastAPI 人物。PR #3450 由 @github-actions[bot] 贡献。
- 👥 更新 FastAPI 人物。PR #3319 由 @github-actions[bot] 贡献。
- ⬆ 将文档开发依赖项
typer-cli
升级到 >=0.0.12 以解决冲突。PR #3429 由 @tiangolo 贡献。
0.65.2¶
安全修复¶
- 🔒 在假设为 JSON 之前检查 Content-Type 请求头。初始 PR #2118 由 @patrickkwang 贡献。
此更改修复了在使用 Cookie 进行身份验证时,在路径操作中通过浏览器发送的 JSON 有效负载导致的 CSRF 安全漏洞。
在低于 0.65.2
的版本中,FastAPI 会尝试将请求有效负载读取为 JSON,即使发送的 content-type
头未设置为 application/json
或兼容的 JSON 媒体类型(例如 application/geo+json
)。
因此,内容类型为 text/plain
且包含 JSON 数据的请求将被接受,并且 JSON 数据将被提取。
但是,内容类型为 text/plain
的请求不受 CORS 预检的影响,因为它们被认为是 简单请求。因此,浏览器会立即执行它们,包括 Cookie,并且文本内容可以是将被解析并被 FastAPI 应用程序接受的 JSON 字符串。
有关更多详细信息,请参阅 CVE-2021-32677。
感谢 Dima Boger 的安全报告!🙇🔒
内部¶
- 🔧 更新赞助商徽章和课程包。PR #3340 由 @tiangolo 贡献。
- 🔧 添加新的金牌赞助商 Jina 🎉。PR #3291 由 @tiangolo 贡献。
- 🔧 为 FastAPI 课程包添加新的横幅赞助商徽章。PR #3288 由 @tiangolo 贡献。
- 👷 升级问题管理器 GitHub Action。PR #3236 由 @tiangolo 贡献。
0.65.1¶
安全修复¶
- 📌 升级 pydantic 版本,以处理安全漏洞 CVE-2021-29510。PR #3213 由 @tiangolo 贡献。
0.65.0¶
重大更改 - 升级¶
- ⬆️ 将 Starlette 升级到
0.14.2
,包括从 Starlette 迁移的内部UJSONResponse
。这包括 Starlette 的一些错误修复和功能。PR #2335 由 @hanneskuettner 贡献。
翻译¶
- 🌐 初始化新的波兰语翻译语言。PR #3170 由 @neternefer 贡献。
内部¶
- 👷 添加 GitHub Action 缓存以加快 CI 安装速度。PR #3204 由 @tiangolo 贡献。
- ⬆️ 将 setup-python GitHub Action 升级到 v2。PR #3203 由 @tiangolo 贡献。
- 🐛 修复文档脚本,以便使用
overrides
模板生成新的翻译语言。PR #3202 由 @tiangolo 贡献。 - ✨ 添加新的 Deta 横幅徽章,并添加新的赞助级别🙇。PR #3194 由 @tiangolo 贡献。
- 👥 更新 FastAPI 人物。PR #3189 由 @github-actions[bot] 贡献。
- 🔊 更新 FastAPI 人物以允许更好的调试。PR #3188 由 @tiangolo 贡献。
0.64.0¶
功能¶
- ✨ 添加对在请求主体以及路径、查询、Cookie 和头参数中添加多个
examples
的支持。新的文档:声明请求示例数据。初始 PR #1267 由 @austinorr 贡献。
修复¶
- 📌 为测试固定 SQLAlchemy 版本范围,因为它不使用语义化版本控制。PR #3001 由 @tiangolo 贡献。
- 🎨 添加 mypy 新要求的类型注释。PR #2882 由 @tiangolo 贡献。
- 🎨 删除内部的“type: ignore”,现在已不再需要。PR #2424 由 @AsakuraMizu 贡献。
文档¶
- 📝 添加俄语文章“FastAPI:了解框架”的链接。PR #2564 由 @trkohler 贡献。
- 📝 添加指向博客文章“使用 Auth0 认证您的 FastAPI 应用程序”的外部链接。PR #2172 由 @dompatmore 贡献。
- 📝 修复指向文章“使用 FastAPI 和 Streamlit 在 Python 中提供机器学习模型”的损坏链接。PR #2557 由 @davidefiocco 贡献。
- 📝 添加 FastAPI Medium 文章:将 dockerized FastAPI 应用程序部署到 AWS。PR #2515 由 @vjanz 贡献。
- ✏ 修复教程 - 处理错误中的错别字。PR #2486 由 @johnthagen 贡献。
- ✏ 修复安全 OAuth2 范围中的错别字/澄清文档。PR #2407 由 @jugmac00 贡献。
- ✏ 修复/澄清 SQL(关系型)数据库文档中的错别字。PR #2393 由 @kangni 贡献。
- 📝 添加指向“适用于 Flask 用户的 FastAPI”的外部链接。PR #2280 由 @amitness 贡献。
翻译¶
- 🌐 修复教程 - 查询参数的中文翻译,删除过时的内容。PR #3051 由 @louis70109 贡献。
- 🌐 为教程 - 后台任务添加法语翻译。PR #3098 由 @Smlep 贡献。
- 🌐 修复文档/ko/docs/index.md 的韩语翻译。PR #3159 由 @SueNaEunYang 贡献。
- 🌐 为教程 - 查询参数添加韩语翻译。PR #2390 由 @hard-coders 贡献。
- 🌐 为 FastAPI 人物添加法语翻译。PR #2232 由 @JulianMaurin 贡献。
- 🌐 为教程 - 路径参数添加韩语翻译。PR #2355 由 @hard-coders 贡献。
- 🌐 为功能添加法语翻译。PR #2157 由 @Jefidev 贡献。
- 👥 更新 FastAPI 人物。PR #3031 由 @github-actions[bot] 贡献。
- 🌐 为教程 - 调试添加中文翻译。PR #2737 由 @blt232018 贡献。
- 🌐 为教程 - 安全 - 使用密码(和哈希)的 OAuth2,带有 JWT 令牌的 Bearer 添加中文翻译。PR #2642 由 @waynerv 贡献。
- 🌐 为教程 - 头参数添加韩语翻译。PR #2589 由 @mode9 贡献。
- 🌐 为教程 - 元数据和文档 URL 添加中文翻译。PR #2559 由 @blt232018 贡献。
- 🌐 为教程 - 第一步添加韩语翻译。PR #2323 由 @hard-coders 贡献。
- 🌐 为教程 - CORS(跨源资源共享)添加中文翻译。PR #2540 由 @blt232018 贡献。
- 🌐 为教程 - 中间件添加中文翻译。PR #2334 由 @lpdswing 贡献。
- 🌐 为教程 - 简介添加韩语翻译。PR #2317 由 @hard-coders 贡献。
- 🌐 为教程 - 更大型应用程序 - 多个文件添加中文翻译。PR #2453 由 @waynerv 贡献。
- 🌐 为教程 - 安全 - 安全简介添加中文翻译。PR #2443 由 @waynerv 贡献。
- 🌐 为教程 - 头参数添加中文翻译。PR #2412 由 @maoyibo 贡献。
- 🌐 为教程 - 额外数据类型添加中文翻译。PR #2410 由 @maoyibo 贡献。
- 🌐 为部署 - Docker 添加日语翻译。PR #2312 由 @tokusumi 贡献。
- 🌐 为部署 - 版本添加日语翻译。PR #2310 由 @tokusumi 贡献。
- 🌐 为教程 - Cookie 参数添加中文翻译。PR #2261 由 @alicrazy1947 贡献。
- 🌐 为教程 - 静态文件添加日语翻译。PR #2260 由 @tokusumi 贡献。
- 🌐 为教程 - 测试添加日语翻译。PR #2259 由 @tokusumi 贡献。
- 🌐 为教程 - 调试添加日语翻译。PR #2256 由 @tokusumi 贡献。
- 🌐 为教程 - 中间件添加日语翻译。PR #2255 由 @tokusumi 提交。
- 🌐 为并发和异步/等待添加日语翻译。PR #2058 由 @tokusumi 提交。
- 🌐 为教程 - 安全 - 使用密码和 Bearer 的简单 OAuth2 添加中文翻译。PR #2514 由 @waynerv 提交。
- 🌐 为部署 - Deta 添加日语翻译。PR #2314 由 @tokusumi 提交。
- 🌐 为教程 - 安全 - 获取当前用户添加中文翻译。PR #2474 由 @waynerv 提交。
- 🌐 为部署 - 手动添加日语翻译。PR #2313 由 @tokusumi 提交。
- 🌐 为部署 - 简介添加日语翻译。PR #2309 由 @tokusumi 提交。
- 🌐 为 FastAPI 人员添加日语翻译。PR #2254 由 @tokusumi 提交。
- 🌐 为高级 - 路径操作高级配置添加日语翻译。PR #2124 由 @Attsun1031 提交。
- 🌐 为外部链接添加日语翻译。PR #2070 由 @tokusumi 提交。
- 🌐 为教程 - 主体 - 更新添加日语翻译。PR #1956 由 @SwftAlpc 提交。
- 🌐 为教程 - 表单数据添加日语翻译。PR #1943 由 @SwftAlpc 提交。
- 🌐 为教程 - Cookie 参数添加日语翻译。PR #1933 由 @SwftAlpc 提交。
内部¶
- 🔧 更新顶部横幅,指向新闻通讯。PR #3003 由 @tiangolo 提交。
- 🔧 禁用赞助商 WeTransfer。PR #3002 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员。PR #2880 由 @github-actions[bot] 提交。
- 👥 更新 FastAPI 人员。PR #2739 由 @github-actions[bot] 提交。
- 🔧 添加新的黄金赞助商 Talk Python 🎉。PR #2673 由 @tiangolo 提交。
- 🔧 添加新的黄金赞助商 vim.so 🎉。PR #2669 由 @tiangolo 提交。
- 🔧 添加 FastAPI 用户调查横幅。PR #2623 由 @tiangolo 提交。
- 🔧 添加新的青铜赞助商(s) 🥉🎉。PR #2622 由 @tiangolo 提交。
- 📝 更新社交链接:添加 Discord,修复 GitHub。PR #2621 由 @tiangolo 提交。
- 🔧 更新 FastAPI 人员 GitHub 赞助商顺序。PR #2620 由 @tiangolo 提交。
- 🔧 更新 InvestSuite 赞助商数据。PR #2608 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员。PR #2590 由 @github-actions[bot] 提交。
0.63.0¶
功能¶
重大更改¶
- ⬆️ 在安装
fastapi[all]
时将 Uvicorn 升级到最新版本,包括uvloop
,新范围为uvicorn[standard] >=0.12.0,<0.14.0
。PR #2548 由 @tiangolo 提交。
修复¶
- 🐛 PR #2547(请参阅上文)还修复了一些使用
callbacks
参数和OAuth2
类时出现的误报 mypy 错误。
文档¶
- 📝 更新 Uvicorn 安装说明,以使用 uvicorn[standard](包括 uvloop)。PR #2543 由 @tiangolo 提交。
- 📝 更新 Deta 教程的标题。PR #2466 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员。PR #2454 由 @github-actions[bot] 提交。
翻译¶
- 🌐 添加文档语言选择器小部件。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¶
功能¶
到目前为止,对于多个选项,将它们应用于一组路径操作的唯一方法是在 include_router
中。这工作得很好,但是对 app.include_router()
或 router.include_router()
的调用通常在另一个文件中完成。
这意味着,例如,要将身份验证应用于路由器中的所有路径操作,最终会在不同的文件中完成,而不是将相关的逻辑放在一起。
在 include_router
中设置选项在某些情况下仍然有意义,例如,覆盖或增强从包含在应用程序中的第三方路由器继承的配置。但在属于更大应用程序的路由器中,在创建 APIRouter
时添加这些设置可能更有意义。
在 FastAPI
中
这允许设置(主要是新的)参数(除了已有的参数之外)
default_response_class
:更新以处理APIRouter
和include_router
中的默认值。dependencies
:包含✨ 顶层依赖项 ✨,这些依赖项应用于整个应用程序。例如,添加全局身份验证。callbacks
:应用于所有路径操作的 OpenAPI 回调。deprecated
:将所有路径操作标记为已弃用。🤷include_in_schema
:允许从 OpenAPI 模式中排除所有路径操作。responses
:应用于所有路径操作的 OpenAPI 响应。
例如
from fastapi import FastAPI, Depends
async def some_dependency():
return
app = FastAPI(dependencies=[Depends(some_dependency)])
在 APIRouter
中
这允许设置(主要是新的)参数(除了已有的参数之外)
default_response_class
:更新以处理APIRouter
和include_router
中的默认值。例如,在创建回调时,不需要显式设置它。dependencies
:包含✨ 路由器级依赖项 ✨,这些依赖项应用于路由器中的所有路径操作。到目前为止,这只能通过include_router
实现。callbacks
:应用于此路由器中所有路径操作的 OpenAPI 回调。deprecated
:将此路由器中的所有路径操作标记为已弃用。include_in_schema
:允许从 OpenAPI 模式中排除此路由器中的所有路径操作。responses
:应用于此路由器中所有路径操作的 OpenAPI 响应。prefix
:设置路由器的路径前缀。到目前为止,这只能在调用include_router
时实现。tags
:应用于此路由器中所有路径操作的 OpenAPI 标签。
例如
from fastapi import APIRouter, Depends
async def some_dependency():
return
router = APIRouter(prefix="/users", dependencies=[Depends(some_dependency)])
在 include_router
中
现在大多数这些设置都支持在 APIRouter
中,APIRouter
通常更靠近相关代码,因此建议尽可能使用 APIRouter
。
但是 include_router
仍然有用,例如,在包含第三方路由器或在多个项目之间共享的通用路由器时添加选项(如 dependencies
、prefix
和 tags
)。
此 PR 允许设置(主要是新的)参数(除了已有的参数之外)
default_response_class
:更新以处理APIRouter
和FastAPI
中的默认值。deprecated
:在 OpenAPI 中将路由器中的所有路径操作标记为已弃用。include_in_schema
:允许禁用所有路径操作在 OpenAPI 模式中显示。callbacks
:应用于此路由器中所有路径操作的 OpenAPI 回调。
注意:所有以前的参数仍然存在,因此仍然可以在 include_router
中声明 dependencies
。
重大更改¶
- PR #2434 包含一些改进,这些改进不应影响正常的用例,但可能会影响高级场景
- 如果您正在测试生成的 OpenAPI(您不应该这样做,FastAPI 已经为您广泛地测试了它):
include_router
和路径操作中tags
的顺序已更新以保持一致性,但这只是一个简单的顺序更改。 - 如果您有高级自定义逻辑来访问每个路由的
route.response_class
或router.default_response_class
或app.default_response_class
:APIRoute
中response_class
的默认值以及APIRouter
和FastAPI
中default_response_class
的默认值现在是内部使用的DefaultPlaceholder
,用于处理和解决默认值和覆盖。DefaultPlaceholder
内部的实际响应类可在route.response_class.value
中获取。
- 如果您正在测试生成的 OpenAPI(您不应该这样做,FastAPI 已经为您广泛地测试了它):
文档¶
-
PR #2434(上文)包含新的或更新的文档
-
📝 将 FastAPI 监控博文添加到外部链接。PR #2324 由 @louisguitton 提交。
- ✏️ 修复 Deta 教程中的错别字。PR #2320 由 @tiangolo 提交。
- ✨ 添加 Discord 聊天。PR #2322 由 @tiangolo 提交。
- 📝 修复赞助商的图片链接。PR #2304 由 @tiangolo 提交。
翻译¶
- 🌐 为高级 - 自定义响应添加日语翻译。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 提交。
- 💚 修复在分支中禁用 MkDocs Insiders 的 Material 安装问题,一击⚾。PR #2340 由 @tiangolo 提交。
- 🐛 修复在分支中禁用 MkDocs Insiders 的 Material 安装问题。PR #2339 由 @tiangolo 提交。
- ✨ 添加银牌赞助商 WeTransfer。PR #2338 由 @tiangolo 提交。
- ✨ 为文档设置并启用 MkDocs Insiders 的 Material。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_credentials 的 allow_origins 的注释。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 提交。
内部¶
- 🔥 清理文档预览 GitHub Action 升级后的内容。PR #2248 由 @tiangolo 提交。
- 🐛 修复 CI 文档预览,解压文档。PR #2246 由 @tiangolo 提交。
- ✨ 为来自分支的 PR 添加即时文档部署预览。PR #2244 由 @tiangolo 提交。
- ⚡️ 在子进程中并行构建语言的文档以加快 CI 速度。PR #2242 由 @tiangolo 提交。
- 🐛 修复部分翻译的文档顺序生成。PR #2238 由 @tiangolo 提交。
- 👥 更新 FastAPI 人员。PR #2202 由 @github-actions[bot] 提交。
- ♻️ 更新 FastAPI 人员 GitHub Action 以将 PR 作为 github-actions 发送。PR #2201 由 @tiangolo 提交。
- 🔧 更新 FastAPI 人员 GitHub Action 配置,每月运行一次。PR #2199 由 @tiangolo 提交。
- 🐛 修复 FastAPI 人员 GitHub Action Docker 依赖项,一击⚾。PR #2198 由 @tiangolo 提交。
- 🐛 修复 FastAPI 人员 GitHub Action Docker 依赖项。PR #2197 由 @tiangolo 提交。
- 🐛 修复 FastAPI 人员 GitHub Action 在没有任何更改时的情况。PR #2196 由 @tiangolo 提交。
- 👥 添加新的部分 FastAPI 人员。PR #2195 由 @tiangolo 提交。
- ⬆️ 升级 GitHub Action 最新更改。PR #2190 由 @tiangolo 提交。
- ⬆️ 升级 GitHub Action 标签 Approved。PR #2189 由 @tiangolo 提交。
- 🔧 更新 GitHub Action 标签 Approved,于 12:00 运行。PR #2185 由 @tiangolo 提交。
- 👷 升级 GitHub Action 最新更改。PR #2184 由 @tiangolo 提交。
- 👷 将 GitHub Action 标签 Approved 设置为每天运行,而不是每分钟运行。PR #2163 由 @tiangolo 提交。
- 🔥 移除 pr-approvals GitHub Action,因为它与 fork 不兼容。使用新的 Action。PR #2162 由 @tiangolo 提交。
- 👷 添加 GitHub Action 最新更改。PR #2160。
- 👷 添加 GitHub Action 标签 Approved。PR #2161。
0.61.1¶
修复¶
- 修复直接使用
jsonable_encoder
与 SQLAlchemy 模型时出现的问题。PR #1987。
文档¶
- 修复 NoSQL 文档中的错别字。PR #1980 由 @facundojmaero 提交。
翻译¶
- 添加 首页日语 翻译。PR #1571 由 @ryuckel 提交。
- 初始化法语翻译。PR #1975 由 @JulianMaurin-BM 提交。
- 初始化土耳其语翻译。PR #1905 由 @ycd 提交。
内部¶
0.61.0¶
特性¶
- 添加对注入
HTTPConnection
(作为Request
和WebSocket
)的支持。对于在依赖项中共享应用程序状态很有用。PR #1827 由 @nsidnev 提交。 - 导出
WebSocketDisconnect
并将 WebSocket 断开连接示例处理添加到文档中。PR #1822 由 @rkbeatss 提交。
重大更改¶
- 要求 Pydantic >
1.0.0
。- 移除对已弃用的 Pydantic
0.32.2
的支持。这提高了可维护性并允许使用新功能。 - 在
FastAPI
和APIRouter
中- 移除与已弃用参数
response_model_skip_defaults
相关的路径操作装饰器(改用response_model_exclude_unset
)。 - 将路径操作装饰器参数
response_model_exclude
的默认值从set()
更改为None
(与 Pydantic 中相同)。
- 移除与已弃用参数
- 在
encoders.jsonable_encoder
中- 移除已弃用的
skip_defaults
,改用exclude_unset
。 - 将
exclude
的默认值从set()
更改为None
(与 Pydantic 中相同)。
- 移除已弃用的
- PR #1862。
- 移除对已弃用的 Pydantic
- 在
encoders.jsonable_encoder
中移除参数sqlalchemy_safe
。- 它是一个早期允许返回 SQLAlchemy 模型的 hack,但从未记录在案,建议的方法是使用 Pydantic 的
orm_mode
,如教程中所述:SQL(关系型)数据库。 - PR #1864。
- 它是一个早期允许返回 SQLAlchemy 模型的 hack,但从未记录在案,建议的方法是使用 Pydantic 的
文档¶
- 添加 TestDriven.io 课程的链接:使用 FastAPI 和 Docker 进行测试驱动开发。PR #1860。
- 修复文档中有关错误处理示例的空日志消息。PR #1815 由 @manlix 提交。
- 改写文本以减少歧义,同时避免使用性别特定语言。PR #1824 由 @Mause 提交。
内部¶
- 添加 Flake8 代码风格检查。原始 PR #1774 由 @MashhadiNima 提交。
- 禁用 Gitter 机器人,因为它目前已损坏,并且 Gitter 的响应未显示问题。PR #1853。
0.60.2¶
- 修复查询参数文档中的错别字。PR #1832 由 @ycd 提交。
- 添加有关 异步测试 的文档。PR #1619 由 @empicano 提交。
- 在未安装
python-multipart
时,使用表单数据(Form
、File
)时引发异常。- 到目前为止,应用程序将运行,并且仅在接收表单数据请求时才会引发异常,新的行为(尽早引发异常)将防止部署依赖项损坏的应用程序。
- 它还检测是否安装了正确的包
python-multipart
而不是不正确的multipart
(两者都可以导入为multipart
)。 - PR #1851 基于原始 PR #1627 由 @chrisngyn、@YKo20010、@kx-chen 提交。
- 重新启用 Gitter 发布机器人。PR #1831。
- 从主 SQL 教程中添加指向异步 SQL 数据库教程的链接。PR #1813 由 @short2strings 提交。
- 修复代理后面教程中的错别字。PR #1807 由 @toidi 提交。
- 修复葡萄牙语文档中的错别字。PR #1795 由 @izaguerreiro 提交。
- 添加乌克兰语翻译设置。PR #1830。
- 添加外部链接 使用 FastAPI 构建和托管快速数据科学应用程序。PR #1786 由 @Kludex 提交。
- 修复继承自其他具有自定义
json_encoders
模型的 Pydantic 模型的编码问题。PR #1769 由 @henrybetts 提交。 - 简化和改进
jsonable_encoder
。PR #1754 由 @MashhadiNima 提交。 - 在多个点简化内部代码语法。PR #1753 由 @uriyyo 提交。
- 改进内部类型提示,声明
Optional
参数。PR #1731 由 @MashhadiNima 提交。 - 添加外部链接 在 Azure App Service 上部署 FastAPI 到文档中。PR #1726 由 @windson 提交。
- 添加指向 Starlette 文档中有关 WebSocket 测试的链接。PR #1717 由 @hellocoldworld 提交。
- 重构生成依赖项,合并 for 循环。PR #1714 由 @Bloodielie 提交。
- 更新 Jinja 模板示例以包含 HTML 媒体类型。PR #1690 由 @frafra 提交。
- 修复安全文档中的错别字。PR #1678 由 @nilslindemann 提交。
- 修复依赖项文档中的错别字。PR #1675 由 @nilslindemann 提交。
- 修复
FastAPI
中**extra
参数的类型注释。PR #1659 由 @bharel 提交。 - 将 MkDocs Material 升级到最新版本以修复深色模式下浏览器的文档问题。PR #1789 由 @adriencaccia 提交。
- 移除每个提交中的文档预览注释。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 以获取包含文档预览的工件。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 实用程序文档字符串中的错别字。PR #1621 由 @tomarv2 提交。
- 更新 JWT 文档以使用 Python-jose 而不是 PyJWT。初始 PR #1610 由 @asheux 提交。
- 修复/重新启用文档中的搜索栏。PR #1703。
- 当存在
root_path
时,在 OpenAPIservers
中自动生成“服务器”,而不是为所有paths
添加前缀。 - 修复外部链接中的错别字/链接。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¶
- 在文档中添加指向 Pydantic 数据类型的链接。PR #1612 由 @tayoogunbiyi 提交。
- 修复
openapi_prefix
警告日志中的链接。PR #1611 由 @bavaria95 提交。 - 修复文档中的错误链接。PR #1603 由 @molto0504 提交。
- 为使用 Vim 的贡献者将 Vim 临时文件添加到
.gitignore
中。PR #1590 由 @asheux 提交。 - 修复文档中关于子应用程序的错别字。PR #1578 由 @schlpbch 提交。
- 在文档中的所有示例中使用
Optional
。原始 PR #1574 由 @chrisngyn、@kx-chen、@YKo20010 提交。更新并合并 PR #1644。 - 更新
response_model_by_alias
的测试和处理。PR #1642。 - 为 请求体 - 字段 添加中文翻译。PR #1569 由 @waynerv 提交。
- 更新主页的中文翻译。PR #1564 由 @waynerv 提交。
- 为 请求体 - 多个参数 添加中文翻译。PR #1532 由 @waynerv 提交。
- 为 路径参数和数值校验 添加中文翻译。PR #1506 由 @waynerv 提交。
- 添加 GitHub Action 以自动为批准的 PR 打上标签(主要用于翻译)。PR #1638。
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¶
- 从“外部链接”中删除损坏的链接。PR #1565 由 @victorphoenix3 提交。
- 更新/修复 带有依赖项的 WebSockets 的文档。原始 PR #1540 由 @ChihSeanHsu 提交。
- 在
status_code
参数中添加对 Python 的http.HTTPStatus
的支持。PR #1534 由 @retnikt 提交。 - 当使用带有
__root__
的 Pydantic 模型时,在jsonable_encoder
中使用内部值。PR #1524 由 @patrickkwang 提交。 - 更新路径参数的文档。PR #1521 由 @yankeexe 提交。
- 更新第一步、链接和措辞的文档。PR #1518 由 @yankeexe 提交。
- 在 Swagger UI 中启用
showCommonExtensions
以显示其他验证,例如maxLength
等。PR #1466 由 @TiewKH 提交。 - 使
OAuth2PasswordRequestFormStrict
可直接从fastapi.security
中导入。PR #1462 由 @RichardHoekstra 提交。 - 添加关于 默认响应类 的文档。PR #1455 由 @TezRomacH 提交。
- 在文档中添加关于 响应模型 中的其他参数
response_model_exclude_defaults
和response_model_exclude_none
的说明。PR #1427 由 @wshayes 提交。 - 在文档中添加关于 PyCharm Pydantic 插件 的说明。PR #1420 由 @koxudaxi 提交。
- 更新并阐明测试函数名称。PR #1395 由 @chenl 提交。
- 修复由直接使用请求的间接依赖项创建的重复标头。PR #1386 由 @obataku(基于 @scottsmith2gmail 的测试)提交。
- 将 Starlette 版本升级到
0.13.4
。PR #1361 由 @rushton 提交。 - 改进对带有无效 JSON 请求的错误处理和反馈。PR #1354 由 @aviramha 提交。
- 添加对在 OpenAPI 中声明标签元数据的功能的支持。新的文档位于 教程 - 元数据和文档 URL - 标签的元数据。PR #1348 由 @thomas-maschler 提交。
- 添加俄语翻译的基本设置。PR #1566。
- 在添加官方社区翻译后删除过时的中文文章。PR #1510 由 @waynerv 提交。
- 为路径操作函数参数助手(如
Query
、Depends
等)添加__repr__
以简化调试。PR #1560 由 @rkbeatss 和 @victorphoenix3 提交。
0.56.1¶
- 从教程中添加指向高级文档的链接。PR #1512 由 @kx-chen 提交。
- 删除内部不必要的 f-strings。PR #1526 由 @kotamatsuoka 提交。
- 为 查询参数和字符串校验 添加中文翻译。PR #1500 由 @waynerv 提交。
- 为 请求体 添加中文翻译。PR #1492 由 @waynerv 提交。
- 为 帮助 FastAPI - 获取帮助 添加中文翻译。PR #1465 由 @waynerv 提交。
- 为 查询参数 添加中文翻译。PR #1454 由 @waynerv 提交。
- 为 贡献 添加中文翻译。PR #1460 由 @waynerv 提交。
- 为 路径参数 添加中文翻译。PR #1453 由 @waynerv 提交。
- 将 使用 FastAPI 和 Azure Cognitive Skills 提供 spaCy 服务 的官方 Microsoft 项目生成器添加到 项目生成器 中。PR #1390 由 @kabirkhan 提交。
- 更新 Python 类型简介 中的文档,以包含有关
Optional
的信息。原始 PR #1377 由 @yaegassy 提交。 - 修复对使用
yield
的可调用类依赖项的支持。PR #1365 由 @mrosales 提交。 - 修复/删除客户端发送无效负载时不正确的错误日志记录。PR #1351 由 @dbanty 提交。
- 为 第一步 添加中文翻译。PR #1323 由 @waynerv 提交。
- 修复为使用回调和包括 Pydantic 模型的路由器的应用程序生成 OpenAPI 的问题。PR #1322 由 @nsidnev 提交。
- 优化
get_path_param_names()
中内部正则表达式的性能。PR #1243 由 @heckad 提交。 - 从文档中函数中删除不必要的
*,
。PR #1239 由 @pankaj-giri 提交。 - 开始意大利语翻译。PR #1557 由 @csr 提交。
0.56.0¶
- 添加对 ASGI
root_path
的支持。- 在内部对挂载的应用程序使用
root_path
,以便 OpenAPI 和文档 UI 可以自动工作,无需额外的配置和参数。 - 为
FastAPI
应用程序添加新的root_path
参数,以便在可以使用命令行设置它的情况下提供它(例如,对于 Uvicorn 和 Hypercorn,使用参数--root-path
)。 - 弃用
openapi_prefix
参数,转而使用新的root_path
参数。 - 为 子应用程序 - 挂载 添加新的/更新的文档,不使用
openapi_prefix
(因为它现在已自动处理)。 - 为 代理后面 添加新的/更新的文档,包括如何使用 Traefik 设置本地测试代理并使用
root_path
。 - 更新 扩展 OpenAPI 的文档,其中包含传递的新
openapi_prefix
参数(在内部从root_path
生成)。 - 原始 PR #1199 由 @iksteen 提交。
- 在内部对挂载的应用程序使用
- 更新新的问题模板和文档:帮助 FastAPI - 获取帮助。PR #1531。
- 更新 GitHub Action issue-manager。PR #1520。
- 添加新的链接。
- 英文文章。:
- 使用 Python 和 Postgres 进行实时通知 由 Guillermo Cruz 撰写。
- 使用 FastAPI 的 Python 微服务 由 Paurakh Sharma Humagain 撰写。
- 使用 Python FastAPI 构建简单的 API 服务 — 第 1 部分 作者:cuongld2。
- FastAPI + Zeit.co = 🚀 作者:Paul Sec。
- 使用 FastAPI 从零开始构建 Web API - 工作坊 作者:Sebastián Ramírez (tiangolo)。
- 使用 Python 和 FastAPI 构建安全的 Twilio Webhook 作者:Twilio。
- 在 Django 中使用 FastAPI 作者:Stavros Korokithakis。
- 介绍 Dispatch 作者:Netflix。
- 播客:
- 演讲:
- PR #1467。
- 英文文章。:
- 为 Python 类型提示简介 - Python Types Intro 添加中文翻译。PR #1197 作者:@waynerv。
0.55.1¶
- 修复在路径参数中处理具有自身模式的枚举的问题。为了在 FastAPI 中支持 pydantic/pydantic#1432。PR #1463。
0.55.0¶
- 允许枚举在 OpenAPI 中拥有自己的模式。为了在 FastAPI 中支持 pydantic/pydantic#1432。PR #1461。
- 添加通过 GitHub 赞助 资助的链接。PR #1425。
- 更新问题模板以用于问题。PR #1344 作者:@retnikt。
- 更新文档中关于在文档中存储密码的警告。PR #1336 作者:@skorokithakis。
- 修复错别字。PR #1326 作者:@chenl。
- 为 替代方案、灵感和比较 - Alternativas, Inspiração e Comparações 添加葡萄牙语翻译。PR #1325 作者:@Serrones。
- 修复文档中的 2 个错别字。PR #1324 作者:@waynerv。
- 更新 CORS 文档,修复
max_age=600
的正确默认值。PR #1301 作者:@derekbekoe。 - 添加 主页到葡萄牙语 的翻译。PR #1300 作者:@Serrones。
- 重新措辞并阐明字段中额外信息的文档。PR #1299 作者:@chris-allnutt。
- 确保文档中简短功能中的
*
在所有语言中都一致(在.
之后)。PR #1424。 - 更新 SQLAlchemy 教程中
get_db
的执行顺序。PR #1293 作者:@bcb。 - 修复异步文档中的错别字。PR #1423。
0.54.2¶
- 为 并发和 async / await - Concurrencia y async / await 添加西班牙语翻译。PR #1290 作者:@alvaropernas。
- 删除过时的投票链接。PR #1289 作者:@donhui。
- 允许仅通过使用
openapi_url=None
禁用 OpenAPI 来禁用文档 UI。文档中的新示例:高级:条件 OpenAPI。PR #1421。 - 为 基准测试 - Comparações 添加葡萄牙语翻译。PR #1274 作者:@Serrones。
- 为 教程 - 用户指南 - 简介 - Tutorial - Guia de Usuário - Introdução 添加葡萄牙语翻译。PR #1259 作者:@marcosmmb。
- 允许在 MkDocs 中使用 Unicode 进行翻译。PR #1419。
- 为 高级用户指南 - 简介 - Guía de Usuario Avanzada - Introducción 添加西班牙语翻译。PR #1250 作者:@jfunez。
- 为 历史、设计和未来 - História, Design e Futuro 添加葡萄牙语翻译。PR #1249 作者:@marcosmmb。
- 为 特性 - Recursos 添加葡萄牙语翻译。PR #1248 作者:@marcosmmb。
- 为 教程 - 用户指南 - 简介 - Tutorial - Guía de Usuario - Introducción 添加西班牙语翻译。PR #1244 作者:@MartinEliasQ。
- 为 部署 - 部署 添加中文翻译。PR #1203 作者:@RunningIkkyu。
- 为 教程 - 用户指南 - 简介 - 教程 - 用户指南 - 简介 添加中文翻译。PR #1202 作者:@waynerv。
- 为 特性 - 特性 添加中文翻译。PR #1192 作者:@Dustyposa。
- 添加 主页到中文 的翻译 PR #1191 作者:@waynerv。
- 更新项目生成的文档。PR #1287。
- 添加 Python 类型简介 (Python Types Intro) 的西班牙语翻译。PR #1237 作者:@mariacamilagl。
- 添加 特性 (Features) 的西班牙语翻译。PR #1220 作者:@mariacamilagl。
0.54.1¶
- 更新数据库测试设置。PR #1226。
- 通过在失败的测试中显示响应文本来改进测试调试。PR #1222 作者:@samuelcolvin。
0.54.0¶
- 修复异步文档中的语法错误。PR #1188 作者:@mickeypash。
- 添加对
response_model_exclude_defaults
和response_model_exclude_none
的支持 - 添加关于 测试数据库 的示例。初始 PR #1144 作者:@duganchen。
- 更新 开发 - 贡献:翻译 的文档,包括关于审查翻译 PR 的说明。#1215。
- 更新 README.md 中的日志样式以实现 GitHub Markdown 兼容性。PR #1200 作者:#geekgao。
- 将 Python venv
env
添加到.gitignore
。PR #1212 作者:@cassiobotaro。 - 开始葡萄牙语翻译。PR #1210 作者:@cassiobotaro。
- 更新使用带有
@lru_cache()
的依赖项的 Pydantic 的Settings
的文档。PR #1214。 - 添加第一个西班牙语翻译 FastAPI。PR #1201 作者:@mariacamilagl。
- 添加关于 设置和环境变量 的文档。初始 PR 1118 作者:@alexmitelman。
0.53.2¶
- 修复依赖项和子依赖项的正文字段的自动嵌入。原始 PR #1079 作者:@Toad2186。
- 修复 WebSocket 测试中的依赖项覆盖。PR #1122 作者:@amitlissack。
- 修复文档脚本以确保语言始终排序。PR #1189。
- 开始中文翻译。PR #1187 作者:@RunningIkkyu。
- 添加 Schema Extra - 示例 的文档。PR #1185。
0.53.1¶
- 修复翻译重构后的包含示例。PR #1182。
- 添加
Field
中example
的文档示例。文档位于 主体 - 字段:JSON 模式额外内容。PR #1106 作者:@JohnPaton。 - 修复在
response_model
中使用递归模型的问题。PR #1164 作者:@voegtlel。 - 添加 Pycharm 调试 的文档。PR #1096 作者:@youngquan。
- 修复文档中的错别字。PR #1148 作者:@PLNech。
- 更新 Windows 开发环境说明。PR #1179。
0.53.0¶
- 更新测试覆盖率徽章。PR #1175。
- 将
orjson
添加到pip install fastapi[all]
。PR #1161 作者:@michael0liver。 - 修复
GZipMiddleware
的包含示例。PR #1138 作者:@arimbr。 - 修复
OAuth2PasswordRequestFormStrict
的文档字符串中的类名。PR #1126 作者:@adg-mh。 - 阐明文档中示例中的函数名称。PR #1121 作者:@tmsick。
- 将外部链接 使用 FastAPI 和 aiokafka 的 Apache Kafka 生产者和消费者 添加到文档中。PR #1112 作者:@iwpnd。
- 修复使用
by_alias
或exclude_unset
并返回带有 Pydantic 模型的数据时的序列化问题。PR #1074 作者:@juhovh-aiven。 - 将 Gitter 聊天添加到文档中。PR #1061 作者:@aakashnand。
- 更新并简化翻译文档。PR #1171。
- 更新 FastAPI 文档的开发,将地址设置为
127.0.0.1
以改进 Windows 支持。PR #1169 作者:@mariacamilagl。 - 添加对文档翻译的支持。新文档:开发 - 贡献:文档:翻译。PR #1168。
- 更新文档中的终端样式,并添加关于 Typer,CLI 的 FastAPI 的说明。PR #1139。
0.52.0¶
- 使用
orjson
添加新的高性能 JSON 响应类。新文档:自定义响应 - HTML、流、文件等:ORJSONResponse
。PR #1065。
0.51.0¶
- 重新导出 Starlette 中的实用程序
- 这允许使用诸如
from fastapi.responses import JSONResponse
而不是from starlette.responses import JSONResponse
。 - 这主要是一种语法糖,方便开发者体验。
- 现在可以像在
from fastapi import Response
中一样,直接从fastapi
导入Request
、Response
、WebSocket
、status
。这是因为这些经常被使用,用于直接使用请求、设置头部和 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 操作,因为修复程序已合并并且有新版本。PR #1047。
- 将 mypy 配置移动到配置文件。PR #987 由 @hukkinj1提交。
- 临时修复来自 fork 的 PR 无法部署到 Netlify 预览。PR #1046 由 @mariacamilagl提交。
0.49.0¶
- 修复
jsonable_encoder
中pathlib
路径的编码。PR #978 由 @patrickmckenna提交。 - 在外部链接中添加文章:Python的Web frameworkのパフォーマンス比較 (Django, Flask, responder, FastAPI, japronto) 和 [FastAPI] Python製のASGI Web フレームワーク FastAPIに入門する。PR #974 由 @tokusumi提交。
- 修复文档中损坏的链接。PR #949 由 @tsotnikov提交。
- 修复小的错别字。PR #941 由 @NikitaKolesov提交。
- 更新并澄清使用
yield
的依赖项的文档。PR #986。 - 添加 Mermaid JS 支持以在文档中显示图表。在依赖项:第一步和使用
yield
和HTTPException
的依赖项中添加第一个图表。PR #985。 - 更新 CI 以在 GitHub Actions 中运行文档部署。PR #983。
- 允许在路径操作函数中使用
callable
,例如使用functools.partial
修改的函数。PR #977。
0.48.0¶
- 首先在测试中运行 lint 以更快地出错。PR #948。
- 仅在使用时记录有关
email-validator
的警告。PR #946。 - 使用带有
yield
的双重依赖项简化Peewee 文档。PR #947。 - 在外部链接中添加文章:在 Heroku 上创建和部署 FastAPI 应用程序。PR #942 由 @windson提交。
- 更新 Sanic 的描述,因为它现在也是 ASGI。PR #932 由 @raphaelauv提交。
- 修复首页的错别字。PR #920 由 @mMarzeta提交。
- 修复可能无效的主体的解析。PR #918 由 @dmontagu提交。
- 修复错别字 #916 由 @adursun提交。
- 允许在 OpenAPI 中使用枚举的
Any
类型。PR #906 由 @songzhi提交。 - 在外部链接中添加文章:如何使用 AWS SAM 将 FastAPI 持续部署到 AWS Lambda。PR #901 由 @iwpnd提交。
- 添加关于在没有 Pydantic 的情况下使用 Body 参数的说明。PR #900 由 @pawamoy提交。
- 修复 Pydantic 字段克隆逻辑。PR #899 由 @deuce2367提交。
- 修复中间件文档中的链接。PR #893 由 @linchiwei123提交。
- 将默认 API 标题从“Fast API”重命名为“FastAPI”,以保持一致性。PR #890。
0.47.1¶
0.47.0¶
- 重构文档以制作更简单、更短的教程 - 用户指南和包含所有其他文档的附加高级用户指南。PR #887。
- 调整外部链接、Markdown 格式、错别字。PR #881。
- 修复教程中处理 HTTP 基本身份验证
username
和password
的错误。PR #865 由 @isaevpd提交。 - 修复处理使用纯类(如
list
、tuple
等)声明的表单路径操作参数。PR #856 由 @nsidnev提交。 - 将请求
body
添加到RequestValidationError
,新文档:使用RequestValidationError
主体。初始 PR #853 由 @aviramha提交。 - 使用新链接和带有
fastapi
主题的动态 GitHub 项目更新外部链接。PR #850。 - 修复文档中 Peewee
contextvars
处理:使用 Peewee 的 SQL(关系型)数据库。PR #879。 - 使用 Python 的 Venv 和 Flit 设置开发环境,而不是需要额外的 Pipenv 重复依赖项。更新的文档:开发 - 贡献。PR #877。
- 更新HTTP 基本身份验证的文档以提高针对时序攻击的安全性。初始 PR #807 由 @zwass提交。
0.46.0¶
- 修复错别字并调整配置。PR #837。
- 在外部链接中添加指向中文文章的链接。PR 810 由 @wxq0309提交。
- 实现
OAuth2AuthorizationCodeBearer
类。PR #797 由 @kuwv提交。 - 更新文档首页中的示例升级。PR #795 由 @cdeil提交。
- 修复子路由的回调处理。PR #792 由 @jekirl提交。
- 修复错别字。PR #784 由 @kkinder提交。
- 在外部链接中添加 4 篇日语文章。PR #783 由 @HymanZHAN提交。
- 在
jsonable_encoder
中添加对主要类型的子类型(例如 asyncpg 的 UUID)的支持。PR #756 由 @RmStorm提交。 - 修复文档中 Pydantic 的
HttpUrl
的使用。PR #832 由 @Dustyposa提交。 - 修复文档中的 Twitter 链接。PR #813 由 @justindujardin提交。
- 添加有关正确使用 FastAPI 和 Peewee ORM的文档。包括如何覆盖 Peewee 的部分内容以正确处理异步线程。PR #789。
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_encoder
中custom_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
及更高版本的支持,并为 Pydantic0.32.2
提供了临时的(已弃用)向后兼容性。PR #646 由 @dmontagu 贡献。
0.43.0¶
- 更新文档以减少性别偏见。PR #645 由 @ticosax 贡献。
- 添加了关于 基于其函数名称覆盖所有路径操作的
operationId
的文档。PR #642 由 @SKalt 贡献。 - 修复了模型中的验证器生成不正确的键顺序的问题。PR #637 由 @jaddison 贡献。
- 为没有内容的响应生成正确的 OpenAPI 文档。PR #621 由 @brotskydotcom 贡献。
- 为了保持一致性,从文档中的 Bash 代码块中删除了
$
。PR #613 由 @nstapelbroek 贡献。 - 添加了关于 自托管文档(Swagger UI)静态资产 的文档,例如,在脱机或没有互联网的情况下使用文档。初始 PR #557 由 @svalouch 贡献。
- 升级后修复
black
代码风格检查。PR #682 由 @frankie567 贡献。
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
。- 在 FastAPI 应用程序的
app.state
中添加了State
。 - PR #593。
- 在 FastAPI 应用程序的
- 改进了对
Request
和APIRoute
的自定义类的处理。- 这有助于更轻松地解决诸如以下用例:
- 在请求之前和/或之后读取主体(等效于中间件)。
- 仅对一部分路径操作运行类似中间件的代码。
- 在将请求传递给路径操作函数之前处理它。例如,解压缩、反序列化等。
- 在路径操作函数生成响应后但返回之前处理它。例如,添加自定义标头、记录、添加额外元数据。
- 新的文档部分:自定义请求和 APIRoute 类。
- PR #589 由 @dmontagu 贡献。
- 这有助于更轻松地解决诸如以下用例:
- 修复了在包含其他子路由器时在路由器中保留自定义路由类的问题。PR #538 由 @dmontagu 贡献。
0.40.0¶
- 在文档中添加了关于在使用表单时安装
python-multipart
的说明。PR #574 由 @sliptonic 贡献。 - 按字母顺序生成 OpenAPI 架构。PR #554 由 @dmontagu 贡献。
- 添加了对从路径操作函数截断文档字符串的支持。
- 新的文档位于 来自文档字符串的高级描述。
- PR #556 由 @svalouch 贡献。
- 修复了为 Swagger UI 和 ReDoc 生成的 HTML 文件中的
DOCTYPE
。PR #537 由 @Trim21 贡献。 - 修复了处理
4XX
响应覆盖默认422
验证错误响应的问题。PR #517 由 @tsouvarev 贡献。 - 修复了 简单 HTTP 基本身份验证 文档中的错别字。PR #514 由 @prostomarkeloff 贡献。
- 修复了 第一步 中不正确的文档示例。PR #511 由 @IgnatovFedor 贡献。
- 添加了对 Swagger UI initOauth 设置的支持,使用参数
swagger_ui_init_oauth
。PR #499 由 @zamiramir 贡献。
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 数据类的支持和测试。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
(验证错误)响应/架构。 - 修复了同时使用
"default"
额外响应和状态代码的问题。PR #489。 - 允许其他响应使用状态代码范围(如
5XX
和4XX
)和"default"
。PR #435 由 @divums 贡献。
0.36.0¶
- 修复了在返回 Pydantic 模型时
skip_defaults
的实现。PR #422 由 @dmontagu 贡献。 - 修复了在为同一个路径操作在多个地方使用相同的依赖项时 OpenAPI 生成的问题。PR #417 由 @dmontagu 贡献。
- 允许在与
include_router
和prefix
一起使用的路径操作中具有空路径。 - 合并 PR #415 后修复了 mypy 错误。PR #462。
0.35.0¶
- 修复了路由
assert
中的错别字。PR #419 由 @pablogamboa 贡献。 - 修复了文档中的错别字。PR #411 由 @bronsen 贡献。
- 修复了解析使用
Union
声明的主体类型的问题。PR #400 由 @koxudaxi 贡献。
0.34.0¶
0.33.0¶
0.32.0¶
-
修复文档中关于功能的错别字。PR #380 由 @MartinoMensio 提交。
-
更新
Enum
的文档,使其继承自str
并改进 Swagger UI 的渲染。PR #351。 -
修复回归问题,重新添加 Swagger UI 深度链接。PR #350。
-
添加测试,用于在
.include_router
的prefix
中使用路径模板。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
。
0.30.1¶
-
从存储库中删除
Pipfile.lock
,因为它仅供 FastAPI 贡献者(FastAPI 本身开发者)使用。有关更多详细信息,请参阅 PR。PR #340。 -
更新关于 帮助 FastAPI - 获取帮助 的部分。PR #339。
-
优化内部类型声明,以改进/消除用户代码中的 Mypy 错误。PR #338。
-
更新并澄清 使用 SQLAlchemy 的 SQL 教程。PR #331 由 @mariacamilagl 提交。
-
在文档中添加 SQLite 在线查看器。PR #330 由 @cyrilbois 提交。
0.30.0¶
-
添加对 Pydantic 的 ORM 模式的支持
- 更新了关于 SQL 与 SQLAlchemy 的文档,使用 Pydantic 模型与 ORM 模式、SQLAlchemy 模型与关系、文件分离、代码简化和其他更改。新的文档:SQL(关系型)数据库。
- 对 ORM 模式的全新支持修复了与延迟加载、混合属性、动态/getter(使用
@property
装饰器)和其他几种用例相关的错误/添加了功能。 - 这适用于 SQLAlchemy、Peewee、Tortoise ORM、GINO ORM 和几乎所有其他 ORM。
- 如果你的 路径操作 返回一个具有属性的任意对象(例如
my_item.name
而不是my_item["name"]
)并且你使用了response_model
,请确保使用orm_mode = True
更新 Pydantic 模型,如文档(上面链接)中所述。 - 关于接收普通
dict
作为请求体的全新文档:任意dict
的主体。 - 关于在响应中返回任意
dict
的全新文档:使用任意dict
进行响应。 - 技术细节:
- 声明
response_model
时,它会直接用于从 路径操作函数 返回的任何内容生成响应内容。 - 在此之前,返回的内容首先会通过
jsonable_encoder
传递,以确保它是一个“可 JSON 化”的对象,例如dict
,而不是具有属性的任意对象(如 ORM 模型)。这就是为什么你应该确保更新具有属性的对象的 Pydantic 模型以使用orm_mode = True
的原因。 - 如果你没有
response_model
,则返回的对象仍将首先通过jsonable_encoder
传递。 - 声明
response_model
时,不会按原样使用相同的response_model
类型声明,它将被“克隆”以创建一个新的(一个克隆的 PydanticField
,所有子模型也都被克隆)。 - 这避免/修复了一个潜在的安全问题:由于返回的对象直接传递给 Pydantic,如果返回的对象是
response_model
的子类(例如,你返回一个继承自User
但包含额外字段(如hashed_password
)的UserInDB
,并且User
用于response_model
),它仍然会通过验证(因为UserInDB
是User
的子类),并且该对象将按原样返回,包括hashed_password
。为了解决这个问题,声明的response_model
被克隆,如果它是一个 Pydantic 模型类(或在其内部包含 Pydantic 模型类,例如在List[Item]
中),则 Pydantic 模型类将是不同的(“克隆”的)。因此,一个子类对象不会简单地通过验证并按原样返回,因为它不再是克隆的response_model
的子类。相反,将使用返回对象的内容创建一个新的 Pydantic 模型对象。因此,它将是一个新对象(使用返回对象的数据创建),并由克隆的response_model
过滤,仅包含声明的字段,就像平常一样。
- 声明
- PR #322。
-
对附加响应使用默认响应状态代码描述。PR #313 由 @duxiaoyao 提交。
0.29.1¶
-
修复使用必需的主体参数处理空主体请求的问题。PR #311。
-
修复 响应模型 文档中的差异。PR #288 由 @awiddersheim 提交。
0.29.0¶
- 添加对声明
Response
参数的支持- 这允许声明
- 响应 Cookie.
- 响应 Header.
- 与默认值不同的 HTTP 状态代码:响应 - 更改状态代码。
- 所有这些同时仍然能够返回任意对象(
dict
、DB 模型等)。 - 更新对 Hug 的归属,以激发
response
参数模式。 - PR #294。
- 这允许声明
0.28.0¶
-
实现每个请求的依赖项缓存。
- 这避免了对同一请求多次调用每个依赖项。
- 这在调用外部服务、执行代价高昂的计算等时非常有用。
- 这也意味着,如果一个依赖项被声明为 路径操作装饰器 依赖项,可能是在路由级别(使用
.include_router()
),然后在特定的 路径操作 中再次声明它,则该依赖项将只被调用一次。 - 可以使用
use_cache=False
(如Depends(your_dependency, use_cache=False)
中所示)禁用每个依赖项声明的缓存。 - 更新的文档位于:多次使用相同的依赖项。
- PR #292。
-
实现用于测试的依赖项覆盖。
0.27.2¶
- 修复路径和查询参数接收
dict
作为有效类型。它应该映射到主体负载。PR #287。更新的文档位于:查询参数列表/具有默认值的多值:使用list
。
0.27.1¶
-
修复
HTTPBearer
安全方案中的auto_error=False
处理。如果auto_error=False
,则在Authorization
标头不正确时不要raise
。PR #282。 -
修复
HTTPException
的类型声明。PR #279。
0.27.0¶
-
重构使用 Pydantic
Field
的参数提取- 路径操作 中的参数提取的大规模重构、改进和简化。
- 修复/添加对具有列表默认值的列表 查询参数 的支持。新的文档:查询参数列表/具有默认值的多值。
- 添加对 路径操作 参数中枚举的支持。新的文档:路径参数:预定义值。
- 添加对使用
Optional
的类型注释的支持,如param: Optional[str] = None
中所示。新的文档:可选类型声明。 - PR #278。
0.26.0¶
-
分离验证错误的错误处理。
- 这将允许开发人员自定义异常处理程序。
- 更好地记录如何处理异常和使用错误处理程序。
- 包含
RequestValidationError
和WebSocketRequestValidationError
(后者在 encode/starlette#527 或等效的 PR 合并后将很有用)。 - 关于异常处理程序的新文档
- PR #273。
-
修复了对路径参数中的路径的支持,无需显式使用
Path(...)
。 -
修复
response_model
的类型声明,以允许使用泛型 Python 类型作为List[Model]
。主要是为了修复用户的mypy
错误。PR #266。
0.25.0¶
-
添加对 Pydantic 的
include
、exclude
、by_alias
的支持。 -
在 GitHub 中添加
CONTRIBUTING.md
文件,以帮助新的贡献者。PR #255 由 @wshayes 提交。 -
添加对 Pydantic 的
skip_defaults
的支持
0.24.0¶
-
添加对具有依赖项和参数的 WebSockets 的支持。
- 支持包含
Depends
安全
Cookie
Header
Path
Query
- ...因为这些与 WebSockets 协议兼容(例如
Body
不兼容)。
- 更新了 WebSockets 的文档.
- PR #178 由 @jekirl 提交。
- 支持包含
-
将 Pydantic 的兼容版本升级到
0.26.0
。
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://127.0.0.1:8000/docs/oauth2-redirect
。 - 请记住,此回调 URL 与您的前端使用的任何回调 URL 无关。您可能在
https://yourdomain.com/login/callback
处还有另一个回调。 - 这仅用于允许使用 Swagger UI 在 API 文档中进行委托身份验证。
- PR #198 由 @steinitzu 提交。
- 例如,在开发过程中,它可能是
-
使 Swagger UI 和 ReDoc 路由处理程序(路径操作)成为
async
函数而不是 lambda 函数,以提高性能。PR #241 由 @Trim21 提交。 -
使 Swagger UI 和 ReDoc URL 可参数化,允许托管和服务其本地版本并拥有离线文档。PR #112 由 @euri10 提交。
0.22.0¶
-
添加对
dependencies
参数的支持- 路径操作装饰器中的一个参数,用于应执行但返回值在路径操作函数中不重要或不使用的依赖项。
- FastAPI 应用程序和路由器的
.include_router()
方法中的一个参数,用于包含应在路由器中的每个路径操作中执行的依赖项。- 例如,这对于在特定组的路径操作中要求身份验证或权限很有用。
- 不同的
dependencies
可以应用于不同的路由器。
- 这些
dependencies
在正常参数依赖项之前运行。并且也会运行正常依赖项。它们可以组合。 - 首先执行在路由器中声明的依赖项,然后执行在路径操作装饰器中定义的依赖项,然后执行在正常参数中声明的依赖项。它们全部组合并执行。
- 所有这些还支持在这些
dependencies
参数中使用Security
和scopes
,以实现更高级的具有作用域的 OAuth 2.0 安全方案。 - 关于路径操作装饰器中的依赖项的新文档。
- 关于
include_router()
方法中的依赖项的新文档。 - PR #235。
-
修复 Starlette URL 转换器的 OpenAPI 文档。在使用
path
转换器时特别有用,以将整个路径作为参数,例如/some/url/{p:path}
。PR #234 由 @euri10 提交。 -
使从
fastapi
导出的默认参数实用程序成为函数而不是类(新函数返回这些类的实例)。以便能够覆盖返回类型并修复 FastAPI 用户代码中的mypy
错误。适用于Path
、Query
、Header
、Cookie
、Body
、Form
、File
、Depends
和Security
。PR #226 和 PR #231。 -
分离开发脚本
test.sh
、lint.sh
和format.sh
。PR #232。 -
重新启用 Python 3.7 的
black
格式检查。PR #229 由 @zamiramir 提交。
0.21.0¶
-
在主体解析错误时,引发
from
前一个异常,以允许在日志记录代码中进行更好的自省。PR #192 由 @ricardomomm 提交。 -
修复路由中的错别字。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
标头。 - 更新、简化和改进所有安全文档。
- 将新的
scope_str
添加到SecurityScopes
并更新文档:OAuth2 作用域。 - 更新文档、图片、测试。
- PR #188。
- 使用 Bearer 令牌升级密码流以使用正确的 HTTP 状态代码 401
0.19.0¶
-
将路径操作装饰器参数
content_type
重命名为response_class
。PR #183。 -
添加文档
- 如何在JSON 兼容编码器 中使用
jsonable_encoder
。 - 如何直接返回响应。
- 更新如何使用自定义响应类。
- PR #184。
- 如何在JSON 兼容编码器 中使用
0.18.0¶
-
添加以下内容的文档:HTTP 基本身份验证。PR #177。
-
使用自动标头(自动浏览器登录提示)升级 HTTP 基本身份验证处理。PR #175。
-
更新安全依赖项。PR #174。
0.17.0¶
-
从 CI 发布 Flit。PR #170。
-
添加关于处理CORS(跨源资源共享) 的文档。PR #169。
-
默认情况下,按别名编码。这允许默认情况下使用 Pydantic
alias
参数。PR #168。
0.16.0¶
-
重构 Pydantic 的内部使用以使用正确的 数据类型。PR #164。
-
修复关于额外模型的教程中的错别字。PR #159 由 @danielmichaels 提交。
-
修复文档中的查询参数 URL 示例。PR #157 由 @hayata-yamamoto 提交。
0.15.0¶
0.14.0¶
-
改进 OpenAPI(在 API 文档中)中自动生成的路径操作名称。一个名为
read_items
的函数,而不是具有生成的名称“Read Items Get”,将具有“Read Items”。PR #155。 -
添加以下内容的文档:测试 FastAPI。PR #151。
-
更新
/docs
中的Swagger UI以启用深度链接。这允许共享直接指向文档中路径操作的URL。PR #148 由 @wshayes提交。 -
更新开发依赖项,
Pipfile.lock
。PR #150。 -
在替代方案、灵感和比较中包含Falcon和Hug。
0.13.0¶
- 使用
SecurityScopes
改进/升级OAuth2作用域支持SecurityScopes
可以像Request
一样声明为参数,以获取所有上级依赖项/依赖项的作用域。- 改进
Security
处理,在声明SecurityScopes
时合并作用域。 - 允许使用
SecurityBase
(如OAuth2
)类与Depends
,并仍然记录它们。Security
现在仅用于声明scopes
。 - 更新了关于:带密码(和散列)的OAuth2、带JWT令牌的Bearer的文档。
- 关于:OAuth2作用域的新文档。
- PR #141。
0.12.1¶
-
修复错误:处理
APIRouter.include_router()
中的额外responses
。PR #140。 -
修复SQL教程中的错别字。PR #138 由 @mostaphaRoudsari提交。
0.12.0¶
- 将额外的
responses
参数添加到路径操作装饰器中,以扩展OpenAPI(和API文档)中的响应。 - 更新
scripts/test-cov-html.sh
以允许传递额外的参数,如-vv
,用于开发。
0.11.0¶
-
将
auto_error
参数添加到安全实用程序函数中。允许它们成为可选的。还允许有多个备用安全方案,然后在单个依赖项中检查这些方案,而不是每个方案都自动验证并在不满足时将错误返回给客户端。PR #134。
0.10.3¶
-
添加Gitter聊天、徽章、链接等。https://gitter.im/tiangolo/fastapi。PR #117。
-
使Travis运行Ubuntu Xenial(较新版本)和Python 3.7而不是Python 3.7-dev。PR #92 由 @blueyed提交。
-
在响应模型文档中添加注释,说明为什么使用函数参数而不是函数返回类型注释。PR #109 由 @JHSaunders提交。
-
修复事件文档(启动/关闭)函数名称。PR #105 由 @stratosgear提交。
0.10.2¶
-
修复Python
Union
(JSON SchemaadditionalProperties
)声明的OpenAPI(JSON Schema)。PR #121。 -
更新后台任务,并添加关于Celery的注释。
0.10.1¶
- 添加encode/databases的文档和测试。新的文档位于:异步SQL(关系型)数据库。PR #107。
0.10.0¶
-
在路径操作函数和依赖项中添加对后台任务的支持。关于后台任务的新文档在这里。PR #103。
-
关于事件:启动 - 关闭的新文档部分。PR #99。
0.9.1¶
- 记录接收具有相同查询参数的多个值和重复标头。PR #95。
0.9.0¶
-
将兼容的Pydantic版本升级到
0.21.0
。PR #90。 -
添加以下内容的文档:应用程序配置。
-
修复文档中的错别字。PR #76 由 @matthewhegarty提交。
-
修复“部署”中指向“更大的应用程序”的链接。
0.8.0¶
-
添加对在
app.include_router()
中添加tags
的支持。PR #55 由 @euri10提交。文档已更新到以下部分:更大的应用程序。 -
更新与Uvicorn相关的文档,以使用版本
0.5.x
中的新--reload
选项。PR #74。 -
更新
isort
导入和脚本,使其与较新版本兼容。PR #75。
0.7.1¶
-
更新关于
async def
处理的技术细节,相对于以前的框架。PR #64 由 @haizaar提交。 -
在Travis CI上自动触发Docker镜像构建。PR #65。
0.7.0¶
- 添加对
File
参数注释中UploadFile
的支持。- 这包括一个类文件接口。
- 以下是声明使用
UploadFile
的File
参数的更新文档。 - 以下是同时使用
Form
参数与File
参数,支持bytes
和UploadFile
的更新文档。 - PR #63。
0.6.4¶
-
添加在编辑器中调试FastAPI应用程序的文档。
-
修复文档中的错别字。
-
添加关于历史、设计和未来的部分。
-
添加使用FastAPI的WebSockets的文档。PR #62。
0.6.3¶
- 将Favicons添加到文档中。PR #53。
0.6.2¶
-
引入基于FastAPI和PostgreSQL的新项目生成器:https://github.com/tiangolo/full-stack-fastapi-postgresql。PR #52。
-
改进SQLAlchemy的SQL教程中中间件的命名https://fastapi.org.cn/tutorial/sql-databases/。
0.6.1¶
- 添加GraphQL文档:https://fastapi.org.cn/advanced/graphql/。PR #48。
0.6.0¶
-
更新https://fastapi.org.cn/tutorial/sql-databases/处的SQLAlchemy教程,使用新的官方
request.state
。PR #45。 -
将Starlette升级到版本
0.11.1
并添加所需的兼容性更改。PR #44。
0.5.1¶
-
添加关于帮助和获取FastAPI帮助的部分。
-
添加关于文档中路径操作顺序的注释。
-
添加文档中的开发 - 贡献部分。PR #42。
0.5.0¶
-
添加新的
HTTPException
,支持自定义标头。并提供新的错误处理文档:https://fastapi.org.cn/tutorial/handling-errors/。PR #35。 -
添加直接使用Starlette
Request
对象的文档。查看 #25 由 @euri10提交。 -
添加问题模板,简化错误报告、获取帮助等:#34。
-
更新https://fastapi.org.cn/tutorial/sql-databases/中SQLAlchemy教程的示例,使用中间件和附加到请求的数据库会话。
0.4.0¶
-
添加
openapi_prefix
,支持反向代理和挂载子应用程序。请参阅https://fastapi.org.cn/advanced/sub-applications-proxy/处的文档:#26 由 @kabirkhan提交。 -
更新SQLAlchemy的文档/教程,包括关于DB Browser for SQLite的注释。
0.3.0¶
- 修复/添加SQLAlchemy支持,包括ORM,并更新SQLAlchemy的文档:#30。
0.2.1¶
- 修复具有
Config
但没有json_encoders
的Pydantic模型的jsonable_encoder
:#29。