跳至内容

发布说明

最新更改

文档

  • 📝 修复文档中的少量错别字。PR #12213@svlandeg 提交。

翻译

  • 🌐 为 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 提交。

内部

0.115.0

亮点

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

Query 参数模型

Query 参数使用 Pydantic 模型

from typing import Annotated, Literal

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

app = FastAPI()


class FilterParams(BaseModel):
    limit: int = Field(100, gt=0, le=100)
    offset: int = Field(0, ge=0)
    order_by: Literal["created_at", "updated_at"] = "created_at"
    tags: list[str] = []


@app.get("/items/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):
    return filter_query

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

Header 参数模型

Header 参数使用 Pydantic 模型

from typing import Annotated

from fastapi import FastAPI, Header
from pydantic import BaseModel

app = FastAPI()


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


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

阅读新的文档:Header 参数模型

Cookie 参数使用 Pydantic 模型

from typing import Annotated

from fastapi import Cookie, FastAPI
from pydantic import BaseModel

app = FastAPI()


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


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

阅读新的文档:Cookie 参数模型

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

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

from typing import Annotated, Literal

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

app = FastAPI()


class FilterParams(BaseModel):
    model_config = {"extra": "forbid"}

    limit: int = Field(100, gt=0, le=100)
    offset: int = Field(0, ge=0)
    order_by: Literal["created_at", "updated_at"] = "created_at"
    tags: list[str] = []


@app.get("/items/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):
    return filter_query

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

功能

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

翻译

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

内部

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 提交。

内部

  • 💡 为 Playwright 屏幕截图脚本添加包含说明的注释。PR #12193@tiangolo 提交。
  • ➕ 为测试添加内联快照。PR #12189@tiangolo 提交。

0.114.1

重构

  • ⚡️ 使用内部模型字段缓存改进请求体解析的性能。PR #12184@tiangolo 提交。

文档

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

翻译

  • 🌐 为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 提交。

内部

0.114.0

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

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


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


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

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

特性

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

文档

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

内部

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

0.113.0

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

from typing import Annotated

from fastapi import FastAPI, Form
from pydantic import BaseModel

app = FastAPI()


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


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

阅读新的文档:表单模型

特性

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

内部

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

0.112.4

此版本主要是一个大型内部重构,以启用为Form字段添加 Pydantic 模型支持,但该功能将在下一个版本中提供。

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

重构

  • ♻️ 重构确定是否embed主体字段、不覆盖字段、每个路由器计算一次、为FormQuery等中的 Pydantic 模型做准备的内部重构。PR #12117@tiangolo 提交。

内部

  • ⏪️ 临时撤销“✨ 添加对Form参数中 Pydantic 模型的支持”,以进行检查点发布。PR #12128@tiangolo 提交。由 PR #12129 恢复。
  • ✨ 添加对Form参数中 Pydantic 模型的支持。PR #12127@tiangolo 提交。由 PR #12128 撤销,以进行仅包含重构的检查点发布。由 PR #12129 恢复。

0.112.3

此版本主要是内部重构,不应以任何方式影响使用 FastAPI 的应用程序。您甚至不必升级到此版本。之后会有几个更大的版本发布。🚀

重构

  • ♻️ 重构内部check_file_field(),重命名为ensure_multipart_is_installed()以阐明其目的。PR #12106@tiangolo 提交。
  • ♻️ 将内部create_response_field()重命名为create_model_field(),因为它用于的不仅仅是响应模型。PR #12103@tiangolo 提交。
  • ♻️ 使用 dataclasses 重构和简化来自solve_dependencies()的内部数据。PR #12100@tiangolo 提交。
  • ♻️ 重构和简化内部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 提交。

内部

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 提交。

内部

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.mddocs/pt/docs/advanced/behind-a-proxy.md 添加葡萄牙语翻译。PR #11856@marcelomarkus 提交。
  • 🌐 为 docs/pt/docs/tutorial/cors.mddocs/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]" 的支持,使用标准依赖项和 python -m fastapi。PR #11935@tiangolo 提交。

摘要

使用以下命令安装

pip install "fastapi[standard]"

其他更改

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

技术细节

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

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

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

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

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

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

文档

翻译

  • 🌐 更新docs/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

升级

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

文档

翻译

  • 🌐 添加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

功能

使用以下命令尝试:

$ 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.mddocs/zh/docs/how-to/general.md添加中文翻译。PR #11443@billzhong提交。
  • 🌐 为 cookie-params docs/es/docs/tutorial/cookie-params.md添加西班牙语翻译。PR #11410@fabianfalon提交。

内部

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/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

修复

  • 🐛 修复使用泛型的无参数 Depends()。PR #9479@nzig提交。

重构

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

升级

  • ⬆️ 将 Starlette 升级到 >=0.37.2,<0.38.0,为内部测试删除 Starlette filterwarning。PR #11266@nothielf提交。

文档

  • 📝 微调文档和翻译链接,并删除旧的文档翻译。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

重大变更

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

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

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

现在您需要确保在except之后重新引发异常,就像在普通 Python 中一样

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

文档

  • ✏️ 修复docs/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

升级

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

翻译

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

内部

0.109.1

安全修复

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

公告:Content-Type 标头 ReDoS中了解更多信息。

功能

  • ✨ 在没有主体的情况下将 HTTP 205 包含在状态代码中。PR #10969@tiangolo 提交。

重构

  • ✅ 重构测试以生成重复的操作 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.mddocs/ko/docs/tutorial/index.mddocs/ko/docs/tutorial/path-params.mddocs/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.mddocs/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

特性

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

升级

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

文档

  • ✏️ 修复 docs/en/docs/alternatives.md 中的错别字。PR #10931@s111d 提交。
  • 📝 将 docs_src/security/tutorial007 代码示例中的 email 替换为 username。PR #10649@nilslindemann 提交。
  • 📝 添加 VS Code 教程链接。PR #10592@nilslindemann 提交。
  • 📝 添加关于 Pydantic v2 的新 .model_dump() 的说明。PR #10929@tiangolo 提交。
  • 📝 修复 docs/en/docs/tutorial/sql-databases.md 中的损坏链接。PR #10765@HurSungYun 提交。
  • 📝 添加外部链接:轻松监控 FastAPI 应用程序。PR #10917@tiangolo 提交。
  • ✨ 为文档翻译生成自动语言名称。PR #5354@jakul 提交。
  • ✏️ 修复 docs/en/docs/alternatives.mddocs/en/docs/tutorial/dependencies/index.md 中的错别字。PR #10906@s111d 提交。
  • ✏️ 修复 docs/en/docs/tutorial/dependencies/dependencies-with-yield.md 中的错别字。PR #10834@Molkree 提交。
  • 📝 添加文章:“使用 FastAPI 构建 RESTful API:包含安全注册和登录功能”。PR #9733@dxphilo 提交。
  • 📝 添加关于 AsyncClient 的生命周期事件的警告。PR #4167@andrew-chang-dewitt 提交。
  • ✏️ 修复 /docs/reference/exceptions.md/en/docs/reference/status.md 中的错别字。PR #10809@clarencepenz 提交。
  • ✏️ 修复 openapi-callbacks.md 中的错别字。PR #10673@kayjan 提交。
  • ✏️ 修复 fastapi/routing.py 中的错别字。PR #10520@sepsh 提交。
  • 📝 替换文档中用于测试的用户已存在错误情况下返回的 HTTP 代码。PR #4482@TristanMarion 提交。
  • 📝 添加 FastAPI 和 Supabase 博客文章。PR #6018@theinfosecguy 提交。
  • 📝 使用 SQLAlchemy 更新 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.mddocs/ru/docs/tutorial/body-nested-models.mddocs/ru/docs/tutorial/debugging.mddocs/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

升级

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

文档

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

0.106.0

重大更改

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

此更改支持新功能,请参阅以下内容。🤓

使用yieldHTTPException和后台任务的依赖项

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

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

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

app = FastAPI()


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


class OwnerError(Exception):
    pass


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


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

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

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

但是,由于这意味着在网络中传输响应时不必要地占用使用yield的依赖项中的资源(例如数据库连接),因此在FastAPI 0.106.0中进行了更改。

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

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

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

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

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

sequenceDiagram

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

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

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

功能

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

内部

0.105.0

功能

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

重构

文档

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

内部

  • 🔧 更新赞助商,添加Scalar。PR #10728@tiangolo提交。
  • 🔧 更新赞助商,添加PropelAuth。PR #10760@tiangolo提交。
  • 👷 更新构建文档,在CI上验证README。PR #10750@tiangolo提交。
  • 🔧 更新赞助商,删除Fern。PR #10729@tiangolo提交。
  • 🔧 更新赞助商,添加Codacy。PR #10677@tiangolo提交。
  • 🔧 更新赞助商,添加Reflex。PR #10676@tiangolo提交。
  • 📝 更新发行说明,移动和检查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.mddocs/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

升级

  • ⬆️ 停止支持 Python 3.7,要求 Python 3.8 或更高版本。PR #10442 by @tiangolo

内部

0.103.2

重构

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

翻译

  • 🌐 为 docs/uk/docs/tutorial/extra-data-types.md 添加乌克兰语翻译。PR #10132 by @ArtemKhymenko
  • 🌐 修复 docs/fr/docs/advanced/path-operation-advanced-configuration.mddocs/fr/docs/alternatives.mddocs/fr/docs/async.mddocs/fr/docs/features.mddocs/fr/docs/help-fastapi.mddocs/fr/docs/index.mddocs/fr/docs/python-types.mddocs/fr/docs/tutorial/body.mddocs/fr/docs/tutorial/first-steps.mddocs/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

修复

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

文档

  • ✏️ 修复文档中验证参数名称,从 regex 改为 pattern。PR #10085 by @pablodorrio
  • ✏️ 修复 docs/en/docs/deployment/server-workers.md 中的缩进格式。PR #10066 by @tamtam-fitness
  • ✏️ 修复教程中 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.mddocs/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.mddocs/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 版本分离输入和输出模式的说明。PR #10150 by @tiangolo

0.102.0

功能

重构

  • ♻️ 重构针对新的 Pydantic 2.2.1 的测试。PR #10115 by @tiangolo

文档

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

内部

0.101.1

修复

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

重构

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

文档

  • ✏️ 修复发行说明中的错别字。PR #9835 by @francisbergin
  • 📝 添加外部文章:使用 FaunaDB 和 FastAPI 构建无服务器短信垃圾邮件分类器。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 提交。

内部

0.101.0

特性

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

重构

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

升级

  • 📌 不允许使用导致问题 Pydantic 2.1.0(需要 2.1.1)。PR #10012@tiangolo 提交。

翻译

  • 🌐 为 docs/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

修复

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

文档

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

翻译

  • 🌐 为 docs/uk/docs/tutorial/body.md 添加乌克兰语翻译。PR #4574@ss-o-furda 提交。
  • 🌐 为 docs/vi/docs/features.mddocs/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 提交。

内部

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 是一个额外的可选包(包含在 "fastapi[all]" 中)。要使用设置,您现在应该导入 from pydantic_settings import BaseSettings 而不是直接从 pydantic 导入。

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

0.99.1

修复

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

文档

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

0.99.0

特性

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

    • 新增对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 提交。

文档

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

翻译

  • 🌐 为 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

特性

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

文档

  • 📝 更新关于 Pydantic 内部使用 ujson 的文档。PR #5804@mvasilkov 提交。
  • ✏ 重新措辞 docs/en/docs/tutorial/debugging.md。PR #9581@ivan-abc 提交。
  • 📝 添加德语博文 (Domain-driven Design mit Python und FastAPI)。PR #9261@msander 提交。
  • ✏️ 微调 docs/en/docs/tutorial/security/index.md 中的措辞。PR #9561@jyothish-mohan 提交。
  • 📝 更新 docs/en/docs/tutorial/schema-extra-example.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

升级

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

重构

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

文档

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

翻译

  • 🌐 修复 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.mddocs/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

特性

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

文档

  • 📝 更新 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

内部

0.95.2

翻译

  • 🌐 为 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 行代码。 🚀

主要更新的文档包括

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

功能

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

文档

  • 📝 微调文档中推荐 Annotated 的提示。PR #9270@tiangolo 提交。
  • 📝 更新示例顺序,最新 Python 版本排在首位,并简化版本标签名称。PR #9269@tiangolo 提交。
  • 📝 更新所有文档以使用 Annotated 作为主要建议,并提供新的示例和测试。PR #9268@tiangolo 提交。

0.94.1

修复

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

0.94.0

升级

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

文档

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

翻译

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

内部

0.93.0

功能

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

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

例如

from contextlib import asynccontextmanager

from fastapi import FastAPI


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


ml_models = {}


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


app = FastAPI(lifespan=lifespan)


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

**注意**:这是今后推荐的方式,而不是使用 startupshutdown 事件。

在新的文档中了解更多信息:高级用户指南:生命周期事件

文档

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

翻译

  • 🌐 泰米尔语翻译 - 初始设置。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

升级

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

0.90.1

升级

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

文档

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

翻译

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

内部

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

0.90.0

升级

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

文档

  • 📝 将文章“Tortoise ORM / FastAPI 整合快速笔记”添加到外部链接。PR #5496@Leon0824 提交。
  • 👥 更新 FastAPI 人员。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

修复

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

文档

翻译

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

0.89.0

特性

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

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

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


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


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

FastAPI 将使用返回类型注释执行

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

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

在新的文档中了解更多信息:响应模型 - 返回类型

文档

  • 📝 添加外部链接:使用 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 提交。

内部

0.88.0

升级

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

文档

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

翻译

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

内部

  • 👷 调整 build-docs 以提高 CI 性能。PR #5699@tiangolo 提交。
  • ⬆ [pre-commit.ci] pre-commit 自动更新。PR #5566@pre-commit-ci[bot] 提交。
  • ⬆️ 升级 Ruff。PR #5698@tiangolo 提交。
  • 👷 移除 Smokeshow 的 pip 缓存,因为它依赖于 requirements.txt。PR #5700@tiangolo 提交。
  • 💚 修复 Smokeshow 的 pip 缓存。PR #5697@tiangolo 提交。
  • 👷 修复并调整 CI 缓存处理。PR #5696@tiangolo 提交。
  • 👷 更新测试中的 setup-python 操作以使用新的缓存功能。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

特性

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

修复

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

文档

  • ✏ 修复 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

内部

0.85.1

修复

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

文档

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

内部

0.85.0

特性

  • ⬆ 将 Starlette 的所需版本从 0.19.1 升级到 0.20.4。初始 PR #4820 by @Kludex
    • 这包含了 Starlette 的一些错误修复。
  • ⬆️ 升级公共额外内容: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 很久以前就已停止维护。😅☠

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

0.83.0

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

Python 3.6 已达到 生命周期结束,并且自大约一年前起不再受 Python 支持

希望您之前已经升级到受支持的 Python 版本。如果您还没有,真的应该升级了。

功能

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

修复

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

文档

内部

0.82.0

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

Python 3.6 已达到 生命周期结束,并且自大约一年前起不再受 Python 支持

希望您之前已经升级到受支持的 Python 版本。如果您还没有,真的应该升级了。

功能

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

修复

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

文档

  • ✏ 更新 Hypercorn 链接,现在指向 GitHub。PR #5346@baconfield 提交。
  • ✏ 调整 docs/en/docs/advanced/dataclasses.md 中的措辞。PR #3698@pfackeldey 提交。
  • 📝 在关于响应模型的解释中添加关于 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

重大变更 - 修复

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

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

例如,如果您有一个这样的应用程序

from fastapi import FastAPI
from pydantic import BaseModel

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

app = FastAPI()

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

...调用路径/items/invalidnone将引发错误,因为None对于使用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 对象上使用includeexclude参数的问题。PR #2606@xaviml 提交。
  • 🐛 修复重复别名名称未在 OpenAPI 中显示的边缘情况。PR #2351@klaa97 提交。
  • 📝 将其他依赖项安装添加到教程文档中。PR #2126@TeoZosa 提交。

文档

翻译

  • 🌐 为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 提交。

内部

0.79.0

修复 - 重大变更

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

翻译

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

内部

0.78.0

特性

  • ✨ 添加对使用时省略...作为默认值的支持

  • Path()

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

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

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

例如

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

app = FastAPI()


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

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

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

✨ 例如,现在支持以下操作

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

app = FastAPI()


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

要将参数声明为可选(非必需),您可以始终设置默认值,例如使用None

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

app = FastAPI()


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

文档

  • 📝 添加推荐使用Union而不是Optional的文档,并迁移源代码示例。新的文档位于Python 类型简介 - 使用UnionOptional。PR #4908@tiangolo提交。
  • 🎨 修复教程中路径操作高级配置中设置的默认值。PR #4899@tiangolo提交。
  • 📝 为重新定义的路径操作添加文档。PR #4864@madkinsz提交。
  • 📝 更新 Celery 文档的链接。PR #4736@sammyzord提交。
  • ✏ 修复教程中主体嵌套模型中使用集合的示例代码。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

升级

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

文档

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

翻译

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

内部

  • 🔧 在 Uzbek 翻译的问题中添加通知。PR #4884@tiangolo提交。

0.77.0

升级

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

文档

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

翻译

  • 🌐 更新docs/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

升级

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

内部

0.75.2

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

修复

  • ✅ 使用新的已修复的ValidationError JSON 模式修复新的/最近的测试。PR #4806@tiangolo提交。
  • 🐛 修复字段locValidationError的 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

翻译

内部

0.75.0

特性

0.74.1

特性

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

0.74.0

重大更改

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

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

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

在使用yield的依赖项处理异常(或不处理)之后,异常将再次引发。这样任何异常处理程序都可以捕获它,或者最终由默认的内部ServerErrorMiddleware捕获。

如果您依赖于异常不会被使用yield的依赖项接收,并且接收异常会导致yield之后的代码中断,则可以使用带有tryfinally的块

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

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

特性

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

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

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

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


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

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

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

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

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

内部

0.73.0

特性

文档

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

修复

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

内部

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

0.72.0

特性

文档

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

翻译

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

内部

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

0.71.0

特性

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

内部

0.70.1

此特定FastAPI版本中没有有趣的内容。它主要是为了启用/解除阻止下一个版本的Pydantic的发布,该版本包含许多功能和改进。🤩

修复

  • 🐛 修复数据类的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提交。

内部

0.70.0

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

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

  • 首先到FastAPI 0.68.2,没有破坏性更改,但升级了所有子依赖项。
  • 接下来到FastAPI 0.69.0,它将Starlette升级到0.15.0,支持AnyIO,并且代码出现破坏性更改的可能性更高。
  • 最后到FastAPI 0.70.0,只需将Starlette升级到最新版本0.16.0,并添加了额外的错误修复。

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

破坏性更改 - 升级

  • ⬆️ 将Starlette升级到0.16.0。PR #4016@tiangolo提交。

还升级了可选依赖项的范围

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

0.69.0

破坏性更改 - 升级

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

它将Starlette的版本升级到0.15.0,现在基于AnyIO,并且**FastAPI**中的内部异步组件现在也基于AnyIO,使其与**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.mddocs/en/docs/release-notes.md中的错别字。PR #3750@saintmalik提交。
  • ✏️ 在安全教程中添加缺少的逗号。PR #3564@jalvaradosegura提交。
  • ✏ 修复docs/en/docs/help-fastapi.md中的错别字。PR #3760@jaystone776提交。
  • ✏ 修复docs/en/docs/tutorial/bigger-applications.md中关于文件路径的错别字。PR #3285@HolyDorus提交。
  • ✏ 改写以阐明docs/en/docs/tutorial/testing.md中的测试客户端。PR #3382@Bharat123rox提交。
  • 📝 修复不正确的突出显示代码。PR #3325@paxcodes提交。
  • 📝 添加文章外部链接:如何将FastAPI应用程序部署到Heroku。PR #3241@Jarmos-san提交。
  • ✏ 修复docs/en/docs/advanced/templates.md中的错别字(误译)。PR #3211@oerpli提交。
  • 📝 从docs/en/docs/tutorial/request-files.md中删除关于(现在已支持的)Swagger UI功能的说明。PR #2803@gsganden提交。
  • ✏ 修复docs/tutorial/handling-errors.md中的错别字并改写。PR #2700@graue70提交。

翻译

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

内部

  • 📝 添加支持的Python版本徽章。PR #2794@hramezani提交。
  • ✏ 修复日语文档中docs/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

功能

文档

  • 📝 添加外部链接:如何为 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设置为RedirectResponseFileResponse,并从函数中返回 URL。新的和更新的文档位于教程部分的**自定义响应 - HTML、流、文件等**中,在RedirectResponseFileResponse中。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 贡献。

内部

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

安全修复

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

功能

修复

  • 📌 为测试固定 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 提交。

内部

0.63.0

功能

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

重大更改

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

修复

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

文档

翻译

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

内部

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

0.62.0

功能

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

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

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

include_router 中设置选项在某些情况下仍然有意义,例如,覆盖或增强从包含在应用程序中的第三方路由器继承的配置。但在属于更大应用程序的路由器中,在创建 APIRouter 时添加这些设置可能更有意义。

FastAPI

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

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

例如

from fastapi import FastAPI, Depends


async def some_dependency():
    return


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

APIRouter

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

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

例如

from fastapi import APIRouter, Depends


async def some_dependency():
    return


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

include_router

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

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

此 PR 允许设置(主要是新的)参数(除了已有的参数之外)

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

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

重大更改

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

文档

翻译

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

内部

  • 🔧 将 TestDriven 链接更新为赞助商部分中的课程链接。PR #2435@tiangolo 提交。
  • 🍱 更新赞助商徽标。PR #2418@tiangolo 提交。
  • 💚 修复在分支中禁用 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

文档

翻译

内部

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

0.61.0

特性

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

重大更改

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

文档

内部

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

0.60.2

  • 修复查询参数文档中的错别字。PR #1832@ycd 提交。
  • 添加有关 异步测试 的文档。PR #1619@empicano 提交。
  • 在未安装 python-multipart 时,使用表单数据(FormFile)时引发异常。
    • 到目前为止,应用程序将运行,并且仅在接收表单数据请求时才会引发异常,新的行为(尽早引发异常)将防止部署依赖项损坏的应用程序。
    • 它还检测是否安装了正确的包 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 时,在 OpenAPI servers 中自动生成“服务器”,而不是为所有 paths 添加前缀。
    • FastAPI 类添加一个新参数:root_path_in_servers 以禁用 servers 的自动生成。
    • 有关 root_pathservers 的新文档,请参见 其他服务器
    • 更新 OAuth2 示例以使用相对 URL tokenUrl="token",以确保即使在反向代理后面,这些示例也能按原样继续工作。
    • 初始 PR #1596@rkbeatss 提交。
  • 修复外部链接中的错别字/链接。PR #1702
  • 更新 外部链接 的处理方式,以使用数据文件并允许翻译标题,而无需在添加新链接时很快过时。PR #https://github.com/tiangolo/fastapi/pull/1701

  • 在文档中添加外部链接 使用 FastAPI 和 Streamlit 在 Python 中提供机器学习模型。PR #1669@davidefiocco 提交。
  • 在文档中添加关于 Pydantic Unions 中顺序的说明。PR #1591@kbanc 提交。
  • 改进对编辑器中测试的支持。PR #1699
  • 固定依赖项。PR #1697
  • 将 isort 更新到 5.x.x 版本。PR #1670@asheux 提交。

0.58.1

0.58.0

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

0.57.0

0.56.1

0.56.0

0.55.1

  • 修复在路径参数中处理具有自身模式的枚举的问题。为了在 FastAPI 中支持 pydantic/pydantic#1432。PR #1463

0.55.0

0.54.2

0.54.1

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

0.54.0

0.53.2

0.53.1

0.53.0

0.52.0

0.51.0

  • 重新导出 Starlette 中的实用程序
    • 这允许使用诸如from fastapi.responses import JSONResponse而不是from starlette.responses import JSONResponse
    • 这主要是一种语法糖,方便开发者体验。
    • 现在可以像在from fastapi import Response中一样,直接从fastapi导入RequestResponseWebSocketstatus。这是因为这些经常被使用,用于直接使用请求、设置头部和 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

0.48.0

0.47.1

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

0.47.0

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

0.44.1

  • 将 GitHub 社交预览图像添加到 git。PR #752
  • 更新 PyPI 的“trove 分类器”。PR #751
  • 完全支持 Python 3.8。在 Travis 中完全启用 Python 3.8。PR 749
  • 更新“新问题”模板。PR #749

  • 修复了对异类 Pydantic 类型的错误序列化。PR #748@dmontagu 贡献。

0.44.0

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

0.43.0

0.42.0

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

0.41.0

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

0.40.0

0.39.0

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

0.38.1

  • 修复了不正确的 Request 类导入。PR #493@kamalgill 贡献。

0.38.0

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

0.37.0

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

0.36.0

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

0.35.0

  • 修复了路由 assert 中的错别字。PR #419@pablogamboa 贡献。
  • 修复了文档中的错别字。PR #411@bronsen 贡献。
  • 修复了解析使用 Union 声明的主体类型的问题。PR #400@koxudaxi 贡献。

0.34.0

  • 升级 Starlette 支持的版本范围,包含最新的 0.12.7。新的范围是 0.11.1,<=0.12.7。PR #367@dedsm 提交。

  • 添加 OpenAPI 模式中重复模型的测试,来自 PR #333@dmontagu 提交。PR #385

0.33.0

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

0.32.0

  • 修复文档中关于功能的错别字。PR #380@MartinoMensio 提交。

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

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

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

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

  • 添加测试,用于在 .include_routerprefix 中使用路径模板。PR #349

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

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

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

0.31.0

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

0.30.1

0.30.0

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

    • 更新了关于 SQL 与 SQLAlchemy 的文档,使用 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 类型声明,它将被“克隆”以创建一个新的(一个克隆的 Pydantic Field,所有子模型也都被克隆)。
      • 这避免/修复了一个潜在的安全问题:由于返回的对象直接传递给 Pydantic,如果返回的对象是 response_model 的子类(例如,你返回一个继承自 User 但包含额外字段(如 hashed_password)的 UserInDB,并且 User 用于 response_model),它仍然会通过验证(因为 UserInDBUser 的子类),并且该对象将按原样返回,包括 hashed_password。为了解决这个问题,声明的 response_model 被克隆,如果它是一个 Pydantic 模型类(或在其内部包含 Pydantic 模型类,例如在 List[Item] 中),则 Pydantic 模型类将是不同的(“克隆”的)。因此,一个子类对象不会简单地通过验证并按原样返回,因为它不再是克隆的 response_model 的子类。相反,将使用返回对象的内容创建一个新的 Pydantic 模型对象。因此,它将是一个新对象(使用返回对象的数据创建),并由克隆的 response_model 过滤,仅包含声明的字段,就像平常一样。
    • PR #322
  • 删除/清理路由中未使用的正则表达式代码。PR #314@dmontagu 提交。

  • 对附加响应使用默认响应状态代码描述。PR #313@duxiaoyao 提交。

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

0.29.1

0.29.0

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

0.28.0

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

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

0.27.2

0.27.1

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

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

0.27.0

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

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

0.26.0

0.25.0

  • 添加对 Pydantic 的 includeexcludeby_alias 的支持。

    • 更新文档:响应模型
    • 添加以下内容的文档:主体 - 更新,使用 Pydantic 的 skip_defaults
    • 添加方法一致性测试。
    • PR #264
  • 在 GitHub 中添加 CONTRIBUTING.md 文件,以帮助新的贡献者。PR #255@wshayes 提交。

  • 添加对 Pydantic 的 skip_defaults 的支持

    • 有一个新的路径操作装饰器参数 response_model_skip_defaults
      • 该参数的名称很可能会在将来的版本中更改为 response_skip_defaultsmodel_skip_defaults 或类似名称。
    • 关于使用 response_model_skip_defaults 的新文档部分
    • PR #248@wshayes 提交。

0.24.0

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

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

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

0.23.0

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

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

    • 例如,在开发过程中,它可能是 https://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 参数中使用 Securityscopes,以实现更高级的具有作用域的 OAuth 2.0 安全方案。
    • 关于路径操作装饰器中的依赖项的新文档。
    • 关于include_router() 方法中的依赖项的新文档。
    • PR #235
  • 修复 Starlette URL 转换器的 OpenAPI 文档。在使用 path 转换器时特别有用,以将整个路径作为参数,例如 /some/url/{p:path}。PR #234@euri10 提交。

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

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

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

0.21.0

  • 在主体解析错误时,引发 from 前一个异常,以允许在日志记录代码中进行更好的自省。PR #192@ricardomomm 提交。

  • 使用名为“fastapi”的 Python 记录器而不是根记录器。PR #222@euri10 提交。

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

  • 修复路由中的错别字。PR #221@djlambert 提交。

0.20.1

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

  • 为 Gitter 添加 FastAPI 机器人。自动发布新版本公告。PR #189

0.20.0

  • 升级 OAuth2

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

  • 添加以下内容的文档:静态文件模板。PR #186

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

  • 修复文档中的错别字。PR #176@chdsbd 提交。

0.19.0

0.18.0

  • 添加以下内容的文档:HTTP 基本身份验证。PR #177

  • 使用自动标头(自动浏览器登录提示)升级 HTTP 基本身份验证处理。PR #175

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

  • 添加以下内容的文档:中间件。PR #173

0.17.0

  • 从 CI 发布 Flit。PR #170

  • 添加关于处理CORS(跨源资源共享) 的文档。PR #169

  • 默认情况下,按别名编码。这允许默认情况下使用 Pydantic alias 参数。PR #168

0.16.0

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提交。

  • 修复嵌套模型和带JWT的OAuth2部分中的错别字。PR #127@mmcloud提交。

0.12.0

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

0.11.0

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

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

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

0.10.3

0.10.2

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

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

  • 使用联合和列表记录响应模型,更新于:其他模型。PR #108

0.10.1

0.10.0

0.9.1

0.9.0

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

  • 添加以下内容的文档:应用程序配置

  • 修复文档中的错别字。PR #76@matthewhegarty提交。

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

0.8.0

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

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

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

  • 更新isort导入和脚本,使其与较新版本兼容。PR #75

0.7.1

0.7.0

0.6.4

0.6.3

  • 将Favicons添加到文档中。PR #53

0.6.2

0.6.1

0.6.0

0.5.1

0.5.0

0.4.0

0.3.0

0.2.1

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

0.2.0

  • 修复安全部分中的错别字:#24@kkinder提交。

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

0.1.19

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