Files
fastapi/docs/hi/docs/index.md
Yurii Motov 6e6c74fc16 ЁЯМР Enable Hindi docs translations (#15554)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-19 22:16:06 +02:00

40 KiB

include_yaml
include_yaml
sponsors
data/sponsors.yml

FastAPI

<style> .md-content .md-typeset h1 { display: none; } </style>

FastAPI

FastAPI рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, рд╕реАрдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рддреЗрдЬрд╝, рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░

рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬ рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд░реНрдерд┐рдд Python рд╕рдВрд╕реНрдХрд░рдг


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: https://fastapi.tiangolo.com

рд╕реНрд░реЛрдд рдХреЛрдб: https://github.com/fastapi/fastapi


FastAPI рдПрдХ рдЖрдзреБрдирд┐рдХ, рддреЗрдЬрд╝ (рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди) рд╡реЗрдм рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рдорд╛рдирдХ Python type hints рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Python рд╕реЗ APIs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:

  • рддреЗрдЬрд╝: рдмрд╣реБрдд рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, NodeJS рдФрд░ Go рдХреЗ рд╕рдордХрдХреНрд╖ (Starlette рдФрд░ Pydantic рдХреА рдмрджреМрд▓рдд)ред рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рддреЗрдЬрд╝ Python рдлрд╝реНрд░реЗрдорд╡рд░реНрдХреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХред
  • рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рддреЗрдЬрд╝: рдлрд╝реАрдЪрд░реНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рд▓рдЧрднрдЧ 200% рд╕реЗ 300% рддрдХ рдмрдврд╝рд╛рдПрдБред *
  • рдХрдо рдмрдЧреНрд╕: рдорд╛рдирд╡реАрдп (рдбреЗрд╡рд▓рдкрд░) рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ 40% рдХреА рдХрдореАред *
  • рд╕рд╣рдЬ: рдмреЗрд╣рддрд░реАрди рдПрдбрд┐рдЯрд░ рд╕рдкреЛрд░реНрдЯред рд╣рд░ рдЬрдЧрд╣ рдСрдЯреЛ-рдХрдореНрдкреНрд▓реАрдЯред рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдХрдо рд╕рдордпред
  • рдЖрд╕рд╛рди: рдЗрд╕реНрддреЗрдорд╛рд▓ рдФрд░ рд╕реАрдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рдиреЗ рдореЗрдВ рдХрдо рд╕рдордпред
  • рд╕рдВрдХреНрд╖рд┐рдкреНрдд: рдХреЛрдб рдбреБрдкреНрд▓реАрдХреЗрд╢рди рдХреЛ рдиреНрдпреВрдирддрдо рдХрд░реЗрдВред рдкреНрд░рддреНрдпреЗрдХ parameter declaration рд╕реЗ рдХрдИ рдлрд╝реАрдЪрд░реНрд╕ред рдХрдо рдмрдЧреНрд╕ред
  • рдордЬрдмреВрдд: рдкреНрд░реЛрдбрдХреНрд╢рди-рд░реЗрдбреА рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рд╕реНрд╡рддрдГ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рдеред
  • рдорд╛рдирдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд: APIs рдХреЗ рдЦреБрд▓реЗ рдорд╛рдирдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд (рдФрд░ рдкреВрд░реНрдгрддрдГ рдЕрдиреБрдХреВрд▓): OpenAPI (рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ Swagger рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛) рдФрд░ JSON Schemaред

* рдЖрдВрддрд░рд┐рдХ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдРрдкреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдорд╛рдиред

рдкреНрд░рд╛рдпреЛрдЬрдХ

рдХреАрд╕реНрдЯреЛрди рдкреНрд░рд╛рдпреЛрдЬрдХ

{% for sponsor in sponsors.keystone -%} {{ sponsor.title }} {% endfor -%}

рдЧреЛрд▓реНрдб рдкреНрд░рд╛рдпреЛрдЬрдХ

{% for sponsor in sponsors.gold -%} {{ sponsor.title }} {% endfor -%}

рд╕рд┐рд▓реНрд╡рд░ рдкреНрд░рд╛рдпреЛрдЬрдХ

{% for sponsor in sponsors.silver -%} {{ sponsor.title }} {% endfor %}

рдЕрдиреНрдп рдкреНрд░рд╛рдпреЛрдЬрдХ

рд╡рд┐рдЪрд╛рд░

Microsoft Uber Netflix Cisco
"рдореИрдВ рдЗрди рджрд┐рдиреЛрдВ FastAPI рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреА Microsoft рдореЗрдВ ML рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдореБрдЦреНрдп Windows рдкреНрд░реЛрдбрдХреНрдЯ рдФрд░ рдХреБрдЫ Office рдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рдореЗрдВ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред"
тАФ рдХрдмреАрд░ рдЦрд╛рди, Microsoft (рд╕рдВрджрд░реНрдн)
"рд╣рдордиреЗ FastAPI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдирд╛рдИ рддрд╛рдХрд┐ рдПрдХ REST рд╕рд░реНрд╡рд░ рд╕реНрдкреЙрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдЕрдиреНрджрд╛рдЬрд╝реЛрдВ/рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред" [Ludwig рдХреЗ рд▓рд┐рдП]
тАФ рдкрд┐рдПрд░реЛ рдореЛрд▓рд┐рдиреЛ, рдпрд╛рд░реЛрд╕реНрд▓рд╛рд╡ рдбреБрдбрд┐рди, рд╕рд╛рдИ рд╕реБрдордВрдд рдорд┐рд░реНрдпрд╛рд▓рд╛, Uber (рд╕рдВрджрд░реНрдн)
"Netflix рд╣рдорд╛рд░реЗ рд╕рдВрдХрдЯ рдкреНрд░рдмрдВрдзрди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ: Dispatch рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╕рдиреНрди рд╣реИ!" [FastAPI рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛]
тАФ рдХреЗрд╡рд┐рди рдЧреНрд▓рд┐рд╕рди, рдорд╛рд░реНрдХ рд╡рд┐рд▓рд╛рдиреЛрд╡рд╛, рдлреЙрд░реЗрд╕реНрдЯ рдореЙрдиреНрд╕реЗрди, Netflix (рд╕рдВрджрд░реНрдн)
"рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдбрдХреНрд╢рди Python API рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ FastAPI рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реВрдВрдЧрд╛/рдХрд░реВрдВрдЧреАред рдпрд╣ рд╕реБрдВрджрд░рддрд╛ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдФрд░ рдмреЗрд╣рдж рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИ тАФ рдпрд╣ рд╣рдорд╛рд░реА API-рдлрд░реНрд╕реНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЧрдпрд╛ рд╣реИред"
тАФ рдбреАрдпреЛрди рдкрд┐рд▓реНрд╕рдмрд░реА, Cisco (рд╕рдВрджрд░реНрдн)

"[...] рдореИрдВ рдЗрди рджрд┐рдиреЛрдВ FastAPI рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред [...] рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреА Microsoft рдореЗрдВ ML рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдореБрдЦреНрдп Windows рдкреНрд░реЛрдбрдХреНрдЯ рдФрд░ рдХреБрдЫ Office рдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рдореЗрдВ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ."

рдХрдмреАрд░ рдЦрд╛рди - Microsoft (рд╕рдВрджрд░реНрдн)

"рд╣рдордиреЗ FastAPI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдирд╛рдИ рддрд╛рдХрд┐ рдПрдХ REST рд╕рд░реНрд╡рд░ рд╕реНрдкреЙрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред [Ludwig рдХреЗ рд▓рд┐рдП]"

рдкрд┐рдПрд░реЛ рдореЛрд▓рд┐рдиреЛ, рдпрд╛рд░реЛрд╕реНрд▓рд╛рд╡ рдбреБрдбрд┐рди, рдФрд░ рд╕рд╛рдИ рд╕реБрдордВрдд рдорд┐рд░реНрдпрд╛рд▓рд╛ - Uber (рд╕рдВрджрд░реНрдн)

"Netflix рд╣рдорд╛рд░реЗ рд╕рдВрдХрдЯ рдкреНрд░рдмрдВрдзрди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ: Dispatch рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╕рдиреНрди рд╣реИ! [FastAPI рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛]"

рдХреЗрд╡рд┐рди рдЧреНрд▓рд┐рд╕рди, рдорд╛рд░реНрдХ рд╡рд┐рд▓рд╛рдиреЛрд╡рд╛, рдлреЙрд░реЗрд╕реНрдЯ рдореЙрдиреНрд╕реЗрди - Netflix (рд╕рдВрджрд░реНрдн)

"рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдбрдХреНрд╢рди Python API рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ FastAPI рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реВрдВрдЧрд╛/рдХрд░реВрдВрдЧреАред рдпрд╣ рд╕реБрдВрджрд░рддрд╛ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдФрд░ рдмреЗрд╣рдж рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реА API-рдлрд╝рд░реНрд╕реНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ Virtual TAC Engineer рдЬреИрд╕реЗ рдХрдИ рдСрдЯреЛрдореЗрд╢рдиреНрд╕ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ."

рдбреАрдпреЛрди рдкрд┐рд▓реНрд╕рдмрд░реА - Cisco (рд╕рдВрджрд░реНрдн)

FastAPI рдХреЙрдиреНрдлрд╝

FastAPI Conf '26 28 рдЕрдХреНрдЯреВрдмрд░, 2026 рдХреЛ рдПрдореНрд╕реНрдЯрд░реНрдбрдо, рдиреАрджрд░рд▓реИрдВрдбреНрд╕ рдореЗрдВ рд╣реЛ рд░рд╣реА рд╣реИред рд╕рдм рдХреБрдЫ FastAPI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕реАрдзреЗ рд╕реНрд░реЛрдд рд╕реЗред ЁЯОд

FastAPI Conf '26 - 28 рдЕрдХреНрдЯреВрдмрд░, 2026 - рдПрдореНрд╕реНрдЯрд░реНрдбрдо, NL

FastAPI рдорд┐рдиреА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд░реА

рд╕рд╛рд▓ 2025 рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ FastAPI рдорд┐рдиреА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд░реА рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИ, рдЖрдк рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

FastAPI рдорд┐рдиреА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд░реА

Typer, CLIs рдХрд╛ FastAPI

рдпрджрд┐ рдЖрдк рд╡реЗрдм API рдХреЗ рдмрдЬрд╛рдп рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ CLI рдРрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ Typer рджреЗрдЦреЗрдВред

Typer, FastAPI рдХрд╛ рдЫреЛрдЯрд╛ рднрд╛рдИ/рдмрд╣рди рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп CLIs рдХрд╛ FastAPI рд╣реЛрдирд╛ рд╣реИред тМия╕П ЁЯЪА

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

FastAPI рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЦрдбрд╝рд╛ рд╣реИ:

  • рд╡реЗрдм рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП Starletteред
  • рдбреЗрдЯрд╛ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП Pydanticред

рд╕реНрдерд╛рдкрдирд╛

рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдиреНрд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдмрдирд╛рдПрдБ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ FastAPI рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

$ pip install "fastapi[standard]"

---> 100%

рдиреЛрдЯ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╕рднреА рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "fastapi[standard]" рдХреЛ рдЙрджреНрдзрд░рдг-рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд░рдЦреЗрдВред

рдЙрджрд╛рд╣рд░рдг

рдЗрд╕реЗ рдмрдирд╛рдПрдБ

main.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦреЗрдВ:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}
рдпрд╛ async def рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ...

рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб async / await рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ async def рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

рдиреЛрдЯ:

рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ, рддреЛ "рдЬрд▓реНрджреА рдореЗрдВ?" рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВ: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ async рдФрд░ await рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдЗрд╕реЗ рдЪрд▓рд╛рдПрдБ

рд╕рд░реНрд╡рд░ рдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рд╕реЗ рдЪрд▓рд╛рдПрдБ:

$ fastapi dev

 тХнтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА FastAPI CLI - Development mode тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтХо
 тФВ                                                     тФВ
 тФВ  Serving at: http://127.0.0.1:8000                  тФВ
 тФВ                                                     тФВ
 тФВ  API docs: http://127.0.0.1:8000/docs               тФВ
 тФВ                                                     тФВ
 тФВ  Running in development mode, for production use:   тФВ
 тФВ                                                     тФВ
 тФВ  fastapi run                                        тФВ
 тФВ                                                     тФВ
 тХ░тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтХп

INFO:     Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [2248755] using WatchFiles
INFO:     Started server process [2248757]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
fastapi dev рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ...

fastapi dev рдХрдорд╛рдВрдб рдЖрдкрдХрд╛ main.py рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рддрдГ рдкрдврд╝рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ FastAPI рдРрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ Uvicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, fastapi dev рд▓реЛрдХрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП auto-reload рд╕рдХреНрд╖рдо рдХрд░рдХреЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ред

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: FastAPI CLI рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВред

