Dev-Docs-Rag / data /raw /de.html
rishitbhowmick's picture
Include indexed data with LFS for Hugging Face deployment
d250b36
<!doctype html>
<html lang="de" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="FastAPI framework, high performance, easy to learn, fast to code, ready for production">
<link rel="canonical" href="https://fastapi.tiangolo.com/de/">
<link rel="next" href="features/">
<link rel="alternate" href="/" hreflang="de">
<link rel="alternate" href="/de/" hreflang="de">
<link rel="alternate" href="/es/" hreflang="de">
<link rel="alternate" href="/fr/" hreflang="de">
<link rel="alternate" href="/ja/" hreflang="de">
<link rel="alternate" href="/ko/" hreflang="de">
<link rel="alternate" href="/pt/" hreflang="de">
<link rel="alternate" href="/ru/" hreflang="de">
<link rel="alternate" href="/tr/" hreflang="de">
<link rel="alternate" href="/uk/" hreflang="de">
<link rel="alternate" href="/zh/" hreflang="de">
<link rel="alternate" href="/zh-hant/" hreflang="de">
<link rel="icon" href="img/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>FastAPI</title>
<link rel="stylesheet" href="assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="assets/_mkdocstrings.css">
<link rel="stylesheet" href="css/termynal.css">
<link rel="stylesheet" href="css/custom.css">
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" />
<meta property="og:title" content="FastAPI" />
<meta property="og:description" content="FastAPI framework, high performance, easy to learn, fast to code, ready for production" />
<meta property="og:image" content="https://fastapi.tiangolo.com/de/assets/images/social/index.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content="https://fastapi.tiangolo.com/de/" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="FastAPI" />
<meta property="twitter:description" content="FastAPI framework, high performance, easy to learn, fast to code, ready for production" />
<meta property="twitter:image" content="https://fastapi.tiangolo.com/de/assets/images/social/index.png" />
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#fastapi" class="md-skip">
Zum Inhalt
</a>
</div>
<div data-md-component="announce">
<aside class="md-banner">
<div class="md-banner__inner md-grid md-typeset">
<div class="announce-wrapper">
<div id="announce-left">
<div class="item">
<a class="announce-link" href="https://fastapicloud.com" target="_blank">
<span class="twemoji">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 19c0 .34.04.67.09 1H6.5c-1.5 0-2.81-.5-3.89-1.57C1.54 17.38 1 16.09 1 14.58q0-1.95 1.17-3.48C3.34 9.57 4 9.43 5.25 9.15c.42-1.53 1.25-2.77 2.5-3.72S10.42 4 12 4c1.95 0 3.6.68 4.96 2.04S19 9.05 19 11c1.15.13 2.1.63 2.86 1.5.51.57.84 1.21 1 1.92A5.9 5.9 0 0 0 19 13c-3.31 0-6 2.69-6 6m3-1h2v4h2v-4h2l-3-3z"/></svg>
</span> Join the <strong>FastAPI Cloud</strong> waiting list 🚀
</a>
</div>
<div class="item">
<a class="announce-link" href="https://x.com/fastapi" target="_blank">
<span class="twemoji">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M357.2 48h70.6L273.6 224.2 455 464H313L201.7 318.6 74.5 464H3.8l164.9-188.5L-5.2 48h145.6l100.5 132.9zm-24.8 373.8h39.1L119.1 88h-42z"/></svg>
</span> Follow <strong>@fastapi</strong> on <strong>X (Twitter)</strong> to stay updated
</a>
</div>
<div class="item">
<a class="announce-link" href="https://www.linkedin.com/company/fastapi" target="_blank">
<span class="twemoji linkedin">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</span> Follow <strong>FastAPI</strong> on <strong>LinkedIn</strong> to stay updated
</a>
</div>
<div class="item">
<a class="announce-link" href="https://fastapi.tiangolo.com/newsletter/">
<span class="twemoji">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m20 8-8 5-8-5V6l8 5 8-5m0-2H4c-1.11 0-2 .89-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2"/></svg>
</span> Subscribe to the <strong>FastAPI and friends</strong> newsletter 🎉
</a>
</div>
</div>
<div id="announce-right" style="position: relative;">
<div class="item">
<a title="BlockBee Cryptocurrency Payment Gateway" style="display: block; position: relative;" href="https://blockbee.io?ref=fastapi" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/blockbee-banner.png" />
</a>
</div>
<div class="item">
<a title="Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files" style="display: block; position: relative;" href="https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=top-banner" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/scalar-banner.svg" />
</a>
</div>
<div class="item">
<a title="Auth, user management and more for your B2B product" style="display: block; position: relative;" href="https://www.propelauth.com/?utm_source=fastapi&utm_campaign=1223&utm_medium=topbanner" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/propelauth-banner.png" />
</a>
</div>
<div class="item">
<a title="liblab - Generate SDKs from FastAPI" style="display: block; position: relative;" href="https://liblab.com?utm_source=fastapi" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/liblab-banner.png" />
</a>
</div>
<div class="item">
<a title="Deploy & scale any full-stack web app on Render. Focus on building apps, not infra." style="display: block; position: relative;" href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/render-banner.svg" />
</a>
</div>
<div class="item">
<a title="Cut Code Review Time & Bugs in Half with CodeRabbit" style="display: block; position: relative;" href="https://www.coderabbit.ai/?utm_source=fastapi&utm_medium=banner&utm_campaign=fastapi" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/coderabbit-banner.png" />
</a>
</div>
<div class="item">
<a title="Making Retail Purchases Actionable for Brands and Developers" style="display: block; position: relative;" href="https://subtotal.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=open-source" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/subtotal-banner.svg" />
</a>
</div>
<div class="item">
<a title="Deploy enterprise applications at startup speed" style="display: block; position: relative;" href="https://docs.railway.com/guides/fastapi?utm_medium=integration&utm_source=docs&utm_campaign=fastapi" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/railway-banner.png" />
</a>
</div>
<div class="item">
<a title="SerpApi: Web Search API" style="display: block; position: relative;" href="https://serpapi.com/?utm_source=fastapi_website" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/serpapi-banner.png" />
</a>
</div>
<div class="item">
<a title="Greptile: The AI Code Reviewer" style="display: block; position: relative;" href="https://www.greptile.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=fastapi_sponsor_page" target="_blank">
<span class="sponsor-badge">sponsor</span>
<img class="sponsor-image" src="/img/sponsors/greptile-banner.png" />
</a>
</div>
</div>
</div>
</div>
</aside>
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Kopfzeile">
<a href="." title="FastAPI" class="md-header__button md-logo" aria-label="FastAPI" data-md-component="logo">
<img src="img/icon-white.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
FastAPI
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
FastAPI
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9 2C5.13 2 2 5.13 2 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.87-3.13-7-7-7M6 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H6zm13-8h-2l-3.2 9h1.9l.7-2h3.2l.7 2h1.9zm-2.15 5.65L18 15l1.15 3.65z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="amber" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="amber" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button class="md-header__button md-icon" aria-label="Sprache wechseln">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"/></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a href="/" hreflang="" class="md-select__link">
en - English
</a>
</li>
<li class="md-select__item">
<a href="/de/" hreflang="" class="md-select__link">
de - Deutsch
</a>
</li>
<li class="md-select__item">
<a href="/es/" hreflang="" class="md-select__link">
es - español
</a>
</li>
<li class="md-select__item">
<a href="/fr/" hreflang="" class="md-select__link">
fr - français
</a>
</li>
<li class="md-select__item">
<a href="/ja/" hreflang="" class="md-select__link">
ja - 日本語
</a>
</li>
<li class="md-select__item">
<a href="/ko/" hreflang="" class="md-select__link">
ko - 한국어
</a>
</li>
<li class="md-select__item">
<a href="/pt/" hreflang="" class="md-select__link">
pt - português
</a>
</li>
<li class="md-select__item">
<a href="/ru/" hreflang="" class="md-select__link">
ru - русский язык
</a>
</li>
<li class="md-select__item">
<a href="/tr/" hreflang="" class="md-select__link">
tr - Türkçe
</a>
</li>
<li class="md-select__item">
<a href="/uk/" hreflang="" class="md-select__link">
uk - українська мова
</a>
</li>
<li class="md-select__item">
<a href="/zh/" hreflang="" class="md-select__link">
zh - 简体中文
</a>
</li>
<li class="md-select__item">
<a href="/zh-hant/" hreflang="" class="md-select__link">
zh-hant - 繁體中文
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Suche" placeholder="Suche" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Suche">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Teilen" aria-label="Teilen" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Zurücksetzen" aria-label="Zurücksetzen" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Suche wird initialisiert
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/fastapi/fastapi" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M202.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1M496 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2m-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3m-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1"/></svg>
</div>
<div class="md-source__repository">
fastapi/fastapi
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Hauptnavigation" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item md-tabs__item--active">
<a href="." class="md-tabs__link">
FastAPI
</a>
</li>
<li class="md-tabs__item">
<a href="features/" class="md-tabs__link">
Merkmale
</a>
</li>
<li class="md-tabs__item">
<a href="learn/" class="md-tabs__link">
Lernen
</a>
</li>
<li class="md-tabs__item">
<a href="reference/" class="md-tabs__link">
Reference
</a>
</li>
<li class="md-tabs__item">
<a href="fastapi-people/" class="md-tabs__link">
FastAPI People
</a>
</li>
<li class="md-tabs__item">
<a href="resources/" class="md-tabs__link">
Ressourcen
</a>
</li>
<li class="md-tabs__item">
<a href="about/" class="md-tabs__link">
Über
</a>
</li>
<li class="md-tabs__item">
<a href="release-notes/" class="md-tabs__link">
Release Notes
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="." title="FastAPI" class="md-nav__button md-logo" aria-label="FastAPI" data-md-component="logo">
<img src="img/icon-white.svg" alt="logo">
</a>
FastAPI
</label>
<div class="md-nav__source">
<a href="https://github.com/fastapi/fastapi" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M202.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1M496 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2m-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3m-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1"/></svg>
</div>
<div class="md-source__repository">
fastapi/fastapi
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
FastAPI
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="." class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
FastAPI
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#sponsors" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Sponsoren
</span>
</span>
</a>
<nav class="md-nav" aria-label="Sponsoren">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#keystone-sponsor" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Keystone-Sponsor
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gold-and-silver-sponsors" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Gold- und Silber-Sponsoren
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#opinions" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Meinungen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fastapi-mini-documentary" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI Mini-Dokumentarfilm
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#typer-the-fastapi-of-clis" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<strong>Typer</strong>, das FastAPI der CLIs
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#requirements" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Anforderungen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installation" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Installation
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Beispiel
</span>
</span>
</a>
<nav class="md-nav" aria-label="Beispiel">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Erstellung
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#run-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Starten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#check-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Es testen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interactive-api-docs" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Interaktive API-Dokumentation
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alternative-api-docs" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alternative API-Dokumentation
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#example-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Beispielaktualisierung
</span>
</span>
</a>
<nav class="md-nav" aria-label="Beispielaktualisierung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#interactive-api-docs-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Interaktive API-Dokumentation aktualisieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alternative-api-docs-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alternative API-Dokumentation aktualisieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#recap" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusammenfassung
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deploy-your-app-optional" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ihre App deployen (optional)
</span>
</span>
</a>
<nav class="md-nav" aria-label="Ihre App deployen (optional)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#about-fastapi-cloud" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Über FastAPI Cloud
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deploy-to-other-cloud-providers" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Bei anderen Cloudanbietern deployen
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#performance" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Performanz
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Abhängigkeiten
</span>
</span>
</a>
<nav class="md-nav" aria-label="Abhängigkeiten">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#standard-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>standard</code>-Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#without-standard-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ohne <code>standard</code>-Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#without-fastapi-cloud-cli" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ohne <code>fastapi-cloud-cli</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#additional-optional-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusätzliche optionale Abhängigkeiten
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#license" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Lizenz
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="features/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Merkmale
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<div class="md-nav__link md-nav__container">
<a href="learn/" class="md-nav__link ">
<span class="md-ellipsis">
Lernen
</span>
</a>
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Lernen
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="python-types/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Einführung in Python-Typen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="async/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Nebenläufigkeit und async / await
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="environment-variables/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Umgebungsvariablen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="virtual-environments/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Virtuelle Umgebungen
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
<div class="md-nav__link md-nav__container">
<a href="tutorial/" class="md-nav__link ">
<span class="md-ellipsis">
Tutorial – Benutzerhandbuch
</span>
</a>
<label class="md-nav__link " for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6">
<span class="md-nav__icon md-icon"></span>
Tutorial – Benutzerhandbuch
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="tutorial/first-steps/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Erste Schritte
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/path-params/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Pfad-Parameter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/query-params/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Query-Parameter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/body/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Requestbody
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/query-params-str-validations/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Query-Parameter und String-Validierungen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/path-params-numeric-validations/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Pfad-Parameter und Validierung von Zahlen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/query-param-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Query-Parameter-Modelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/body-multiple-params/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Body – Mehrere Parameter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/body-fields/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Body – Felder
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/body-nested-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Body – Verschachtelte Modelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/schema-extra-example/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Beispiel-Request-Daten deklarieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/extra-data-types/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusätzliche Datentypen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/cookie-params/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Cookie-Parameter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/header-params/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Header-Parameter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/cookie-param-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Cookie-Parameter-Modelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/header-param-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Header-Parameter-Modelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/response-model/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Responsemodell – Rückgabetyp
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/extra-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Extramodelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/response-status-code/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Response-Statuscode
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/request-forms/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Formulardaten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/request-form-models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Formularmodelle
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/request-files/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Dateien im Request
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/request-forms-and-files/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Formulardaten und Dateien im Request
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/handling-errors/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Fehler behandeln
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/path-operation-configuration/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Pfadoperation-Konfiguration
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/encoder/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
JSON-kompatibler Encoder
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/body-updates/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Body – Aktualisierungen
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_29" >
<div class="md-nav__link md-nav__container">
<a href="tutorial/dependencies/" class="md-nav__link ">
<span class="md-ellipsis">
Abhängigkeiten
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_29" id="__nav_3_6_29_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_29_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_29">
<span class="md-nav__icon md-icon"></span>
Abhängigkeiten
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="tutorial/dependencies/classes-as-dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Klassen als Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/dependencies/sub-dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Unterabhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/dependencies/dependencies-in-path-operation-decorators/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Abhängigkeiten in Pfadoperation-Dekoratoren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/dependencies/global-dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Globale Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/dependencies/dependencies-with-yield/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Abhängigkeiten mit <code>yield</code>
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_30" >
<div class="md-nav__link md-nav__container">
<a href="tutorial/security/" class="md-nav__link ">
<span class="md-ellipsis">
Sicherheit
</span>
</a>
<label class="md-nav__link " for="__nav_3_6_30" id="__nav_3_6_30_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_30_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_30">
<span class="md-nav__icon md-icon"></span>
Sicherheit
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="tutorial/security/first-steps/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Sicherheit – Erste Schritte
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/security/get-current-user/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Aktuellen Benutzer abrufen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/security/simple-oauth2/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Einfaches OAuth2 mit Password und Bearer
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/security/oauth2-jwt/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OAuth2 mit Passwort (und Hashing), Bearer mit JWT-Tokens
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="tutorial/middleware/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Middleware
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/cors/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
CORS (Cross-Origin Resource Sharing)
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/sql-databases/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
SQL (Relationale) Datenbanken
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/bigger-applications/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Größere Anwendungen – mehrere Dateien
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/stream-json-lines/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
JSON Lines streamen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/server-sent-events/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Server-Sent Events (SSE)
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/background-tasks/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Hintergrundtasks
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/metadata/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Metadaten und Dokumentations-URLs
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/static-files/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Statische Dateien
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/testing/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Testen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="tutorial/debugging/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Debugging
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" >
<div class="md-nav__link md-nav__container">
<a href="advanced/" class="md-nav__link ">
<span class="md-ellipsis">
Handbuch für fortgeschrittene Benutzer
</span>
</a>
<label class="md-nav__link " for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7">
<span class="md-nav__icon md-icon"></span>
Handbuch für fortgeschrittene Benutzer
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="advanced/stream-data/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Daten streamen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/path-operation-advanced-configuration/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Fortgeschrittene Konfiguration der Pfadoperation
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/additional-status-codes/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusätzliche Statuscodes
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/response-directly/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Eine Response direkt zurückgeben
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/custom-response/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Benutzerdefinierte Response – HTML, Stream, Datei, andere
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/additional-responses/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusätzliche Responses in OpenAPI
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/response-cookies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Response-Cookies
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/response-headers/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Response-Header
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/response-change-status-code/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Response – Statuscode ändern
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/advanced-dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Fortgeschrittene Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_12" >
<div class="md-nav__link md-nav__container">
<a href="advanced/security/" class="md-nav__link ">
<span class="md-ellipsis">
Fortgeschrittene Sicherheit
</span>
</a>
<label class="md-nav__link " for="__nav_3_7_12" id="__nav_3_7_12_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_12">
<span class="md-nav__icon md-icon"></span>
Fortgeschrittene Sicherheit
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="advanced/security/oauth2-scopes/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OAuth2-Scopes
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/security/http-basic-auth/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
HTTP Basic Auth
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="advanced/using-request-directly/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Den Request direkt verwenden
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/dataclasses/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Datenklassen verwenden
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/middleware/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Fortgeschrittene Middleware
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/sub-applications/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Unteranwendungen – Mounts
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/behind-a-proxy/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Hinter einem Proxy
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/templates/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Templates
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/websockets/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
WebSockets
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/events/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Lifespan-Events
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/testing-websockets/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
WebSockets testen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/testing-events/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Events testen: Lifespan und Startup – Shutdown
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/testing-dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Testen mit Überschreibungen für Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/async-tests/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Asynchrone Tests
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/settings/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Einstellungen und Umgebungsvariablen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/openapi-callbacks/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OpenAPI-Callbacks
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/openapi-webhooks/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OpenAPI Webhooks
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/wsgi/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
WSGI inkludieren – Flask, Django und andere
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/generate-clients/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
SDKs generieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/advanced-python-types/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Fortgeschrittene Python-Typen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/json-base64-bytes/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
JSON mit Bytes als base64
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="advanced/strict-content-type/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Strikte Content-Type-Prüfung
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="fastapi-cli/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI CLI
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="editor-support/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Editor-Unterstützung
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_10" >
<div class="md-nav__link md-nav__container">
<a href="deployment/" class="md-nav__link ">
<span class="md-ellipsis">
Deployment
</span>
</a>
<label class="md-nav__link " for="__nav_3_10" id="__nav_3_10_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_10">
<span class="md-nav__icon md-icon"></span>
Deployment
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="deployment/versions/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Über FastAPI-Versionen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/fastapicloud/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI Cloud
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/https/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Über HTTPS
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/manually/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Einen Server manuell ausführen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/concepts/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Deployment-Konzepte
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/cloud/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI bei Cloudanbietern deployen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/server-workers/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Serverworker – Uvicorn mit Workern
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="deployment/docker/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI in Containern – Docker
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_11" >
<div class="md-nav__link md-nav__container">
<a href="how-to/" class="md-nav__link ">
<span class="md-ellipsis">
How-To – Rezepte
</span>
</a>
<label class="md-nav__link " for="__nav_3_11" id="__nav_3_11_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_11">
<span class="md-nav__icon md-icon"></span>
How-To – Rezepte
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="how-to/general/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Allgemeines – How-To – Rezepte
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/migrate-from-pydantic-v1-to-pydantic-v2/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Von Pydantic v1 zu Pydantic v2 migrieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/graphql/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
GraphQL
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/custom-request-and-route/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Benutzerdefinierte Request- und APIRoute-Klasse
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/conditional-openapi/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Bedingte OpenAPI
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/extending-openapi/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OpenAPI erweitern
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/separate-openapi-schemas/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Separate OpenAPI-Schemas für Eingabe und Ausgabe oder nicht
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/custom-docs-ui-assets/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Statische Assets der Dokumentationsoberfläche (Selbst-Hosting)
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/configure-swagger-ui/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Swagger-Oberfläche konfigurieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/testing-database/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Eine Datenbank testen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="how-to/authentication-error-status-code/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alte 403-Authentifizierungsfehler-Statuscodes verwenden
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<div class="md-nav__link md-nav__container">
<a href="reference/" class="md-nav__link ">
<span class="md-ellipsis">
Reference
</span>
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="reference/fastapi/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>FastAPI</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/parameters/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Request Parameters
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/status/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Status Codes
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/uploadfile/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>UploadFile</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/exceptions/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Exceptions - <code>HTTPException</code> and <code>WebSocketException</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/dependencies/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Dependencies - <code>Depends()</code> and <code>Security()</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/apirouter/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>APIRouter</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/background/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Background Tasks - <code>BackgroundTasks</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/request/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>Request</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/websockets/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
WebSockets
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/httpconnection/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>HTTPConnection</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/response/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>Response</code> class
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/responses/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Custom Response Classes - File, HTML, Redirect, Streaming, etc.
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/middleware/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Middleware
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_16" >
<div class="md-nav__link md-nav__container">
<a href="reference/openapi/" class="md-nav__link ">
<span class="md-ellipsis">
OpenAPI
</span>
</a>
<label class="md-nav__link " for="__nav_4_16" id="__nav_4_16_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_16">
<span class="md-nav__icon md-icon"></span>
OpenAPI
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="reference/openapi/docs/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OpenAPI <code>docs</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/openapi/models/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
OpenAPI <code>models</code>
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="reference/security/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Security Tools
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/encoders/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Encoders - <code>jsonable_encoder</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/staticfiles/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Static Files - <code>StaticFiles</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/templating/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Templating - <code>Jinja2Templates</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="reference/testclient/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Test Client - <code>TestClient</code>
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="fastapi-people/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI People
</span>
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<div class="md-nav__link md-nav__container">
<a href="resources/" class="md-nav__link ">
<span class="md-ellipsis">
Ressourcen
</span>
</a>
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Ressourcen
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="help-fastapi/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI helfen – Hilfe erhalten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="contributing/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Development - Contributing
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="project-generation/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Full Stack FastAPI Template
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="external-links/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
External Links
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="newsletter/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI and friends newsletter
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="management-tasks/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Repository Management Tasks
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__container">
<a href="about/" class="md-nav__link ">
<span class="md-ellipsis">
Über
</span>
</a>
<label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Über
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="alternatives/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alternativen, Inspiration und Vergleiche
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="history-design-future/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Geschichte, Design und Zukunft
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="benchmarks/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Benchmarks
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="management/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Repository Management
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="release-notes/" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Release Notes
</span>
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#sponsors" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Sponsoren
</span>
</span>
</a>
<nav class="md-nav" aria-label="Sponsoren">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#keystone-sponsor" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Keystone-Sponsor
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gold-and-silver-sponsors" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Gold- und Silber-Sponsoren
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#opinions" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Meinungen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#fastapi-mini-documentary" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
FastAPI Mini-Dokumentarfilm
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#typer-the-fastapi-of-clis" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<strong>Typer</strong>, das FastAPI der CLIs
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#requirements" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Anforderungen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#installation" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Installation
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Beispiel
</span>
</span>
</a>
<nav class="md-nav" aria-label="Beispiel">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Erstellung
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#run-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Starten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#check-it" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Es testen
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#interactive-api-docs" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Interaktive API-Dokumentation
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alternative-api-docs" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alternative API-Dokumentation
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#example-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Beispielaktualisierung
</span>
</span>
</a>
<nav class="md-nav" aria-label="Beispielaktualisierung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#interactive-api-docs-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Interaktive API-Dokumentation aktualisieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#alternative-api-docs-upgrade" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Alternative API-Dokumentation aktualisieren
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#recap" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusammenfassung
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deploy-your-app-optional" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ihre App deployen (optional)
</span>
</span>
</a>
<nav class="md-nav" aria-label="Ihre App deployen (optional)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#about-fastapi-cloud" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Über FastAPI Cloud
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#deploy-to-other-cloud-providers" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Bei anderen Cloudanbietern deployen
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#performance" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Performanz
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Abhängigkeiten
</span>
</span>
</a>
<nav class="md-nav" aria-label="Abhängigkeiten">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#standard-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
<code>standard</code>-Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#without-standard-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ohne <code>standard</code>-Abhängigkeiten
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#without-fastapi-cloud-cli" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Ohne <code>fastapi-cloud-cli</code>
</span>
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#additional-optional-dependencies" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Zusätzliche optionale Abhängigkeiten
</span>
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#license" class="md-nav__link">
<span class="md-ellipsis">
<span class="md-typeset">
Lizenz
</span>
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="fastapi">FastAPI<a class="headerlink" data-preview="" href="#fastapi" title="Permanent link">&para;</a></h1>
<details>
<summary>🌐 Übersetzung durch KI und Menschen</summary>
<p>Diese Übersetzung wurde von KI erstellt, angeleitet von Menschen. 🤝</p>
<p>Sie könnte Fehler enthalten, etwa Missverständnisse des ursprünglichen Sinns oder unnatürliche Formulierungen, usw. 🤖</p>
<p>Sie können diese Übersetzung verbessern, indem Sie <a href="https://fastapi.tiangolo.com/de/contributing/#translations">uns helfen, die KI-LLM besser anzuleiten</a>.</p>
<p><a href="https://fastapi.tiangolo.com/">Englische Version</a></p>
</details>
<style>
.md-content .md-typeset h1 { display: none; }
</style>
<p align="center">
<a href="https://fastapi.tiangolo.com/de"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="FastAPI"></a>
</p>
<p align="center">
<em>FastAPI-Framework, hohe Performanz, leicht zu lernen, schnell zu entwickeln, produktionsreif</em>
</p>
<p align="center">
<a href="https://github.com/fastapi/fastapi/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster">
<img src="https://github.com/fastapi/fastapi/actions/workflows/test.yml/badge.svg?event=push&branch=master" alt="Test">
</a>
<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/fastapi">
<img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Testabdeckung">
</a>
<a href="https://pypi.org/project/fastapi">
<img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package-Version">
</a>
<a href="https://pypi.org/project/fastapi">
<img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Unterstützte Python-Versionen">
</a>
</p>
<hr />
<p><strong>Dokumentation</strong>: <a href="https://fastapi.tiangolo.com/de">https://fastapi.tiangolo.com/de</a></p>
<p><strong>Quellcode</strong>: <a href="https://github.com/fastapi/fastapi">https://github.com/fastapi/fastapi</a></p>
<hr />
<p>FastAPI ist ein modernes, schnelles (hoch performantes) Webframework zur Erstellung von APIs mit Python auf Basis von Standard-Python-Typhinweisen.</p>
<p>Seine Schlüssel-Merkmale sind:</p>
<ul>
<li><strong>Schnell</strong>: Sehr hohe Performanz, auf Augenhöhe mit <strong>NodeJS</strong> und <strong>Go</strong> (dank Starlette und Pydantic). <a data-preview="" href="#performance">Eines der schnellsten verfügbaren Python-Frameworks</a>.</li>
<li><strong>Schnell zu entwickeln</strong>: Erhöhen Sie die Geschwindigkeit bei der Entwicklung von Features um etwa 200 % bis 300 %. *</li>
<li><strong>Weniger Bugs</strong>: Verringern Sie die von Menschen (Entwicklern) verursachten Fehler um etwa 40 %. *</li>
<li><strong>Intuitiv</strong>: Hervorragende Editor-Unterstützung. <dfn title="auch bekannt als Auto-Complete, Autovervollständigung, IntelliSense">Code-Vervollständigung</dfn> überall. Weniger Zeit mit Debuggen verbringen.</li>
<li><strong>Einfach</strong>: So konzipiert, dass es einfach zu benutzen und zu erlernen ist. Weniger Zeit mit dem Lesen von Dokumentation verbringen.</li>
<li><strong>Kurz</strong>: Minimieren Sie die Verdoppelung von Code. Mehrere Features aus jeder Parameterdeklaration. Weniger Bugs.</li>
<li><strong>Robust</strong>: Erhalten Sie produktionsreifen Code. Mit automatischer, interaktiver Dokumentation.</li>
<li><strong>Standards-basiert</strong>: Basierend auf (und vollständig kompatibel mit) den offenen Standards für APIs: <a href="https://github.com/OAI/OpenAPI-Specification">OpenAPI</a> (früher bekannt als Swagger) und <a href="https://json-schema.org/">JSON Schema</a>.</li>
</ul>
<p><small>* Schätzung basierend auf Tests, die von einem internen Entwicklungsteam durchgeführt wurden, das Produktionsanwendungen erstellt.</small></p>
<h2 id="sponsors">Sponsoren<a class="headerlink" data-preview="" href="#sponsors" title="Permanent link">&para;</a></h2>
<!-- sponsors -->
<h3 id="keystone-sponsor">Keystone-Sponsor<a class="headerlink" data-preview="" href="#keystone-sponsor" title="Permanent link">&para;</a></h3>
<p><a href="https://fastapicloud.com" title="FastAPI Cloud. By the same team behind FastAPI. You code. We Cloud."><img src="https://fastapi.tiangolo.com/img/sponsors/fastapicloud.png" style="border-radius:15px"></a></p>
<h3 id="gold-and-silver-sponsors">Gold- und Silber-Sponsoren<a class="headerlink" data-preview="" href="#gold-and-silver-sponsors" title="Permanent link">&para;</a></h3>
<p><a href="https://blockbee.io?ref=fastapi" title="BlockBee Cryptocurrency Payment Gateway"><img src="https://fastapi.tiangolo.com/img/sponsors/blockbee.png" style="border-radius:15px"></a>
<a href="https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=main-badge" title="Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files"><img src="https://fastapi.tiangolo.com/img/sponsors/scalar.svg" style="border-radius:15px"></a>
<a href="https://www.propelauth.com/?utm_source=fastapi&utm_campaign=1223&utm_medium=mainbadge" title="Auth, user management and more for your B2B product"><img src="https://fastapi.tiangolo.com/img/sponsors/propelauth.png" style="border-radius:15px"></a>
<a href="https://liblab.com?utm_source=fastapi" title="liblab - Generate SDKs from FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/liblab.png" style="border-radius:15px"></a>
<a href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" title="Deploy & scale any full-stack web app on Render. Focus on building apps, not infra."><img src="https://fastapi.tiangolo.com/img/sponsors/render.svg" style="border-radius:15px"></a>
<a href="https://www.coderabbit.ai/?utm_source=fastapi&utm_medium=badge&utm_campaign=fastapi" title="Cut Code Review Time & Bugs in Half with CodeRabbit"><img src="https://fastapi.tiangolo.com/img/sponsors/coderabbit.png" style="border-radius:15px"></a>
<a href="https://subtotal.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=open-source" title="The Gold Standard in Retail Account Linking"><img src="https://fastapi.tiangolo.com/img/sponsors/subtotal.svg" style="border-radius:15px"></a>
<a href="https://docs.railway.com/guides/fastapi?utm_medium=integration&utm_source=docs&utm_campaign=fastapi" title="Deploy enterprise applications at startup speed"><img src="https://fastapi.tiangolo.com/img/sponsors/railway.png" style="border-radius:15px"></a>
<a href="https://serpapi.com/?utm_source=fastapi_website" title="SerpApi: Web Search API"><img src="https://fastapi.tiangolo.com/img/sponsors/serpapi.png" style="border-radius:15px"></a>
<a href="https://www.greptile.com/?utm_source=fastapi&utm_medium=sponsorship&utm_campaign=fastapi_sponsor_page" title="Greptile: The AI Code Reviewer"><img src="https://fastapi.tiangolo.com/img/sponsors/greptile.png" style="border-radius:15px"></a>
<a href="https://databento.com/?utm_source=fastapi&utm_medium=sponsor&utm_content=display" title="Pay as you go for market data"><img src="https://fastapi.tiangolo.com/img/sponsors/databento.svg" style="border-radius:15px"></a>
<a href="https://www.svix.com/" title="Svix - Webhooks as a service"><img src="https://fastapi.tiangolo.com/img/sponsors/svix.svg" style="border-radius:15px"></a>
<a href="https://www.stainlessapi.com/?utm_source=fastapi&utm_medium=referral" title="Stainless | Generate best-in-class SDKs"><img src="https://fastapi.tiangolo.com/img/sponsors/stainless.png" style="border-radius:15px"></a>
<a href="https://www.permit.io/blog/implement-authorization-in-fastapi?utm_source=github&utm_medium=referral&utm_campaign=fastapi" title="Fine-Grained Authorization for FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/permit.png" style="border-radius:15px"></a>
<a href="https://www.interviewpal.com/?utm_source=fastapi&utm_medium=open-source&utm_campaign=dev-hiring" title="InterviewPal - AI Interview Coach for Engineers and Devs"><img src="https://fastapi.tiangolo.com/img/sponsors/interviewpal.png" style="border-radius:15px"></a>
<a href="https://dribia.com/en/" title="Dribia - Data Science within your reach"><img src="https://fastapi.tiangolo.com/img/sponsors/dribia.png" style="border-radius:15px"></a></p>
<!-- /sponsors -->
<p><a href="https://fastapi.tiangolo.com/de/fastapi-people/#sponsors">Andere Sponsoren</a></p>
<h2 id="opinions">Meinungen<a class="headerlink" data-preview="" href="#opinions" title="Permanent link">&para;</a></h2>
<p><em>[...] Ich verwende <strong>FastAPI</strong> heutzutage sehr oft. [...] Ich habe tatsächlich vor, es für alle <strong>ML-Services meines Teams bei Microsoft</strong> zu verwenden. Einige davon werden in das Kernprodukt <strong>Windows</strong> und einige <strong>Office</strong>-Produkte integriert.</em></p>
<div style="text-align: right; margin-right: 10%;">Kabir Khan – <strong>Microsoft</strong> <a href="https://github.com/fastapi/fastapi/pull/26"><small>(Ref.)</small></a></div>
<hr />
<p><em>Wir haben die <strong>FastAPI</strong>-Bibliothek übernommen, um einen <strong>REST</strong>-Server zu erstellen, der für <strong>Vorhersagen</strong> abgefragt werden kann. [für Ludwig]</em></p>
<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, und Sai Sumanth Miryala – <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/"><small>(Ref.)</small></a></div>
<hr />
<p><em><strong>Netflix</strong> freut sich, die Open-Source-Veröffentlichung unseres <strong>Krisenmanagement</strong>-Orchestrierung-Frameworks bekannt zu geben: <strong>Dispatch</strong>! [erstellt mit <strong>FastAPI</strong>]</em></p>
<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen – <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072"><small>(Ref.)</small></a></div>
<hr />
<p><em>Ich bin hellauf begeistert von <strong>FastAPI</strong>. Es macht so viel Spaß!</em></p>
<div style="text-align: right; margin-right: 10%;">Brian Okken – <strong>[Python Bytes](https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855) Podcast-Host</strong> <a href="https://x.com/brianokken/status/1112220079972728832"><small>(Ref.)</small></a></div>
<hr />
<p><em>Ehrlich, was Du gebaut hast, sieht super solide und poliert aus. In vielerlei Hinsicht ist es so, wie ich <strong>Hug</strong> haben wollte – es ist wirklich inspirierend, jemanden so etwas bauen zu sehen.</em></p>
<div style="text-align: right; margin-right: 10%;">Timothy Crosley – <strong>[Hug](https://github.com/hugapi/hug)-Autor</strong> <a href="https://news.ycombinator.com/item?id=19455465"><small>(Ref.)</small></a></div>
<hr />
<p><em>Wenn Sie ein <strong>modernes Framework</strong> zum Erstellen von REST-APIs erlernen möchten, schauen Sie sich <strong>FastAPI</strong> an. [...] Es ist schnell, einfach zu verwenden und leicht zu lernen [...]</em></p>
<p><em>Wir haben zu <strong>FastAPI</strong> für unsere <strong>APIs</strong> gewechselt [...] Ich denke, es wird Ihnen gefallen [...]</em></p>
<div style="text-align: right; margin-right: 10%;">Ines Montani – Matthew Honnibal – <strong>[Explosion AI](https://explosion.ai)-Gründer – [spaCy](https://spacy.io)-Autoren</strong> <a href="https://x.com/_inesmontani/status/1144173225322143744"><small>(Ref.)</small></a><a href="https://x.com/honnibal/status/1144031421859655680"><small>(Ref.)</small></a></div>
<hr />
<p><em>Falls irgendjemand eine Produktions-Python-API erstellen möchte, kann ich <strong>FastAPI</strong> wärmstens empfehlen. Es ist <strong>wunderschön konzipiert</strong>, <strong>einfach zu verwenden</strong> und <strong>hoch skalierbar</strong>; es ist zu einer <strong>Schlüsselkomponente</strong> unserer API-First-Entwicklungsstrategie geworden und treibt viele Automatisierungen und Services an, wie etwa unseren Virtual TAC Engineer.</em></p>
<div style="text-align: right; margin-right: 10%;">Deon Pillsbury – <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/"><small>(Ref.)</small></a></div>
<hr />
<h2 id="fastapi-mini-documentary">FastAPI Mini-Dokumentarfilm<a class="headerlink" data-preview="" href="#fastapi-mini-documentary" title="Permanent link">&para;</a></h2>
<p>Es gibt einen <a href="https://www.youtube.com/watch?v=mpR8ngthqiE">FastAPI-Mini-Dokumentarfilm</a>, veröffentlicht Ende 2025, Sie können ihn online ansehen:</p>
<p><a href="https://www.youtube.com/watch?v=mpR8ngthqiE"><img src="https://fastapi.tiangolo.com/img/fastapi-documentary.jpg" alt="FastAPI Mini-Dokumentarfilm"></a></p>
<h2 id="typer-the-fastapi-of-clis"><strong>Typer</strong>, das FastAPI der CLIs<a class="headerlink" data-preview="" href="#typer-the-fastapi-of-clis" title="Permanent link">&para;</a></h2>
<p><a href="https://typer.tiangolo.com"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a></p>
<p>Wenn Sie eine <abbr title="Command Line Interface - Kommandozeilen-Schnittstelle">CLI</abbr>-Anwendung für das Terminal erstellen, anstelle einer Web-API, schauen Sie sich <a href="https://typer.tiangolo.com/"><strong>Typer</strong></a> an.</p>
<p><strong>Typer</strong> ist die kleine Schwester von FastAPI. Und es soll das <strong>FastAPI der CLIs</strong> sein. ⌨️ 🚀</p>
<h2 id="requirements">Anforderungen<a class="headerlink" data-preview="" href="#requirements" title="Permanent link">&para;</a></h2>
<p>FastAPI steht auf den Schultern von Giganten:</p>
<ul>
<li><a href="https://www.starlette.dev/">Starlette</a> für die Webanteile.</li>
<li><a href="https://docs.pydantic.dev/">Pydantic</a> für die Datenanteile.</li>
</ul>
<h2 id="installation">Installation<a class="headerlink" data-preview="" href="#installation" title="Permanent link">&para;</a></h2>
<p>Erstellen und aktivieren Sie eine <a href="https://fastapi.tiangolo.com/de/virtual-environments/">virtuelle Umgebung</a> und installieren Sie dann FastAPI:</p>
<div class="termy">
<div class="highlight"><pre><span></span><code><span id="__span-0-1"><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">&quot;fastapi[standard]&quot;</span>
</span><span id="__span-0-2">
</span><span id="__span-0-3"><span class="go">---&gt; 100%</span>
</span></code></pre></div>
</div>
<p><strong>Hinweis</strong>: Stellen Sie sicher, dass Sie <code>"fastapi[standard]"</code> in Anführungszeichen setzen, damit es in allen Terminals funktioniert.</p>
<h2 id="example">Beispiel<a class="headerlink" data-preview="" href="#example" title="Permanent link">&para;</a></h2>
<h3 id="create-it">Erstellung<a class="headerlink" data-preview="" href="#create-it" title="Permanent link">&para;</a></h3>
<p>Erstellen Sie eine Datei <code>main.py</code> mit:</p>
<div class="highlight"><pre><span></span><code><span id="__span-1-1"><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
</span><span id="__span-1-2">
</span><span id="__span-1-3"><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
</span><span id="__span-1-4">
</span><span id="__span-1-5">
</span><span id="__span-1-6"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
</span><span id="__span-1-7"><span class="k">def</span><span class="w"> </span><span class="nf">read_root</span><span class="p">():</span>
</span><span id="__span-1-8"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;Hello&quot;</span><span class="p">:</span> <span class="s2">&quot;World&quot;</span><span class="p">}</span>
</span><span id="__span-1-9">
</span><span id="__span-1-10">
</span><span id="__span-1-11"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/items/</span><span class="si">{item_id}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="__span-1-12"><span class="k">def</span><span class="w"> </span><span class="nf">read_item</span><span class="p">(</span><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">q</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
</span><span id="__span-1-13"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;item_id&quot;</span><span class="p">:</span> <span class="n">item_id</span><span class="p">,</span> <span class="s2">&quot;q&quot;</span><span class="p">:</span> <span class="n">q</span><span class="p">}</span>
</span></code></pre></div>
<details>
<summary>Oder verwenden Sie <code>async def</code> ...</summary>
<p>Wenn Ihr Code <code>async</code> / <code>await</code> verwendet, benutzen Sie <code>async def</code>:</p>
<div class="highlight"><pre><span></span><code><span id="__span-2-1"><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
</span><span id="__span-2-2">
</span><span id="__span-2-3"><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
</span><span id="__span-2-4">
</span><span id="__span-2-5">
</span><span id="__span-2-6"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
</span><span id="__span-2-7"><span class="hll"><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">read_root</span><span class="p">():</span>
</span></span><span id="__span-2-8"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;Hello&quot;</span><span class="p">:</span> <span class="s2">&quot;World&quot;</span><span class="p">}</span>
</span><span id="__span-2-9">
</span><span id="__span-2-10">
</span><span id="__span-2-11"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/items/</span><span class="si">{item_id}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="__span-2-12"><span class="hll"><span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">read_item</span><span class="p">(</span><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">q</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
</span></span><span id="__span-2-13"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;item_id&quot;</span><span class="p">:</span> <span class="n">item_id</span><span class="p">,</span> <span class="s2">&quot;q&quot;</span><span class="p">:</span> <span class="n">q</span><span class="p">}</span>
</span></code></pre></div>
<p><strong>Hinweis</strong>:</p>
<p>Wenn Sie das nicht kennen, schauen Sie sich den Abschnitt <em>„In Eile?“</em> über <a href="https://fastapi.tiangolo.com/de/async/#in-a-hurry"><code>async</code> und <code>await</code> in der Dokumentation</a> an.</p>
</details>
<h3 id="run-it">Starten<a class="headerlink" data-preview="" href="#run-it" title="Permanent link">&para;</a></h3>
<p>Starten Sie den Server mit:</p>
<div class="termy">
<div class="highlight"><pre><span></span><code><span id="__span-3-1"><span class="gp">$ </span>fastapi<span class="w"> </span>dev
</span><span id="__span-3-2">
</span><span id="__span-3-3"><span class="go"> ╭────────── FastAPI CLI - Development mode ───────────╮</span>
</span><span id="__span-3-4"><span class="go"> │ │</span>
</span><span id="__span-3-5"><span class="go"> │ Serving at: http://127.0.0.1:8000 │</span>
</span><span id="__span-3-6"><span class="go"> │ │</span>
</span><span id="__span-3-7"><span class="go"> │ API docs: http://127.0.0.1:8000/docs │</span>
</span><span id="__span-3-8"><span class="go"> │ │</span>
</span><span id="__span-3-9"><span class="go"> │ Running in development mode, for production use: │</span>
</span><span id="__span-3-10"><span class="go"> │ │</span>
</span><span id="__span-3-11"><span class="go"> │ fastapi run │</span>
</span><span id="__span-3-12"><span class="go"> │ │</span>
</span><span id="__span-3-13"><span class="go"> ╰─────────────────────────────────────────────────────╯</span>
</span><span id="__span-3-14">
</span><span id="__span-3-15"><span class="go">INFO: Will watch for changes in these directories: [&#39;/home/user/code/awesomeapp&#39;]</span>
</span><span id="__span-3-16"><span class="go">INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)</span>
</span><span id="__span-3-17"><span class="go">INFO: Started reloader process [2248755] using WatchFiles</span>
</span><span id="__span-3-18"><span class="go">INFO: Started server process [2248757]</span>
</span><span id="__span-3-19"><span class="go">INFO: Waiting for application startup.</span>
</span><span id="__span-3-20"><span class="go">INFO: Application startup complete.</span>
</span></code></pre></div>
</div>
<details>
<summary>Über den Befehl <code>fastapi dev</code> ...</summary>
<p>Der Befehl <code>fastapi dev</code> liest Ihre <code>main.py</code>-Datei, erkennt die <strong>FastAPI</strong>-App darin und startet einen Server mit <a href="https://www.uvicorn.dev">Uvicorn</a>.</p>
<p>Standardmäßig wird <code>fastapi dev</code> mit aktiviertem Auto-Reload für die lokale Entwicklung gestartet.</p>
<p>Sie können mehr darüber in der <a href="https://fastapi.tiangolo.com/de/fastapi-cli/">FastAPI CLI Dokumentation</a> lesen.</p>
</details>
<h3 id="check-it">Es testen<a class="headerlink" data-preview="" href="#check-it" title="Permanent link">&para;</a></h3>
<p>Öffnen Sie Ihren Browser unter <a href="http://127.0.0.1:8000/items/5?q=somequery">http://127.0.0.1:8000/items/5?q=somequery</a>.</p>
<p>Sie sehen die JSON-<abbr title="Response - Antwort: Daten, die der Server zum anfragenden Client zurücksendet">Response</abbr> als:</p>
<div class="highlight"><pre><span></span><code><span id="__span-4-1"><span class="p">{</span><span class="nt">&quot;item_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;q&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;somequery&quot;</span><span class="p">}</span>
</span></code></pre></div>
<p>Sie haben bereits eine API erstellt, welche:</p>
<ul>
<li>HTTP-<abbr title="Request - Anfrage: Daten, die der Client zum Server sendet">Requests</abbr> auf den <em>Pfaden</em> <code>/</code> und <code>/items/{item_id}</code> entgegennimmt.</li>
<li>Beide <em>Pfade</em> nehmen <code>GET</code> <em>Operationen</em> (auch bekannt als HTTP-<em>Methoden</em>) entgegen.</li>
<li>Der <em>Pfad</em> <code>/items/{item_id}</code> hat einen <em>Pfad-Parameter</em> <code>item_id</code>, der ein <code>int</code> sein sollte.</li>
<li>Der <em>Pfad</em> <code>/items/{item_id}</code> hat einen optionalen <code>str</code>-<em>Query-Parameter</em> <code>q</code>.</li>
</ul>
<h3 id="interactive-api-docs">Interaktive API-Dokumentation<a class="headerlink" data-preview="" href="#interactive-api-docs" title="Permanent link">&para;</a></h3>
<p>Gehen Sie nun auf <a href="http://127.0.0.1:8000/docs">http://127.0.0.1:8000/docs</a>.</p>
<p>Sie sehen die automatische interaktive API-Dokumentation (bereitgestellt von <a href="https://github.com/swagger-api/swagger-ui">Swagger UI</a>):</p>
<p><img alt="Swagger UI" src="https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png" /></p>
<h3 id="alternative-api-docs">Alternative API-Dokumentation<a class="headerlink" data-preview="" href="#alternative-api-docs" title="Permanent link">&para;</a></h3>
<p>Und jetzt gehen Sie auf <a href="http://127.0.0.1:8000/redoc">http://127.0.0.1:8000/redoc</a>.</p>
<p>Sie sehen die alternative automatische Dokumentation (bereitgestellt von <a href="https://github.com/Rebilly/ReDoc">ReDoc</a>):</p>
<p><img alt="ReDoc" src="https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png" /></p>
<h2 id="example-upgrade">Beispielaktualisierung<a class="headerlink" data-preview="" href="#example-upgrade" title="Permanent link">&para;</a></h2>
<p>Ändern Sie jetzt die Datei <code>main.py</code>, um den <abbr title="Body - Körper, Inhalt: Der eigentliche Inhalt einer Nachricht, nicht die Metadaten">Body</abbr> eines <code>PUT</code>-Requests zu empfangen.</p>
<p>Deklarieren Sie den Body mit Standard-Python-Typen, dank Pydantic.</p>
<div class="highlight"><pre><span></span><code><span id="__span-5-1"><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">FastAPI</span>
</span><span id="__span-5-2"><span class="hll"><span class="kn">from</span><span class="w"> </span><span class="nn">pydantic</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span>
</span></span><span id="__span-5-3">
</span><span id="__span-5-4"><span class="n">app</span> <span class="o">=</span> <span class="n">FastAPI</span><span class="p">()</span>
</span><span id="__span-5-5">
</span><span id="__span-5-6">
</span><span id="__span-5-7"><span class="hll"><span class="k">class</span><span class="w"> </span><span class="nc">Item</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
</span></span><span id="__span-5-8"><span class="hll"> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
</span></span><span id="__span-5-9"><span class="hll"> <span class="n">price</span><span class="p">:</span> <span class="nb">float</span>
</span></span><span id="__span-5-10"><span class="hll"> <span class="n">is_offer</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
</span></span><span id="__span-5-11">
</span><span id="__span-5-12">
</span><span id="__span-5-13"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)</span>
</span><span id="__span-5-14"><span class="k">def</span><span class="w"> </span><span class="nf">read_root</span><span class="p">():</span>
</span><span id="__span-5-15"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;Hello&quot;</span><span class="p">:</span> <span class="s2">&quot;World&quot;</span><span class="p">}</span>
</span><span id="__span-5-16">
</span><span id="__span-5-17">
</span><span id="__span-5-18"><span class="nd">@app</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;/items/</span><span class="si">{item_id}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="__span-5-19"><span class="k">def</span><span class="w"> </span><span class="nf">read_item</span><span class="p">(</span><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">q</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
</span><span id="__span-5-20"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;item_id&quot;</span><span class="p">:</span> <span class="n">item_id</span><span class="p">,</span> <span class="s2">&quot;q&quot;</span><span class="p">:</span> <span class="n">q</span><span class="p">}</span>
</span><span id="__span-5-21">
</span><span id="__span-5-22">
</span><span id="__span-5-23"><span class="hll"><span class="nd">@app</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="s2">&quot;/items/</span><span class="si">{item_id}</span><span class="s2">&quot;</span><span class="p">)</span>
</span></span><span id="__span-5-24"><span class="hll"><span class="k">def</span><span class="w"> </span><span class="nf">update_item</span><span class="p">(</span><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">item</span><span class="p">:</span> <span class="n">Item</span><span class="p">):</span>
</span></span><span id="__span-5-25"><span class="hll"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;item_name&quot;</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s2">&quot;item_id&quot;</span><span class="p">:</span> <span class="n">item_id</span><span class="p">}</span>
</span></span></code></pre></div>
<p>Der <code>fastapi dev</code>-Server sollte automatisch neu laden.</p>
<h3 id="interactive-api-docs-upgrade">Interaktive API-Dokumentation aktualisieren<a class="headerlink" data-preview="" href="#interactive-api-docs-upgrade" title="Permanent link">&para;</a></h3>
<p>Gehen Sie jetzt auf <a href="http://127.0.0.1:8000/docs">http://127.0.0.1:8000/docs</a>.</p>
<ul>
<li>Die interaktive API-Dokumentation wird automatisch aktualisiert, einschließlich des neuen Bodys:</li>
</ul>
<p><img alt="Swagger UI" src="https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png" /></p>
<ul>
<li>Klicken Sie auf den Button „Try it out“, damit können Sie die Parameter ausfüllen und direkt mit der API interagieren:</li>
</ul>
<p><img alt="Swagger UI Interaktion" src="https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png" /></p>
<ul>
<li>Klicken Sie dann auf den Button „Execute“, die Benutzeroberfläche wird mit Ihrer API kommunizieren, die Parameter senden, die Ergebnisse erhalten und sie auf dem Bildschirm anzeigen:</li>
</ul>
<p><img alt="Swagger UI Interaktion" src="https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png" /></p>
<h3 id="alternative-api-docs-upgrade">Alternative API-Dokumentation aktualisieren<a class="headerlink" data-preview="" href="#alternative-api-docs-upgrade" title="Permanent link">&para;</a></h3>
<p>Und jetzt gehen Sie auf <a href="http://127.0.0.1:8000/redoc">http://127.0.0.1:8000/redoc</a>.</p>
<ul>
<li>Die alternative Dokumentation wird ebenfalls den neuen Query-Parameter und Body widerspiegeln:</li>
</ul>
<p><img alt="ReDoc" src="https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png" /></p>
<h3 id="recap">Zusammenfassung<a class="headerlink" data-preview="" href="#recap" title="Permanent link">&para;</a></h3>
<p>Zusammengefasst deklarieren Sie <strong>einmal</strong> die Typen von Parametern, Body, usw. als Funktionsparameter.</p>
<p>Das machen Sie mit modernen Standard-Python-Typen.</p>
<p>Sie müssen keine neue Syntax, Methoden oder Klassen einer bestimmten Bibliothek usw. lernen.</p>
<p>Nur Standard-<strong>Python</strong>.</p>
<p>Zum Beispiel für ein <code>int</code>:</p>
<div class="highlight"><pre><span></span><code><span id="__span-6-1"><span class="n">item_id</span><span class="p">:</span> <span class="nb">int</span>
</span></code></pre></div>
<p>oder für ein komplexeres <code>Item</code>-Modell:</p>
<div class="highlight"><pre><span></span><code><span id="__span-7-1"><span class="n">item</span><span class="p">:</span> <span class="n">Item</span>
</span></code></pre></div>
<p>... und mit dieser einen Deklaration erhalten Sie:</p>
<ul>
<li>Editor-Unterstützung, einschließlich:<ul>
<li>Vervollständigung.</li>
<li>Typprüfungen.</li>
</ul>
</li>
<li>Validierung von Daten:<ul>
<li>Automatische und eindeutige Fehler, wenn die Daten ungültig sind.</li>
<li>Validierung sogar für tief verschachtelte JSON-Objekte.</li>
</ul>
</li>
<li><dfn title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</dfn> von Eingabedaten: Aus dem Netzwerk kommend, zu Python-Daten und -Typen. Lesen von:<ul>
<li>JSON.</li>
<li>Pfad-Parametern.</li>
<li>Query-Parametern.</li>
<li>Cookies.</li>
<li>Headern.</li>
<li>Formularen.</li>
<li>Dateien.</li>
</ul>
</li>
<li><dfn title="auch bekannt als: Serialisierung, Parsen, Marshalling">Konvertierung</dfn> von Ausgabedaten: Konvertierung von Python-Daten und -Typen zu Netzwerkdaten (als JSON):<ul>
<li>Konvertieren von Python-Typen (<code>str</code>, <code>int</code>, <code>float</code>, <code>bool</code>, <code>list</code>, usw.).</li>
<li><code>datetime</code>-Objekte.</li>
<li><code>UUID</code>-Objekte.</li>
<li>Datenbankmodelle.</li>
<li>... und viele mehr.</li>
</ul>
</li>
<li>Automatische interaktive API-Dokumentation, einschließlich zwei alternativer Benutzeroberflächen:<ul>
<li>Swagger UI.</li>
<li>ReDoc.</li>
</ul>
</li>
</ul>
<hr />
<p>Um auf das vorherige Codebeispiel zurückzukommen, <strong>FastAPI</strong> wird:</p>
<ul>
<li>Validieren, dass es eine <code>item_id</code> im Pfad für <code>GET</code>- und <code>PUT</code>-Requests gibt.</li>
<li>Validieren, ob die <code>item_id</code> vom Typ <code>int</code> für <code>GET</code>- und <code>PUT</code>-Requests ist.<ul>
<li>Falls nicht, sieht der Client einen hilfreichen, klaren Fehler.</li>
</ul>
</li>
<li>Prüfen, ob es einen optionalen Query-Parameter namens <code>q</code> (wie in <code>http://127.0.0.1:8000/items/foo?q=somequery</code>) für <code>GET</code>-Requests gibt.<ul>
<li>Da der <code>q</code>-Parameter mit <code>= None</code> deklariert ist, ist er optional.</li>
<li>Ohne das <code>None</code> wäre er erforderlich (wie der Body im Fall von <code>PUT</code>).</li>
</ul>
</li>
<li>Bei <code>PUT</code>-Requests an <code>/items/{item_id}</code> den Body als JSON lesen:<ul>
<li>Prüfen, ob er ein erforderliches Attribut <code>name</code> hat, das ein <code>str</code> sein muss.</li>
<li>Prüfen, ob er ein erforderliches Attribut <code>price</code> hat, das ein <code>float</code> sein muss.</li>
<li>Prüfen, ob er ein optionales Attribut <code>is_offer</code> hat, das ein <code>bool</code> sein muss, falls vorhanden.</li>
<li>All dies würde auch für tief verschachtelte JSON-Objekte funktionieren.</li>
</ul>
</li>
<li>Automatisch von und nach JSON konvertieren.</li>
<li>Alles mit OpenAPI dokumentieren, welches verwendet werden kann von:<ul>
<li>Interaktiven Dokumentationssystemen.</li>
<li>Automatisch Client-Code generierenden Systemen für viele Sprachen.</li>
</ul>
</li>
<li>Zwei interaktive Dokumentations-Weboberflächen direkt bereitstellen.</li>
</ul>
<hr />
<p>Wir haben nur an der Oberfläche gekratzt, aber Sie bekommen schon eine Vorstellung davon, wie das Ganze funktioniert.</p>
<p>Versuchen Sie, diese Zeile zu ändern:</p>
<div class="highlight"><pre><span></span><code><span id="__span-8-1"> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;item_name&quot;</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s2">&quot;item_id&quot;</span><span class="p">:</span> <span class="n">item_id</span><span class="p">}</span>
</span></code></pre></div>
<p>... von:</p>
<div class="highlight"><pre><span></span><code><span id="__span-9-1"> <span class="o">...</span> <span class="s2">&quot;item_name&quot;</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">name</span> <span class="o">...</span>
</span></code></pre></div>
<p>... zu:</p>
<div class="highlight"><pre><span></span><code><span id="__span-10-1"> <span class="o">...</span> <span class="s2">&quot;item_price&quot;</span><span class="p">:</span> <span class="n">item</span><span class="o">.</span><span class="n">price</span> <span class="o">...</span>
</span></code></pre></div>
<p>... und sehen Sie, wie Ihr Editor die Attribute automatisch vervollständigt und ihre Typen kennt:</p>
<p><img alt="Editor Unterstützung" src="https://fastapi.tiangolo.com/img/vscode-completion.png" /></p>
<p>Für ein vollständigeres Beispiel, mit weiteren Funktionen, siehe das <a href="https://fastapi.tiangolo.com/de/tutorial/">Tutorial – Benutzerhandbuch</a>.</p>
<p><strong>Spoiler-Alarm</strong>: Das Tutorial – Benutzerhandbuch enthält:</p>
<ul>
<li>Deklaration von <strong>Parametern</strong> von anderen verschiedenen Stellen wie: <strong>Header</strong>, <strong>Cookies</strong>, <strong>Formularfelder</strong> und <strong>Dateien</strong>.</li>
<li>Wie man <strong>Validierungs-Constraints</strong> wie <code>maximum_length</code> oder <code>regex</code> setzt.</li>
<li>Ein sehr leistungsfähiges und einfach zu bedienendes System für <strong><dfn title="auch bekannt als Komponenten, Ressourcen, Provider, Services, Injectables">Dependency Injection</dfn></strong>.</li>
<li>Sicherheit und Authentifizierung, einschließlich Unterstützung für <strong>OAuth2</strong> mit <strong>JWT-Tokens</strong> und <strong>HTTP Basic</strong> Authentifizierung.</li>
<li>Fortgeschrittenere (aber ebenso einfache) Techniken zur Deklaration <strong>tief verschachtelter JSON-Modelle</strong> (dank Pydantic).</li>
<li><strong>GraphQL</strong>-Integration mit <a href="https://strawberry.rocks">Strawberry</a> und anderen Bibliotheken.</li>
<li>Viele zusätzliche Features (dank Starlette) wie:<ul>
<li><strong>WebSockets</strong></li>
<li>extrem einfache Tests auf Basis von HTTPX und <code>pytest</code></li>
<li><strong>CORS</strong></li>
<li><strong>Cookie-Sessions</strong></li>
<li>... und mehr.</li>
</ul>
</li>
</ul>
<h3 id="deploy-your-app-optional">Ihre App deployen (optional)<a class="headerlink" data-preview="" href="#deploy-your-app-optional" title="Permanent link">&para;</a></h3>
<p>Optional können Sie Ihre FastAPI-App in die <a href="https://fastapicloud.com">FastAPI Cloud</a> deployen, gehen Sie und treten Sie der Warteliste bei, falls noch nicht geschehen. 🚀</p>
<p>Wenn Sie bereits ein <strong>FastAPI Cloud</strong>-Konto haben (wir haben Sie von der Warteliste eingeladen 😉), können Sie Ihre Anwendung mit einem einzigen Befehl deployen.</p>
<div class="termy">
<div class="highlight"><pre><span></span><code><span id="__span-11-1"><span class="gp">$ </span>fastapi<span class="w"> </span>deploy
</span><span id="__span-11-2">
</span><span id="__span-11-3"><span class="go">Deploying to FastAPI Cloud...</span>
</span><span id="__span-11-4">
</span><span id="__span-11-5"><span class="go">✅ Deployment successful!</span>
</span><span id="__span-11-6">
</span><span id="__span-11-7"><span class="go">🐔 Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev</span>
</span></code></pre></div>
</div>
<p>Das war’s! Jetzt können Sie unter dieser URL auf Ihre App zugreifen. ✨</p>
<h4 id="about-fastapi-cloud">Über FastAPI Cloud<a class="headerlink" data-preview="" href="#about-fastapi-cloud" title="Permanent link">&para;</a></h4>
<p><strong><a href="https://fastapicloud.com">FastAPI Cloud</a></strong> wird vom selben Autor und Team hinter <strong>FastAPI</strong> entwickelt.</p>
<p>Es vereinfacht den Prozess des <strong>Erstellens</strong>, <strong>Deployens</strong> und <strong>Zugreifens</strong> auf eine API mit minimalem Aufwand.</p>
<p>Es bringt die gleiche <strong>Developer-Experience</strong> beim Erstellen von Apps mit FastAPI auch zum <strong>Deployment</strong> in der Cloud. 🎉</p>
<p>FastAPI Cloud ist der Hauptsponsor und Finanzierer der <em>FastAPI and friends</em> Open-Source-Projekte. ✨</p>
<h4 id="deploy-to-other-cloud-providers">Bei anderen Cloudanbietern deployen<a class="headerlink" data-preview="" href="#deploy-to-other-cloud-providers" title="Permanent link">&para;</a></h4>
<p>FastAPI ist Open Source und basiert auf Standards. Sie können FastAPI-Apps bei jedem Cloudanbieter Ihrer Wahl deployen.</p>
<p>Folgen Sie den Anleitungen Ihres Cloudanbieters, um FastAPI-Apps dort bereitzustellen. 🤓</p>
<h2 id="performance">Performanz<a class="headerlink" data-preview="" href="#performance" title="Permanent link">&para;</a></h2>
<p>Unabhängige TechEmpower-Benchmarks zeigen <strong>FastAPI</strong>-Anwendungen, die unter Uvicorn laufen, als <a href="https://www.techempower.com/benchmarks/#section=test&amp;runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&amp;hw=ph&amp;test=query&amp;l=zijzen-7">eines der schnellsten verfügbaren Python-Frameworks</a>, nur hinter Starlette und Uvicorn selbst (intern von FastAPI verwendet). (*)</p>
<p>Um mehr darüber zu erfahren, siehe den Abschnitt <a href="https://fastapi.tiangolo.com/de/benchmarks/">Benchmarks</a>.</p>
<h2 id="dependencies">Abhängigkeiten<a class="headerlink" data-preview="" href="#dependencies" title="Permanent link">&para;</a></h2>
<p>FastAPI hängt von Pydantic und Starlette ab.</p>
<h3 id="standard-dependencies"><code>standard</code>-Abhängigkeiten<a class="headerlink" data-preview="" href="#standard-dependencies" title="Permanent link">&para;</a></h3>
<p>Wenn Sie FastAPI mit <code>pip install "fastapi[standard]"</code> installieren, kommt es mit der <code>standard</code>-Gruppe optionaler Abhängigkeiten:</p>
<p>Verwendet von Pydantic:</p>
<ul>
<li><a href="https://github.com/JoshData/python-email-validator"><code>email-validator</code></a> – für E-Mail-Validierung.</li>
</ul>
<p>Verwendet von Starlette:</p>
<ul>
<li><a href="https://www.python-httpx.org"><code>httpx</code></a> – erforderlich, wenn Sie den <code>TestClient</code> verwenden möchten.</li>
<li><a href="https://jinja.palletsprojects.com"><code>jinja2</code></a> – erforderlich, wenn Sie die Default-Template-Konfiguration verwenden möchten.</li>
<li><a href="https://github.com/Kludex/python-multipart"><code>python-multipart</code></a> – erforderlich, wenn Sie Formulare mittels <code>request.form()</code> <dfn title="Konvertieren des Strings, der aus einem HTTP-Request stammt, nach Python-Daten">„parsen“</dfn> möchten.</li>
</ul>
<p>Verwendet von FastAPI:</p>
<ul>
<li><a href="https://www.uvicorn.dev"><code>uvicorn</code></a> – für den Server, der Ihre Anwendung lädt und bereitstellt. Dies umfasst <code>uvicorn[standard]</code>, das einige Abhängigkeiten (z. B. <code>uvloop</code>) beinhaltet, die für eine Bereitstellung mit hoher Performanz benötigt werden.</li>
<li><code>fastapi-cli[standard]</code> – um den <code>fastapi</code>-Befehl bereitzustellen.<ul>
<li>Dies beinhaltet <code>fastapi-cloud-cli</code>, das es Ihnen ermöglicht, Ihre FastAPI-Anwendung auf <a href="https://fastapicloud.com">FastAPI Cloud</a> bereitzustellen.</li>
</ul>
</li>
</ul>
<h3 id="without-standard-dependencies">Ohne <code>standard</code>-Abhängigkeiten<a class="headerlink" data-preview="" href="#without-standard-dependencies" title="Permanent link">&para;</a></h3>
<p>Wenn Sie die <code>standard</code> optionalen Abhängigkeiten nicht einschließen möchten, können Sie mit <code>pip install fastapi</code> statt <code>pip install "fastapi[standard]"</code> installieren.</p>
<h3 id="without-fastapi-cloud-cli">Ohne <code>fastapi-cloud-cli</code><a class="headerlink" data-preview="" href="#without-fastapi-cloud-cli" title="Permanent link">&para;</a></h3>
<p>Wenn Sie FastAPI mit den Standardabhängigkeiten, aber ohne das <code>fastapi-cloud-cli</code> installieren möchten, können Sie mit <code>pip install "fastapi[standard-no-fastapi-cloud-cli]"</code> installieren.</p>
<h3 id="additional-optional-dependencies">Zusätzliche optionale Abhängigkeiten<a class="headerlink" data-preview="" href="#additional-optional-dependencies" title="Permanent link">&para;</a></h3>
<p>Es gibt einige zusätzliche Abhängigkeiten, die Sie installieren möchten.</p>
<p>Zusätzliche optionale Pydantic-Abhängigkeiten:</p>
<ul>
<li><a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/"><code>pydantic-settings</code></a> – für die Verwaltung von Einstellungen.</li>
<li><a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/"><code>pydantic-extra-types</code></a> – für zusätzliche Typen zur Verwendung mit Pydantic.</li>
</ul>
<p>Zusätzliche optionale FastAPI-Abhängigkeiten:</p>
<ul>
<li><a href="https://github.com/ijl/orjson"><code>orjson</code></a> – erforderlich, wenn Sie <code>ORJSONResponse</code> verwenden möchten.</li>
<li><a href="https://github.com/esnme/ultrajson"><code>ujson</code></a> – erforderlich, wenn Sie <code>UJSONResponse</code> verwenden möchten.</li>
</ul>
<h2 id="license">Lizenz<a class="headerlink" data-preview="" href="#license" title="Permanent link">&para;</a></h2>
<p>Dieses Projekt ist unter den Bedingungen der MIT-Lizenz lizenziert.</p>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Zurück zum Seitenanfang
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Fußzeile" >
<a href="features/" class="md-footer__link md-footer__link--next" aria-label="Weiter: Merkmale">
<div class="md-footer__title">
<span class="md-footer__direction">
Weiter
</span>
<div class="md-ellipsis">
Merkmale
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
The FastAPI trademark is owned by <a href="https://tiangolo.com" target="_blank">@tiangolo</a> and is registered in the US and across other regions
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/fastapi/fastapi" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M202.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1M496 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2m-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3m-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1"/></svg>
</a>
<a href="https://discord.gg/VQjSZaeJmf" target="_blank" rel="noopener" title="discord.gg" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M492.5 69.8c-.2-.3-.4-.6-.8-.7-38.1-17.5-78.4-30-119.7-37.1-.4-.1-.8 0-1.1.1s-.6.4-.8.8c-5.5 9.9-10.5 20.2-14.9 30.6-44.6-6.8-89.9-6.8-134.4 0-4.5-10.5-9.5-20.7-15.1-30.6-.2-.3-.5-.6-.8-.8s-.7-.2-1.1-.2C162.5 39 122.2 51.5 84.1 69c-.3.1-.6.4-.8.7C7.1 183.5-13.8 294.6-3.6 404.2c0 .3.1.5.2.8s.3.4.5.6c44.4 32.9 94 58 146.8 74.2.4.1.8.1 1.1 0s.7-.4.9-.7c11.3-15.4 21.4-31.8 30-48.8.1-.2.2-.5.2-.8s0-.5-.1-.8-.2-.5-.4-.6-.4-.3-.7-.4c-15.8-6.1-31.2-13.4-45.9-21.9-.3-.2-.5-.4-.7-.6s-.3-.6-.3-.9 0-.6.2-.9.3-.5.6-.7c3.1-2.3 6.2-4.7 9.1-7.1.3-.2.6-.4.9-.4s.7 0 1 .1c96.2 43.9 200.4 43.9 295.5 0 .3-.1.7-.2 1-.2s.7.2.9.4c2.9 2.4 6 4.9 9.1 7.2.2.2.4.4.6.7s.2.6.2.9-.1.6-.3.9-.4.5-.6.6c-14.7 8.6-30 15.9-45.9 21.8-.2.1-.5.2-.7.4s-.3.4-.4.7-.1.5-.1.8.1.5.2.8c8.8 17 18.8 33.3 30 48.8.2.3.6.6.9.7s.8.1 1.1 0c52.9-16.2 102.6-41.3 147.1-74.2.2-.2.4-.4.5-.6s.2-.5.2-.8c12.3-126.8-20.5-236.9-86.9-334.5zm-302 267.7c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.4 59.2-52.8 59.2m195.4 0c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.2 59.2-52.8 59.2"/></svg>
</a>
<a href="https://x.com/fastapi" target="_blank" rel="noopener" title="x.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5.3 9.1.3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53C87.4 130.8 165 172.4 252.1 176.9c-1.6-7.8-2.6-15.9-2.6-24C249.5 95.1 296.3 48 354.4 48c30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3"/></svg>
</a>
<a href="https://www.linkedin.com/company/fastapi" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77m282.1 320h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
</a>
<a href="https://tiangolo.com" target="_blank" rel="noopener" title="tiangolo.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M351.9 280H161c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zm-191-48h190.9c-2.8-64.5-17.1-123.9-37.4-167.4-11.4-24.4-23.7-41.8-35.1-52.4C268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4m-48 0c3.5-85.6 25.6-165.1 57.9-217.3C78.7 47.3 10.9 131.2 1.5 232zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3zm111.4-48C501.9 131.2 434.1 47.3 342 14.7c32.3 52.2 54.4 131.7 57.9 217.3z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"annotate": null, "base": ".", "features": ["content.code.annotate", "content.code.copy", "content.footnote.tooltips", "content.tabs.link", "content.tooltips", "navigation.footer", "navigation.indexes", "navigation.instant", "navigation.instant.prefetch", "navigation.instant.progress", "navigation.path", "navigation.tabs", "navigation.tabs.sticky", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": null}</script>
<script src="assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="js/termynal.js"></script>
<script src="js/custom.js"></script>
<script src="js/init_kapa_widget.js"></script>
<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "83c63961621f43319d43d493c35d7611"}'></script><!-- Cloudflare Pages Analytics --></body>
</html>