Spaces:
Paused
Paused
| <html lang="en" 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/benchmarks/"> | |
| <link rel="prev" href="../history-design-future/"> | |
| <link rel="next" href="../management/"> | |
| <link rel="alternate" href="/" hreflang="en"> | |
| <link rel="alternate" href="/de/" hreflang="en"> | |
| <link rel="alternate" href="/es/" hreflang="en"> | |
| <link rel="alternate" href="/fr/" hreflang="en"> | |
| <link rel="alternate" href="/ja/" hreflang="en"> | |
| <link rel="alternate" href="/ko/" hreflang="en"> | |
| <link rel="alternate" href="/pt/" hreflang="en"> | |
| <link rel="alternate" href="/ru/" hreflang="en"> | |
| <link rel="alternate" href="/tr/" hreflang="en"> | |
| <link rel="alternate" href="/uk/" hreflang="en"> | |
| <link rel="alternate" href="/zh/" hreflang="en"> | |
| <link rel="alternate" href="/zh-hant/" hreflang="en"> | |
| <link rel="icon" href="../img/favicon.png"> | |
| <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1"> | |
| <title>Benchmarks - 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="Benchmarks - 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/assets/images/social/benchmarks.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/benchmarks/" /> | |
| <meta property="twitter:card" content="summary_large_image" /> | |
| <meta property="twitter:title" content="Benchmarks - 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/assets/images/social/benchmarks.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="#benchmarks" class="md-skip"> | |
| Skip to content | |
| </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="Header"> | |
| <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"> | |
| Benchmarks | |
| </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="Select language"> | |
| <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="Search" placeholder="Search" 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="Search"> | |
| <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" 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="Clear" aria-label="Clear" 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"> | |
| Initializing search | |
| </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="Go to 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="Tabs" data-md-component="tabs"> | |
| <div class="md-grid"> | |
| <ul class="md-tabs__list"> | |
| <li class="md-tabs__item"> | |
| <a href=".." class="md-tabs__link"> | |
| FastAPI | |
| </a> | |
| </li> | |
| <li class="md-tabs__item"> | |
| <a href="../features/" class="md-tabs__link"> | |
| Features | |
| </a> | |
| </li> | |
| <li class="md-tabs__item"> | |
| <a href="../learn/" class="md-tabs__link"> | |
| Learn | |
| </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"> | |
| Resources | |
| </a> | |
| </li> | |
| <li class="md-tabs__item md-tabs__item--active"> | |
| <a href="../about/" class="md-tabs__link"> | |
| About | |
| </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="Go to 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"> | |
| <a href=".." class="md-nav__link"> | |
| <span class="md-ellipsis"> | |
| FastAPI | |
| </span> | |
| </a> | |
| </li> | |
| <li class="md-nav__item"> | |
| <a href="../features/" class="md-nav__link"> | |
| <span class="md-ellipsis"> | |
| <span class="md-typeset"> | |
| Features | |
| </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"> | |
| Learn | |
| </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> | |
| Learn | |
| </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"> | |
| Python Types Intro | |
| </span> | |
| </span> | |
| </a> | |
| </li> | |
| <li class="md-nav__item"> | |
| <a href="../async/" class="md-nav__link"> | |
| <span class="md-ellipsis"> | |
| <span class="md-typeset"> | |
| Concurrency and 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"> | |
| Environment Variables | |
| </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"> | |
| Virtual Environments | |
| </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 - User Guide | |
| </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 - User Guide | |
| </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"> | |
| First Steps | |
| </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"> | |
| Path Parameters | |
| </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 Parameters | |
| </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"> | |
| Request Body | |
| </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 Parameters and String Validations | |
| </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"> | |
| Path Parameters and Numeric Validations | |
| </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 Models | |
| </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 - Multiple Parameters | |
| </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 - Fields | |
| </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 - Nested Models | |
| </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"> | |
| Declare Request Example Data | |
| </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"> | |
| Extra Data Types | |
| </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 Parameters | |
| </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 Parameters | |
| </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 Models | |
| </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 Models | |
| </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"> | |
| Response Model - Return Type | |
| </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"> | |
| Extra Models | |
| </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 Status Code | |
| </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"> | |
| Form Data | |
| </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"> | |
| Form Models | |
| </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"> | |
| Request Files | |
| </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"> | |
| Request Forms and Files | |
| </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"> | |
| Handling Errors | |
| </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"> | |
| Path Operation Configuration | |
| </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 Compatible 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 - Updates | |
| </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"> | |
| Dependencies | |
| </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> | |
| Dependencies | |
| </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"> | |
| Classes as Dependencies | |
| </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"> | |
| Sub-dependencies | |
| </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"> | |
| Dependencies in path operation decorators | |
| </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"> | |
| Global Dependencies | |
| </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"> | |
| Dependencies with yield | |
| </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"> | |
| Security | |
| </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> | |
| Security | |
| </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"> | |
| Security - First Steps | |
| </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"> | |
| Get Current User | |
| </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"> | |
| Simple OAuth2 with Password and 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 with Password (and hashing), Bearer with 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 (Relational) Databases | |
| </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"> | |
| Bigger Applications - Multiple Files | |
| </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"> | |
| Stream JSON Lines | |
| </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"> | |
| Background Tasks | |
| </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"> | |
| Metadata and Docs 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"> | |
| Static Files | |
| </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"> | |
| Testing | |
| </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"> | |
| Advanced User Guide | |
| </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> | |
| Advanced User Guide | |
| </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"> | |
| Stream Data | |
| </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"> | |
| Path Operation Advanced Configuration | |
| </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"> | |
| Additional Status Codes | |
| </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"> | |
| Return a Response Directly | |
| </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"> | |
| Custom Response - HTML, Stream, File, others | |
| </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"> | |
| Additional 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 Headers | |
| </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 - Change Status Code | |
| </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"> | |
| Advanced Dependencies | |
| </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"> | |
| Advanced Security | |
| </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> | |
| Advanced Security | |
| </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"> | |
| Using the Request Directly | |
| </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"> | |
| Using Dataclasses | |
| </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"> | |
| Advanced 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"> | |
| Sub Applications - 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"> | |
| Behind a 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"> | |
| Testing WebSockets | |
| </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"> | |
| Testing Events: lifespan and 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"> | |
| Testing Dependencies with Overrides | |
| </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"> | |
| Async 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"> | |
| Settings and Environment Variables | |
| </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"> | |
| Including WSGI - Flask, Django, others | |
| </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"> | |
| Generating SDKs | |
| </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"> | |
| Advanced Python Types | |
| </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 with Bytes as 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"> | |
| Strict Content-Type Checking | |
| </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 Support | |
| </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"> | |
| About FastAPI versions | |
| </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"> | |
| About 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"> | |
| Run a Server Manually | |
| </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"> | |
| Deployments Concepts | |
| </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"> | |
| Deploy FastAPI on Cloud Providers | |
| </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"> | |
| Server Workers - Uvicorn with Workers | |
| </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 Containers - 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 - Recipes | |
| </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 - Recipes | |
| </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"> | |
| General - How To - Recipes | |
| </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"> | |
| Migrate from Pydantic v1 to Pydantic v2 | |
| </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"> | |
| Custom Request and APIRoute class | |
| </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"> | |
| Conditional 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"> | |
| Extending OpenAPI | |
| </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 for Input and Output or Not | |
| </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"> | |
| Custom Docs UI Static Assets (Self-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"> | |
| Configure Swagger UI | |
| </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"> | |
| Testing a Database | |
| </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"> | |
| Use Old 403 Authentication Error Status Codes | |
| </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"> | |
| Resources | |
| </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> | |
| Resources | |
| </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"> | |
| Help FastAPI - Get Help | |
| </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--active md-nav__item--section md-nav__item--nested"> | |
| <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" checked> | |
| <div class="md-nav__link md-nav__container"> | |
| <a href="../about/" class="md-nav__link "> | |
| <span class="md-ellipsis"> | |
| About | |
| </span> | |
| </a> | |
| <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex=""> | |
| <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="true"> | |
| <label class="md-nav__title" for="__nav_7"> | |
| <span class="md-nav__icon md-icon"></span> | |
| About | |
| </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"> | |
| Alternatives, Inspiration and Comparisons | |
| </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"> | |
| History, Design and Future | |
| </span> | |
| </span> | |
| </a> | |
| </li> | |
| <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"> | |
| <span class="md-typeset"> | |
| Benchmarks | |
| </span> | |
| </span> | |
| <span class="md-nav__icon md-icon"></span> | |
| </label> | |
| <a href="./" class="md-nav__link md-nav__link--active"> | |
| <span class="md-ellipsis"> | |
| <span class="md-typeset"> | |
| Benchmarks | |
| </span> | |
| </span> | |
| </a> | |
| <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> | |
| <label class="md-nav__title" for="__toc"> | |
| <span class="md-nav__icon md-icon"></span> | |
| Table of contents | |
| </label> | |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> | |
| <li class="md-nav__item"> | |
| <a href="#benchmarks-and-speed" class="md-nav__link"> | |
| <span class="md-ellipsis"> | |
| <span class="md-typeset"> | |
| Benchmarks and speed | |
| </span> | |
| </span> | |
| </a> | |
| </li> | |
| </ul> | |
| </nav> | |
| </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="Table of contents"> | |
| <label class="md-nav__title" for="__toc"> | |
| <span class="md-nav__icon md-icon"></span> | |
| Table of contents | |
| </label> | |
| <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> | |
| <li class="md-nav__item"> | |
| <a href="#benchmarks-and-speed" class="md-nav__link"> | |
| <span class="md-ellipsis"> | |
| <span class="md-typeset"> | |
| Benchmarks and speed | |
| </span> | |
| </span> | |
| </a> | |
| </li> | |
| </ul> | |
| </nav> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="md-content" data-md-component="content"> | |
| <nav class="md-path" aria-label="Navigation" > | |
| <ol class="md-path__list"> | |
| <li class="md-path__item"> | |
| <a href=".." class="md-path__link"> | |
| <span class="md-ellipsis"> | |
| FastAPI | |
| </span> | |
| </a> | |
| </li> | |
| <li class="md-path__item"> | |
| <a href="../about/" class="md-path__link"> | |
| <span class="md-ellipsis"> | |
| About | |
| </span> | |
| </a> | |
| </li> | |
| </ol> | |
| </nav> | |
| <article class="md-content__inner md-typeset"> | |
| <h1 id="benchmarks">Benchmarks<a class="headerlink" data-preview="" href="#benchmarks" title="Permanent link">¶</a></h1> | |
| <p>Independent TechEmpower benchmarks show <strong>FastAPI</strong> applications running under Uvicorn as <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7">one of the fastest Python frameworks available</a>, only below Starlette and Uvicorn themselves (used internally by FastAPI).</p> | |
| <p>But when checking benchmarks and comparisons you should keep the following in mind.</p> | |
| <h2 id="benchmarks-and-speed">Benchmarks and speed<a class="headerlink" data-preview="" href="#benchmarks-and-speed" title="Permanent link">¶</a></h2> | |
| <p>When you check the benchmarks, it is common to see several tools of different types compared as equivalent.</p> | |
| <p>Specifically, to see Uvicorn, Starlette and FastAPI compared together (among many other tools).</p> | |
| <p>The simpler the problem solved by the tool, the better performance it will get. And most of the benchmarks don't test the additional features provided by the tool.</p> | |
| <p>The hierarchy is like:</p> | |
| <ul> | |
| <li> | |
| <p><strong>Uvicorn</strong>: an ASGI server</p> | |
| <ul> | |
| <li><strong>Starlette</strong>: (uses Uvicorn) a web microframework<ul> | |
| <li><strong>FastAPI</strong>: (uses Starlette) an API microframework with several additional features for building APIs, with data validation, etc.</li> | |
| </ul> | |
| </li> | |
| </ul> | |
| </li> | |
| <li> | |
| <p><strong>Uvicorn</strong>:</p> | |
| <ul> | |
| <li>Will have the best performance, as it doesn't have much extra code apart from the server itself.</li> | |
| <li>You wouldn't write an application in Uvicorn directly. That would mean that your code would have to include more or less, at least, all the code provided by Starlette (or <strong>FastAPI</strong>). And if you did that, your final application would have the same overhead as having used a framework and minimizing your app code and bugs.</li> | |
| <li>If you are comparing Uvicorn, compare it against Daphne, Hypercorn, uWSGI, etc. Application servers.</li> | |
| </ul> | |
| </li> | |
| <li><strong>Starlette</strong>:<ul> | |
| <li>Will have the next best performance, after Uvicorn. In fact, Starlette uses Uvicorn to run. So, it probably can only get "slower" than Uvicorn by having to execute more code.</li> | |
| <li>But it provides you the tools to build simple web applications, with routing based on paths, etc.</li> | |
| <li>If you are comparing Starlette, compare it against Sanic, Flask, Django, etc. Web frameworks (or microframeworks).</li> | |
| </ul> | |
| </li> | |
| <li><strong>FastAPI</strong>:<ul> | |
| <li>The same way that Starlette uses Uvicorn and cannot be faster than it, <strong>FastAPI</strong> uses Starlette, so it cannot be faster than it.</li> | |
| <li>FastAPI provides more features on top of Starlette. Features that you almost always need when building APIs, like data validation and serialization. And by using it, you get automatic documentation for free (the automatic documentation doesn't even add overhead to running applications, it is generated on startup).</li> | |
| <li>If you didn't use FastAPI and used Starlette directly (or another tool, like Sanic, Flask, Responder, etc) you would have to implement all the data validation and serialization yourself. So, your final application would still have the same overhead as if it was built using FastAPI. And in many cases, this data validation and serialization is the biggest amount of code written in applications.</li> | |
| <li>So, by using FastAPI you are saving development time, bugs, lines of code, and you would probably get the same performance (or better) you would if you didn't use it (as you would have to implement it all in your code).</li> | |
| <li>If you are comparing FastAPI, compare it against a web application framework (or set of tools) that provides data validation, serialization and documentation, like Flask-apispec, NestJS, Molten, etc. Frameworks with integrated automatic data validation, serialization and documentation.</li> | |
| </ul> | |
| </li> | |
| </ul> | |
| </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> | |
| Back to top | |
| </button> | |
| </main> | |
| <footer class="md-footer"> | |
| <nav class="md-footer__inner md-grid" aria-label="Footer" > | |
| <a href="../history-design-future/" class="md-footer__link md-footer__link--prev" aria-label="Previous: History, Design and Future"> | |
| <div class="md-footer__button md-icon"> | |
| <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> | |
| </div> | |
| <div class="md-footer__title"> | |
| <span class="md-footer__direction"> | |
| Previous | |
| </span> | |
| <div class="md-ellipsis"> | |
| History, Design and Future | |
| </div> | |
| </div> | |
| </a> | |
| <a href="../management/" class="md-footer__link md-footer__link--next" aria-label="Next: Repository Management"> | |
| <div class="md-footer__title"> | |
| <span class="md-footer__direction"> | |
| Next | |
| </span> | |
| <div class="md-ellipsis"> | |
| Repository Management | |
| </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": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "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> |