рдЗрд╕реЗ рдЬрд╛рдБрдЪреЗрдВ

рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ http://127.0.0.1:8000/items/5?q=somequery рдЦреЛрд▓реЗрдВред

рдЖрдкрдХреЛ JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦреЗрдЧреА:

{"item_id": 5, "q": "somequery"}

рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ API рдмрдирд╛ рд▓реА рд╣реИ рдЬреЛ:

  • paths / рдФрд░ /items/{item_id} рдкрд░ HTTP рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИред
  • рджреЛрдиреЛрдВ paths GET operations рд▓реЗрддреА рд╣реИрдВ (рдЬрд┐рдиреНрд╣реЗрдВ HTTP methods рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
  • path /items/{item_id} рдореЗрдВ рдПрдХ path parameter item_id рд╣реИ рдЬреЛ int рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • path /items/{item_id} рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ str query parameter q рд╣реИред

рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

рдЕрдм http://127.0.0.1:8000/docs рдкрд░ рдЬрд╛рдПрдБред

рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджрд┐рдЦреЗрдЧрд╛ (рдЬреЛ Swagger UI рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):

Swagger UI

рд╡реИрдХрд▓реНрдкрд┐рдХ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

рдФрд░ рдЕрдм, http://127.0.0.1:8000/redoc рдкрд░ рдЬрд╛рдПрдБред

рдЖрдкрдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджрд┐рдЦреЗрдЧрд╛ (рдЬреЛ ReDoc рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):

ReDoc

рдЙрджрд╛рд╣рд░рдг рдЙрдиреНрдирдпрди

рдЕрдм PUT рдЕрдиреБрд░реЛрдз рд╕реЗ body рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП main.py рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

Pydantic рдХреА рдмрджреМрд▓рдд, body рдХреЛ рдорд╛рдирдХ Python рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

fastapi dev рд╕рд░реНрд╡рд░ рд╕реНрд╡рддрдГ рд░реАрд▓реЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдиреНрдирдпрди

рдЕрдм http://127.0.0.1:8000/docs рдкрд░ рдЬрд╛рдПрдБред

  • рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реНрд╡рддрдГ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдирдП body рд╕рд╣рд┐рдд:

Swagger UI

  • "Try it out" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╣ рдЖрдкрдХреЛ parameters рднрд░рдиреЗ рдФрд░ рд╕реАрдзреЗ API рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

Swagger UI interaction

  • рдлрд┐рд░ "Execute" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреА API рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдЧрд╛, parameters рднреЗрдЬреЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдПрдЧрд╛:

Swagger UI interaction

рд╡реИрдХрд▓реНрдкрд┐рдХ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдиреНрдирдпрди

рдФрд░ рдЕрдм, http://127.0.0.1:8000/redoc рдкрд░ рдЬрд╛рдПрдБред

  • рд╡реИрдХрд▓реНрдкрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднреА рдирдП query parameter рдФрд░ body рдХреЛ рджрд░реНрд╢рд╛рдПрдЧрд╛:

ReDoc

рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк parameters, body, рдЖрджрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди parameters рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рдпрд╣ рдорд╛рдирдХ рдЖрдзреБрдирд┐рдХ Python рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдХрд┐рд╕реА рдирдИ рд╕рд┐рдВрдЯреИрдХреНрд╕, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ methods рдпрд╛ classes, рдЖрджрд┐ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдмрд╕ рдорд╛рдирдХ Pythonред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ int рдХреЗ рд▓рд┐рдП:

item_id: int

рдпрд╛ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ Item рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП:

item: Item

...рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕реА рдПрдХ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:

  • рдПрдбрд┐рдЯрд░ рд╕рдкреЛрд░реНрдЯ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
    • рдХрдореНрдкреНрд▓реАрд╢рдиред
    • рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪред
  • рдбреЗрдЯрд╛ рдХрд╛ рд╡реИрдзреАрдХрд░рдг:
    • рдЬрдм рдбреЗрдЯрд╛ рдЕрдорд╛рдиреНрдп рд╣реЛ рддреЛ рд╕реНрд╡рддрдГ рдФрд░ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдБред
    • рдЧрд╣рд░рд╛рдИ рд╕реЗ nested JSON objects рдХреЗ рд▓рд┐рдП рднреА рд╡реИрдзреАрдХрд░рдгред
  • рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг: рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ Python рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкрдврд╝рдирд╛:
    • JSONред
    • Path parametersред
    • Query parametersред
    • Cookiesред
    • Headersред
    • Formsред
    • Filesред
  • рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг: Python рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрдЯрд╛ (JSON рдХреЗ рд░реВрдк рдореЗрдВ) рдореЗрдВ:
    • Python рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг (str, int, float, bool, list, рдЖрджрд┐)ред
    • datetime рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ред
    • UUID рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ред
    • рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓реНрд╕ред
    • ...рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдЬрд┐рдирдореЗрдВ 2 рд╡реИрдХрд▓реНрдкрд┐рдХ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
    • Swagger UIред
    • ReDocред

рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, FastAPI рдпрд╣ рдХрд░реЗрдЧрд╛:

  • GET рдФрд░ PUT рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП path рдореЗрдВ item_id рд╣реИ, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
  • GET рдФрд░ PUT рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП item_id рдХрд╛ рдкреНрд░рдХрд╛рд░ int рд╣реИ, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
    • рдпрджрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдЙрдкрдпреЛрдЧреА, рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред
  • GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ q рдирд╛рдо рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ query parameter рд╣реИ (рдЬреИрд╕реЗ http://127.0.0.1:8000/items/foo?q=somequery)ред
    • рдХреНрдпреЛрдВрдХрд┐ q parameter = None рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рд╣реИ, рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
    • None рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ (рдЬреИрд╕реЗ PUT рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ body рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
  • /items/{item_id} рдкрд░ PUT рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, body рдХреЛ JSON рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдЧрд╛:
    • рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ attribute name рд╣реИ рдЬреЛ str рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
    • рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ attribute price рд╣реИ рдЬреЛ float рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
    • рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ attribute is_offer рд╣реИ, рдЬреЛ рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛ bool рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
    • рдпрд╣ рд╕рдм рдЧрд╣рд░рд╛рдИ рд╕реЗ nested JSON objects рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  • JSON рд╕реЗ рдФрд░ JSON рдореЗрдВ рд╕реНрд╡рддрдГ рд░реВрдкрд╛рдВрддрд░рдгред
  • рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ OpenAPI рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
    • рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБред
    • рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБред
  • рд╕реАрдзреЗ 2 рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╕рддрд╣ рдХреЛ рдЫреБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЖ рдЧрдпрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдХрд░ рджреЗрдЦреЗрдВ:

    return {"item_name": item.name, "item_id": item_id}

...рдпрд╣рд╛рдБ рд╕реЗ:

        ... "item_name": item.name ...

...рдпрд╣рд╛рдБ рддрдХ:

        ... "item_price": item.price ...

...рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдПрдбрд┐рдЯрд░ attributes рдХреЛ рдХреИрд╕реЗ auto-complete рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдиреЗрдЧрд╛:

editor support

рдЕрдзрд┐рдХ рдлрд╝реАрдЪрд░реНрд╕ рд╕рд╣рд┐рдд рдПрдХ рдЕрдзрд┐рдХ рд╕рдореНрдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдпреВрдЬрд╝рд░ рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред

рд╕реНрдкреЙрдЗрд▓рд░ рдЕрд▓рд░реНрдЯ: рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдпреВрдЬрд╝рд░ рдЧрд╛рдЗрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:

  • рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ parameters рдХреА рдШреЛрд╖рдгрд╛: headers, cookies, form fields рдФрд░ filesред
  • maximum_length рдпрд╛ regex рдЬреИрд╕реА validation constraints рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред
  • рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдоред
  • рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдЬрд┐рд╕рдореЗрдВ OAuth2 рдХреЗ рд╕рд╛рде JWT tokens рдФрд░ HTTP Basic auth рдХрд╛ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред
  • рдЧрд╣рд░рд╛рдИ рд╕реЗ nested JSON рдореЙрдбрд▓реНрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рдЙрдиреНрдирдд (рдкрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди) рддрдХрдиреАрдХреЗрдВ (Pydantic рдХреА рдмрджреМрд▓рдд)ред
  • Strawberry рдФрд░ рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде GraphQL рдПрдХреАрдХрд░рдгред
  • рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрдЪрд░реНрд╕ (Starlette рдХреА рдмрджреМрд▓рдд) рдЬреИрд╕реЗ:
    • WebSockets
    • HTTPX рдФрд░ pytest рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрддреНрдпрдВрдд рдЖрд╕рд╛рди рдЯреЗрд╕реНрдЯреНрд╕
    • CORS
    • Cookie Sessions
    • ...рдЖрджрд┐ред

рдЕрдкрдиреА рдРрдк рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ (рд╡реИрдХрд▓реНрдкрд┐рдХ)

рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреА FastAPI рдРрдк рдХреЛ FastAPI Cloud рдкрд░ рдПрдХ рд╣реА рдХрдорд╛рдВрдб рд╕реЗ рдбрд┐рдкреНрд▓реЙрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ЁЯЪА

$ fastapi deploy

Deploying to FastAPI Cloud...

тЬЕ Deployment successful!

ЁЯРФ Ready the chicken! Your app is ready at https://myapp.fastapicloud.dev

CLI рдЖрдкрдХреА FastAPI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рддрдГ рдкрд╣рдЪрд╛рди рд▓реЗрдЧрд╛ рдФрд░ рдЙрд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк logged in рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреБрд▓реЗрдЧрд╛ред

рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЕрдм рдЖрдк рдЙрд╕ URL рдкрд░ рдЕрдкрдиреА рдРрдк рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред тЬи

FastAPI Cloud рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

FastAPI Cloud рдХреЛ FastAPI рдХреЗ рд╣реА рд▓реЗрдЦрдХ рдФрд░ рдЯреАрдо рдиреЗ рдмрдирд╛рдпрд╛ рд╣реИред

рдпрд╣ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдХрд┐рд╕реА API рдХреЛ рдмрдирд╛рдиреЗ, рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

рдпрд╣ FastAPI рдХреЗ рд╕рд╛рде рдРрдкреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдЙрд╕реА рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рддрдХ рд▓рд╛рддрд╛ рд╣реИред ЁЯОЙ

FastAPI Cloud, FastAPI and friends рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рд╛рдпреЛрдЬрдХ рдФрд░ рдлрдВрдбрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рд╣реИред тЬи

рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдкрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдВ

FastAPI рдУрдкрди рд╕реЛрд░реНрд╕ рд╣реИ рдФрд░ рдорд╛рдирдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдк FastAPI рдРрдкреНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдЧрд╛рдЗрдбреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде FastAPI рдРрдкреНрд╕ рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдВред ЁЯдУ

рдкреНрд░рджрд░реНрд╢рди

рд╕реНрд╡рддрдВрддреНрд░ TechEmpower рдмреЗрдВрдЪрдорд╛рд░реНрдХ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ Uvicorn рдХреЗ рддрд╣рдд рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ FastAPI рдПрдкреНрд▓реАрдХреЗрд╢рдиреНрд╕ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рддреЗрдЬрд╝ Python рдлрд╝реНрд░реЗрдорд╡рд░реНрдХреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ, рдХреЗрд╡рд▓ Starlette рдФрд░ Uvicorn (рдЬреЛ FastAPI рджреНрд╡рд╛рд░рд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ) рд╕реЗ рдиреАрдЪреЗред (*)

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдмреЗрдВрдЪрдорд╛рд░реНрдХреНрд╕ рд╕реЗрдХреНрд╢рди рджреЗрдЦреЗрдВред

рдирд┐рд░реНрднрд░рддрд╛рдПрдБ

FastAPI, Pydantic рдФрд░ Starlette рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

standard рдирд┐рд░реНрднрд░рддрд╛рдПрдБ

рдЬрдм рдЖрдк pip install "fastapi[standard]" рдХреЗ рд╕рд╛рде FastAPI рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ standard рд╕рдореВрд╣ рдХреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ:

Pydantic рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛:

  • email-validator - рдИрдореЗрд▓ рд╡реИрдзреАрдХрд░рдг рдХреЗ рд▓рд┐рдПред

Starlette рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛:

  • httpx - рдпрджрд┐ рдЖрдк TestClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХред
  • jinja2 - рдпрджрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХред
  • python-multipart - рдпрджрд┐ рдЖрдк рдлреЙрд░реНрдо "рдкрд╛рд░реНрд╕рд┐рдВрдЧ" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, request.form() рдХреЗ рд╕рд╛рде, рддреЛ рдЖрд╡рд╢реНрдпрдХред

FastAPI рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛:

  • uvicorn - рд╡рд╣ рд╕рд░реНрд╡рд░ рдЬреЛ рдЖрдкрдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЛрдб рдФрд░ рд╕рд░реНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ uvicorn[standard] рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╕рд░реНрд╡рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ (рдЬреИрд╕реЗ uvloop) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
  • fastapi-cli[standard] - fastapi рдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
    • рдЗрд╕рдореЗрдВ fastapi-cloud-cli рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА FastAPI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ FastAPI Cloud рдкрд░ рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

standard рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛

рдпрджрд┐ рдЖрдк standard рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ, рддреЛ рдЖрдк pip install fastapi рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, pip install "fastapi[standard]" рдХреЗ рдмрдЬрд╛рдпред

fastapi-cloud-cli рдХреЗ рдмрд┐рдирд╛

рдпрджрд┐ рдЖрдк standard рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди fastapi-cloud-cli рдХреЗ рдмрд┐рдирд╛ FastAPI рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ pip install "fastapi[standard-no-fastapi-cloud-cli]" рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ

рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ Pydantic рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

  • pydantic-settings - рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдПред
  • pydantic-extra-types - Pydantic рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рд╣реЗрддреБред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ FastAPI рдирд┐рд░реНрднрд░рддрд╛рдПрдБ:

  • orjson - рдпрджрд┐ рдЖрдк ORJSONResponse рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХред
  • ujson - рдпрджрд┐ рдЖрдк UJSONResponse рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрд╡рд╢реНрдпрдХред

рд▓рд╛рдЗрд╕реЗрдВрд╕

рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред