FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi/applications.py
. PR #11335 by @igeni.fastapi/security/oauth2.py
. PR #11368 by @shandongbinzhou.docs/en/docs/tutorial/extra-models.md
. PR #11329 by @alejsdev.project-generation.md
. PR #11326 by @alejsdev.python-multipart
GitHub link in all docs from https://andrew-d.github.io/python-multipart/
to 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 by @nilslindemann.docs/de/docs/deployment/manually.md
. PR #10738 by @nilslindemann.docs/de/docs/deployment/concepts.md
. PR #10744 by @nilslindemann.docs/de/docs/features.md
. PR #10284 by @nilslindemann.docs/de/docs/deployment/server-workers.md
. PR #10747 by @nilslindemann.docs/de/docs/deployment/docker.md
. PR #10759 by @nilslindemann.docs/de/docs/how-to/index.md
. PR #10769 by @nilslindemann.docs/de/docs/how-to/general.md
. PR #10770 by @nilslindemann.docs/de/docs/how-to/graphql.md
. PR #10788 by @nilslindemann.docs/de/docs/how-to/custom-request-and-route.md
. PR #10789 by @nilslindemann.docs/de/docs/how-to/conditional-openapi.md
. PR #10790 by @nilslindemann.docs/de/docs/how-to/separate-openapi-schemas.md
. PR #10796 by @nilslindemann.docs/de/docs/how-to/configure-swagger-ui.md
. PR #10804 by @nilslindemann.docs/de/docs/how-to/custom-docs-ui-assets.md
. PR #10803 by @nilslindemann.docs/de/docs/reference/parameters.md
. PR #10814 by @nilslindemann.docs/de/docs/reference/status.md
. PR #10815 by @nilslindemann.docs/de/docs/reference/uploadfile.md
. PR #10816 by @nilslindemann.docs/de/docs/reference/exceptions.md
. PR #10817 by @nilslindemann.docs/de/docs/reference/dependencies.md
. PR #10818 by @nilslindemann.docs/de/docs/reference/apirouter.md
. PR #10819 by @nilslindemann.docs/de/docs/reference/websockets.md
. PR #10822 by @nilslindemann.docs/de/docs/reference/httpconnection.md
. PR #10823 by @nilslindemann.docs/de/docs/reference/response.md
. PR #10824 by @nilslindemann.docs/de/docs/reference/middleware.md
. PR #10837 by @nilslindemann.docs/de/docs/reference/openapi/*.md
. PR #10838 by @nilslindemann.docs/de/docs/reference/security/index.md
. PR #10839 by @nilslindemann.docs/de/docs/reference/staticfiles.md
. PR #10841 by @nilslindemann.docs/de/docs/reference/testclient.md
. PR #10843 by @nilslindemann.docs/de/docs/project-generation.md
. PR #10851 by @nilslindemann.docs/de/docs/history-design-future.md
. PR #10865 by @nilslindemann.docs/de/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #10422 by @nilslindemann.docs/de/docs/tutorial/dependencies/global-dependencies.md
. PR #10420 by @nilslindemann.docs/de/docs/fastapi-people.md
. PR #10285 by @nilslindemann.docs/de/docs/tutorial/dependencies/sub-dependencies.md
. PR #10409 by @nilslindemann.docs/de/docs/tutorial/security/index.md
. PR #10429 by @nilslindemann.docs/de/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
. PR #10411 by @nilslindemann.docs/de/docs/tutorial/extra-data-types.md
. PR #10534 by @nilslindemann.docs/de/docs/tutorial/security/simple-oauth2.md
. PR #10504 by @nilslindemann.docs/de/docs/tutorial/security/get-current-user.md
. PR #10439 by @nilslindemann.docs/de/docs/tutorial/request-forms-and-files.md
. PR #10368 by @nilslindemann.docs/de/docs/tutorial/encoder.md
. PR #10385 by @nilslindemann.docs/de/docs/tutorial/request-forms.md
. PR #10361 by @nilslindemann.docs/de/docs/deployment/versions.md
. PR #10491 by @nilslindemann.docs/de/docs/async.md
. PR #10449 by @nilslindemann.docs/de/docs/tutorial/cookie-params.md
. PR #10323 by @nilslindemann.docs/de/docs/tutorial/dependencies/classes-as-dependencies.md
. PR #10407 by @nilslindemann.docs/de/docs/tutorial/dependencies/index.md
. PR #10399 by @nilslindemann.docs/de/docs/tutorial/header-params.md
. PR #10326 by @nilslindemann.docs/de/docs/tutorial/path-params-numeric-validations.md
. PR #10307 by @nilslindemann.docs/de/docs/tutorial/query-params-str-validations.md
. PR #10304 by @nilslindemann.docs/de/docs/tutorial/request-files.md
. PR #10364 by @nilslindemann.docs/pt/docs/advanced/templates.md
. PR #11338 by @SamuelBFavarin.docs/bn/docs/learn/index.md
. PR #11337 by @imtiaz101325.docs/ko/docs/index.md
. PR #11296 by @choi-haram.docs/ko/docs/about/index.md
. PR #11299 by @choi-haram.docs/ko/docs/advanced/index.md
. PR #9613 by @ElliottLarsen.docs/de/docs/how-to/extending-openapi.md
. PR #10794 by @nilslindemann.docs/zh/docs/tutorial/metadata.md
. PR #11286 by @jackleeio.docs/zh/docs/contributing.md
. PR #10887 by @Aruelius.docs/az/docs/fastapi-people.md
. PR #11195 by @vusallyv.docs/ru/docs/tutorial/dependencies/index.md
. PR #11223 by @kohiry.docs/zh/docs/tutorial/query-params.md
. PR #11242 by @jackleeio.docs/az/learn/index.md
. PR #11192 by @vusallyv.yield
and except
to require raising again as in regular Python. PR #11191 by @tiangolo.
yield
, used except
in those dependencies, and didn't raise again.yield
and except
.In short, if you had dependencies that looked like:
def my_dep():
try:
yield
except SomeException:
pass
Now you need to make sure you raise again after except
, just as you would in regular Python:
def my_dep():
try:
yield
except SomeException:
raise
docs/ko/docs/
. PR #11126 by @KaniKim.fastapi/applications.py
. PR #11099 by @JacobHayes.docs/de/docs/reference/background.md
. PR #10820 by @nilslindemann.docs/de/docs/reference/templating.md
. PR #10842 by @nilslindemann.docs/de/docs/external-links.md
. PR #10852 by @nilslindemann.docs/tr/docs/tutorial/query-params.md
. PR #11162 by @hasansezertasan.docs/de/docs/reference/encoders.md
. PR #10840 by @nilslindemann.docs/de/docs/reference/responses.md
. PR #10825 by @nilslindemann.docs/de/docs/reference/request.md
. PR #10821 by @nilslindemann.docs/tr/docs/tutorial/query-params.md
. PR #11078 by @emrhnsyts.docs/de/docs/reference/fastapi.md
. PR #10813 by @nilslindemann.docs/de/docs/newsletter.md
. PR #10853 by @nilslindemann.docs/zh-hant/docs/learn/index.md
. PR #11142 by @hsuanchi./docs/ko/docs/tutorial/dependencies/global-dependencies.md
. PR #11123 by @riroan./docs/ko/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
. PR #11124 by @riroan./docs/ko/docs/tutorial/schema-extra-example.md
. PR #11121 by @KaniKim./docs/ko/docs/tutorial/body-fields.md
. PR #11112 by @KaniKim./docs/ko/docs/tutorial/cookie-params.md
. PR #11118 by @riroan./docs/ko/docs/dependencies/index.md
. PR #11114 by @KaniKim./docs/ko/docs/deployment/docker.md
. PR #11113 by @KaniKim.docs/tr/docs/tutorial/first-steps.md
. PR #11094 by @hasansezertasan.docs/es/docs/advanced/security/index.md
. PR #2278 by @Xaraxx.docs/es/docs/advanced/response-headers.md
. PR #2276 by @Xaraxx.docs/es/docs/deployment/index.md
and ~/deployment/versions.md
. PR #9669 by @pabloperezmoya.docs/es/docs/benchmarks.md
. PR #10928 by @pablocm83.docs/es/docs/advanced/response-change-status-code.md
. PR #11100 by @alejsdev.python-multipart
to >=0.0.7
to fix a vulnerability when using form data with a ReDos attack. You can also simply upgrade python-multipart
.Read more in the advisory: Content-Type Header ReDoS.
fastapi/utils.py
. PR #10576 by @eukub.tests/test_tutorial/test_header_params/test_tutorial003.py
after fix in Starlette. PR #10904 by @ooknimm.help-fastapi.md
. PR #11040 by @tiangolo.fastapi/security/oauth2.py
. PR #10972 by @RafalSkolasinski.HTTPException
details in docs/en/docs/tutorial/handling-errors.md
. PR #5418 by @papb.docs/de/docs/tutorial/first-steps.md
. PR #10959 by @nilslindemann.docs/en/docs/advanced/async-tests.md
. PR #10960 by @nilslindemann.docs/tutorial/sql-databases.md
in several languages. PR #10716 by @theoohoho.external_links.yml
. PR #10943 by @Torabek.url_for
. PR #5937 by @EzzEddin.docs/en/docs/tutorial/bigger-applications.md
. PR #5490 by @papb.docs/en/docs/tutorial/static-files.md
. PR #10243 by @hungtsetse.en/docs/contributing.md
. PR #10480 by @nilslindemann.tutorial/bigger-applications.md
. PR #10552 by @nilslindemann.docs/en/docs/advanced/path-operation-advanced-configuration.md
. PR #10826 by @ahmedabdou14.docs/es/docs/external-links.md
. PR #10933 by @pablocm83.docs/ko/docs/tutorial/first-steps.md
, docs/ko/docs/tutorial/index.md
, docs/ko/docs/tutorial/path-params.md
, and docs/ko/docs/tutorial/query-params.md
. PR #4218 by @SnowSuno.docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #10870 by @zhiquanchi.docs/zh/docs/deployment/concepts.md
. PR #10282 by @xzmeng.docs/az/docs/index.md
. PR #11047 by @aykhans.docs/ko/docs/tutorial/middleware.md
. PR #2829 by @JeongHyeongKim.docs/de/docs/tutorial/body-nested-models.md
. PR #10313 by @nilslindemann.docs/fa/docs/tutorial/middleware.md
. PR #9695 by @mojtabapaso.docs/fa/docs/index.md
. PR #10216 by @theonlykingpin.docs/de/docs/tutorial/body-fields.md
. PR #10310 by @nilslindemann.docs/de/docs/tutorial/body.md
. PR #10295 by @nilslindemann.docs/de/docs/tutorial/body-multiple-params.md
. PR #10308 by @nilslindemann.docs/ja/docs/tutorial/security/get-current-user.md
. PR #2681 by @sh0nk.docs/zh/docs/advanced/advanced-dependencies.md
. PR #3798 by @jaystone776.docs/zh/docs/advanced/events.md
. PR #3815 by @jaystone776.docs/zh/docs/advanced/behind-a-proxy.md
. PR #3820 by @jaystone776.docs/zh/docs/advanced/testing-events.md
. PR #3818 by @jaystone776.docs/zh/docs/advanced/testing-websockets.md
. PR #3817 by @jaystone776.docs/zh/docs/advanced/testing-database.md
. PR #3821 by @jaystone776.docs/zh/docs/deployment/deta.md
. PR #3837 by @jaystone776.docs/zh/docs/history-design-future.md
. PR #3832 by @jaystone776.docs/zh/docs/project-generation.md
. PR #3831 by @jaystone776.docs/zh/docs/deployment/docker.md
. PR #10296 by @xzmeng.docs/es/docs/features.md
. PR #10884 by @pablocm83.docs/es/docs/newsletter.md
. PR #10922 by @pablocm83.docs/ko/docs/tutorial/background-tasks.md
. PR #5910 by @junah201.docs/tr/docs/alternatives.md
. PR #10502 by @alperiox.docs/ko/docs/tutorial/dependencies/index.md
. PR #10989 by @KaniKim./docs/ko/docs/tutorial/body.md
. PR #11000 by @KaniKim.docs/pt/docs/tutorial/schema-extra-example.md
. PR #4065 by @luccasmmg.docs/tr/docs/history-design-future.md
. PR #11012 by @hasansezertasan.docs/tr/docs/resources/index.md
. PR #11020 by @hasansezertasan.docs/tr/docs/how-to/index.md
. PR #11021 by @hasansezertasan.docs/de/docs/tutorial/query-params.md
. PR #10293 by @nilslindemann.docs/de/docs/benchmarks.md
. PR #10866 by @nilslindemann.docs/tr/docs/learn/index.md
. PR #11014 by @hasansezertasan.docs/fa/docs/tutorial/security/index.md
. PR #9945 by @mojtabapaso.docs/tr/docs/help/index.md
. PR #11013 by @hasansezertasan.docs/tr/docs/about/index.md
. PR #11006 by @hasansezertasan.docs/tr/docs/benchmarks.md
. PR #11005 by @hasansezertasan.docs/it/docs/index.md
. PR #5233 by @matteospanio.docs/ko/docs/help/index.md
. PR #10983 by @KaniKim.docs/ko/docs/features.md
. PR #10976 by @KaniKim.docs/ko/docs/tutorial/security/get-current-user.md
. PR #5737 by @KdHyeon0661.docs/ru/docs/tutorial/security/first-steps.md
. PR #10541 by @AlertRED.docs/ru/docs/tutorial/handling-errors.md
. PR #10375 by @AlertRED.docs/ru/docs/tutorial/encoder.md
. PR #10374 by @AlertRED.docs/ru/docs/tutorial/body-updates.md
. PR #10373 by @AlertRED.fastapi-people.md
.. PR #10255 by @NiKuma0.docs/ja/docs/tutorial/security/index.md
. PR #5798 by @3w36zj6.docs/de/docs/advanced/generate-clients.md
. PR #10725 by @nilslindemann.docs/de/docs/advanced/openapi-webhooks.md
. PR #10712 by @nilslindemann.docs/de/docs/advanced/custom-response.md
. PR #10624 by @nilslindemann.docs/de/docs/advanced/additional-status-codes.md
. PR #10617 by @nilslindemann.docs/de/docs/tutorial/middleware.md
. PR #10391 by @JohannesJungbluth.docs/ja/docs/tutorial/encoder.md
. PR #1955 by @SwftAlpc.docs/ja/docs/tutorial/extra-data-types.md
. PR #1932 by @SwftAlpc.docs/tr/docs/async.md
. PR #5191 by @BilalAlpaslan.docs/tr/docs/project-generation.md
. PR #5192 by @BilalAlpaslan.docs/ko/docs/deployment/docker.md
. PR #5657 by @nearnear.docs/ko/docs/deployment/server-workers.md
. PR #4935 by @jujumilk3.docs/ko/docs/deployment/index.md
. PR #4561 by @jujumilk3.docs/ko/docs/tutorial/path-operation-configuration.md
. PR #3639 by @jungsu-kwon.zh
- Traditional Chinese. PR #10889 by @cherinyy.docs/ko/docs/tutorial/static-files.md
. PR #2957 by @jeesang7.docs/ko/docs/tutorial/response-model.md
. PR #2766 by @hard-coders.docs/ko/docs/tutorial/body-multiple-params.md
. PR #2461 by @PandaHun.docs/ko/docs/tutorial/query-params-str-validations.md
. PR #2415 by @hard-coders.docs/ko/docs/python-types.md
. PR #2267 by @jrim.docs/ko/docs/tutorial/body-nested-models.md
. PR #2506 by @hard-coders.docs/ko/docs/learn/index.md
. PR #10977 by @KaniKim.docs/de/docs/tutorial/index.md
. PR #10962 by @nilslindemann.docs/ko/docs/tutorial/path-params.md
. PR #10758 by @2chanhaeng.docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #1961 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
. PR #1960 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/sub-dependencies.md
. PR #1959 by @SwftAlpc.docs/ja/docs/tutorial/background-tasks.md
. PR #2668 by @tokusumi.docs/ja/docs/tutorial/dependencies/index.md
and docs/ja/docs/tutorial/dependencies/classes-as-dependencies.md
. PR #1958 by @SwftAlpc.docs/ja/docs/tutorial/response-model.md
. PR #1938 by @SwftAlpc.docs/ja/docs/tutorial/body-multiple-params.md
. PR #1903 by @SwftAlpc.docs/ja/docs/tutorial/path-params-numeric-validations.md
. PR #1902 by @SwftAlpc.docs/ja/docs/python-types.md
. PR #1899 by @SwftAlpc.docs/ja/docs/tutorial/handling-errors.md
. PR #1953 by @SwftAlpc.docs/ja/docs/tutorial/response-status-code.md
. PR #1942 by @SwftAlpc.docs/ja/docs/tutorial/extra-models.md
. PR #1941 by @SwftAlpc.docs/ja/docs/tutorial/schema-extra-example.md
. PR #1931 by @SwftAlpc.docs/ja/docs/tutorial/body-nested-models.md
. PR #1930 by @SwftAlpc.docs/ja/docs/tutorial/body-fields.md
. PR #1923 by @SwftAlpc.docs/de/docs/tutorial/index.md
. PR #9502 by @fhabers21.docs/de/docs/tutorial/background-tasks.md
. PR #10566 by @nilslindemann.docs/ru/docs/index.md
. PR #10672 by @Delitel-WEB.docs/zh/docs/tutorial/extra-data-types.md
. PR #10727 by @HiemalBeryl.docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md
. PR #10410 by @AlertRED.mkdocs.yml
. PR #11016 by @alejsdev.mkdocs.yml
languages in CI, update docs.py
. PR #11009 by @tiangolo.label-approved.yml
to accept translations with 1 reviewer. PR #11007 by @alejsdev.zh-hant
. PR #10950 by @tiangolo.>=0.29.0,<0.33.0
, update docs and usage of templates with new Starlette arguments. Remove pin of AnyIO >=3.7.1,<4.0.0
, add support for AnyIO 4.x.x. PR #10846 by @tiangolo.docs/en/docs/alternatives.md
. PR #10931 by @s111d.email
with username
in docs_src/security/tutorial007
code examples. PR #10649 by @nilslindemann..model_dump()
. PR #10929 by @tiangolo.docs/en/docs/tutorial/sql-databases.md
. PR #10765 by @HurSungYun.docs/en/docs/alternatives.md
and docs/en/docs/tutorial/dependencies/index.md
. PR #10906 by @s111d.docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #10834 by @Molkree.AsyncClient
. PR #4167 by @andrew-chang-dewitt./docs/reference/exceptions.md
and /en/docs/reference/status.md
. PR #10809 by @clarencepenz.openapi-callbacks.md
. PR #10673 by @kayjan.fastapi/routing.py
. PR #10520 by @sepsh.create_item
with update_item
when appropriate. PR #5913 by @OttoAndrey.docs/bn/docs/index.md
. PR #9177 by @Fahad-Md-Kamal.index.md
in several languages. PR #10711 by @tamago3keran.docs/ru/docs/tutorial/request-forms-and-files.md
. PR #10347 by @AlertRED.docs/uk/docs/index.md
. PR #10362 by @rostik1410.docs/ko/docs/index.md
. PR #10680 by @Eeap.docs/fa/docs/features.md
. PR #5887 by @amirilf.docs/zh/docs/advanced/additional-responses.md
. PR #10325 by @ShuibeiC.docs/ru/docs/tutorial/background-tasks.md
, docs/ru/docs/tutorial/body-nested-models.md
, docs/ru/docs/tutorial/debugging.md
, docs/ru/docs/tutorial/testing.md
. PR #10311 by @AlertRED.docs/ru/docs/tutorial/request-files.md
. PR #10332 by @AlertRED.docs/zh/docs/deployment/server-workers.md
. PR #10292 by @xzmeng.docs/zh/docs/deployment/cloud.md
. PR #10291 by @xzmeng.docs/zh/docs/deployment/manually.md
. PR #10279 by @xzmeng.docs/zh/docs/deployment/https.md
. PR #10277 by @xzmeng.docs/zh/docs/deployment/index.md
. PR #10275 by @xzmeng.docs/de/docs/tutorial/first-steps.md
. PR #9530 by @fhabers21.docs/tr/docs/index.md
. PR #10444 by @hasansezertasan.docs/zh/docs/learn/index.md
. PR #10479 by @KAZAMA-DREAM.docs/ru/docs/learn/index.md
. PR #10539 by @AlertRED.docs/zh/docs/tutorial/sql-databases.md
. PR #9712 by @Royc30ne.docs/tr/docs/external-links.md
. PR #10549 by @hasansezertasan.docs/es/docs/learn/index.md
. PR #10885 by @pablocm83.docs/uk/docs/tutorial/body-fields.md
. PR #10670 by @ArtemKhymenko./docs/hu/docs/index.md
. PR #10812 by @takacs.docs/tr/docs/newsletter.md
. PR #10550 by @hasansezertasan.docs/es/docs/help/index.md
. PR #10907 by @pablocm83.docs/es/docs/about/index.md
. PR #10908 by @pablocm83.docs/es/docs/resources/index.md
. PR #10909 by @pablocm83.Using resources from dependencies with yield
in background tasks is no longer supported.
This change is what supports the new features, read below. 🤓
yield
, HTTPException
and Background TasksDependencies with yield
now can raise HTTPException
and other exceptions after yield
. 🎉
Read the new docs here: Dependencies with yield
and HTTPException
.
from fastapi import Depends, FastAPI, HTTPException
from typing_extensions import Annotated
app = FastAPI()
data = {
"plumbus": {"description": "Freshly pickled plumbus", "owner": "Morty"},
"portal-gun": {"description": "Gun to create portals", "owner": "Rick"},
}
class OwnerError(Exception):
pass
def get_username():
try:
yield "Rick"
except OwnerError as e:
raise HTTPException(status_code=400, detail=f"Onwer 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
Before FastAPI 0.106.0, raising exceptions after yield
was not possible, the exit code in dependencies with yield
was executed after the response was sent, so Exception Handlers would have already run.
This was designed this way mainly to allow using the same objects "yielded" by dependencies inside of background tasks, because the exit code would be executed after the background tasks were finished.
Nevertheless, as this would mean waiting for the response to travel through the network while unnecessarily holding a resource in a dependency with yield (for example a database connection), this was changed in FastAPI 0.106.0.
Additionally, a background task is normally an independent set of logic that should be handled separately, with its own resources (e.g. its own database connection).
If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with yield
.
For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.
The sequence of execution before FastAPI 0.106.0 was like the diagram in the Release Notes for FastAPI 0.106.0.
The new execution flow can be found in the docs: Execution of dependencies with yield
.
Annotated[str, Field(), Query()]
. PR #10773 by @tiangolo.docs/en/docs/tutorial/metadata.md
. PR #10433 by @worldworm.docs/en/docs/tutorial/path-params.md
. PR #10043 by @giuliowaitforitdavide.docs/en/docs/reference/dependencies.md
. PR #10465 by @suravshresth.docs/en/docs/tutorial/body-nested-models.md
. PR #10468 by @yogabonito.pydantic.Required
in docs/en/docs/tutorial/query-params-str-validations.md
. PR #10469 by @yogabonito.docs/en/docs/reference/index.md
. PR #10467 by @tarsil.docs/en/docs/async.md
and docs/zh/docs/async.md
to make them relative. PR #10498 by @hasnatsajid.docs/em/docs/async.md
. PR #10507 by @hasnatsajid.docs/em/docs/index.md
, Python 3.8. PR #10521 by @kerriop.CITATION.cff
file for academic citations. PR #10496 by @tiangolo.