40 KiB
include_yaml
| include_yaml | ||
|---|---|---|
|
FastAPI
<style> .md-content .md-typeset h1 { display: none; } </style>FastAPI рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, рд╕реАрдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рддреЗрдЬрд╝, рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝: 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ред
* рдЖрдВрддрд░рд┐рдХ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдРрдкреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдорд╛рдиред
рдкреНрд░рд╛рдпреЛрдЬрдХ
рдХреАрд╕реНрдЯреЛрди рдкреНрд░рд╛рдпреЛрдЬрдХ
рдЧреЛрд▓реНрдб рдкреНрд░рд╛рдпреЛрдЬрдХ
рд╕рд┐рд▓реНрд╡рд░ рдкреНрд░рд╛рдпреЛрдЬрдХ
рдЕрдиреНрдп рдкреНрд░рд╛рдпреЛрдЬрдХ
рд╡рд┐рдЪрд╛рд░
"рдореИрдВ рдЗрди рджрд┐рдиреЛрдВ FastAPI рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреА Microsoft рдореЗрдВ ML рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдореБрдЦреНрдп Windows рдкреНрд░реЛрдбрдХреНрдЯ рдФрд░ рдХреБрдЫ Office рдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рдореЗрдВ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред"
"рд╣рдордиреЗ FastAPI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдирд╛рдИ рддрд╛рдХрд┐ рдПрдХ REST рд╕рд░реНрд╡рд░ рд╕реНрдкреЙрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдЕрдиреНрджрд╛рдЬрд╝реЛрдВ/рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред" [Ludwig рдХреЗ рд▓рд┐рдП]
"Netflix рд╣рдорд╛рд░реЗ рд╕рдВрдХрдЯ рдкреНрд░рдмрдВрдзрди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ: Dispatch рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╕рдиреНрди рд╣реИ!" [FastAPI рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛]
"рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдбрдХреНрд╢рди Python API рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ FastAPI рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реВрдВрдЧрд╛/рдХрд░реВрдВрдЧреАред рдпрд╣ рд╕реБрдВрджрд░рддрд╛ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдФрд░ рдмреЗрд╣рдж рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИ тАФ рдпрд╣ рд╣рдорд╛рд░реА API-рдлрд░реНрд╕реНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЧрдпрд╛ рд╣реИред"
"[...] рдореИрдВ рдЗрди рджрд┐рдиреЛрдВ FastAPI рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред [...] рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреА Microsoft рдореЗрдВ ML рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛/рд░рд╣реА рд╣реВрдБред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдореБрдЦреНрдп Windows рдкреНрд░реЛрдбрдХреНрдЯ рдФрд░ рдХреБрдЫ Office рдкреНрд░реЛрдбрдХреНрдЯреНрд╕ рдореЗрдВ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ."
"рд╣рдордиреЗ FastAPI рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдирд╛рдИ рддрд╛рдХрд┐ рдПрдХ REST рд╕рд░реНрд╡рд░ рд╕реНрдкреЙрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред [Ludwig рдХреЗ рд▓рд┐рдП]"
"Netflix рд╣рдорд╛рд░реЗ рд╕рдВрдХрдЯ рдкреНрд░рдмрдВрдзрди рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ: Dispatch рдХреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╕рдиреНрди рд╣реИ! [FastAPI рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛]"
"рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдбрдХреНрд╢рди Python API рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ FastAPI рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реВрдВрдЧрд╛/рдХрд░реВрдВрдЧреАред рдпрд╣ рд╕реБрдВрджрд░рддрд╛ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓ рд╣реИ рдФрд░ рдмреЗрд╣рдж рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реА API-рдлрд╝рд░реНрд╕реНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд░рдгрдиреАрддрд┐ рдХрд╛ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ Virtual TAC Engineer рдЬреИрд╕реЗ рдХрдИ рдСрдЯреЛрдореЗрд╢рдиреНрд╕ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ."
FastAPI рдХреЙрдиреНрдлрд╝
FastAPI Conf '26 28 рдЕрдХреНрдЯреВрдмрд░, 2026 рдХреЛ рдПрдореНрд╕реНрдЯрд░реНрдбрдо, рдиреАрджрд░рд▓реИрдВрдбреНрд╕ рдореЗрдВ рд╣реЛ рд░рд╣реА рд╣реИред рд╕рдм рдХреБрдЫ FastAPI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕реАрдзреЗ рд╕реНрд░реЛрдд рд╕реЗред ЁЯОд
FastAPI рдорд┐рдиреА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреНрд░реА
рд╕рд╛рд▓ 2025 рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ 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
GEToperations рд▓реЗрддреА рд╣реИрдВ (рдЬрд┐рдиреНрд╣реЗрдВ HTTP methods рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред - path
/items/{item_id}рдореЗрдВ рдПрдХ path parameteritem_idрд╣реИ рдЬреЛintрд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред - path
/items/{item_id}рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХstrquery parameterqрд╣реИред
рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
рдЕрдм http://127.0.0.1:8000/docs рдкрд░ рдЬрд╛рдПрдБред
рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджрд┐рдЦреЗрдЧрд╛ (рдЬреЛ Swagger UI рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):
рд╡реИрдХрд▓реНрдкрд┐рдХ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
рдФрд░ рдЕрдм, http://127.0.0.1:8000/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 рд╕рд╣рд┐рдд:
- "Try it out" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╣ рдЖрдкрдХреЛ parameters рднрд░рдиреЗ рдФрд░ рд╕реАрдзреЗ API рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдлрд┐рд░ "Execute" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреА API рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдЧрд╛, parameters рднреЗрдЬреЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдПрдЧрд╛:
рд╡реИрдХрд▓реНрдкрд┐рдХ API рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрдиреНрдирдпрди
рдФрд░ рдЕрдм, http://127.0.0.1:8000/redoc рдкрд░ рдЬрд╛рдПрдБред
- рд╡реИрдХрд▓реНрдкрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднреА рдирдП query parameter рдФрд░ body рдХреЛ рджрд░реНрд╢рд╛рдПрдЧрд╛:
рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк 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рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ред- рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓реНрд╕ред
- ...рдФрд░ рдмрд╣реБрдд рдХреБрдЫред
- Python рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг (
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ 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)ред- рдХреНрдпреЛрдВрдХрд┐
qparameter= NoneрдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рд╣реИ, рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред NoneрдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ (рдЬреИрд╕реЗPUTрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ body рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
- рдХреНрдпреЛрдВрдХрд┐
/items/{item_id}рдкрд░PUTрдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, body рдХреЛ JSON рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдЧрд╛:- рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ attribute
nameрд╣реИ рдЬреЛstrрд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред - рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ attribute
priceрд╣реИ рдЬреЛfloatрд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред - рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ attribute
is_offerрд╣реИ, рдЬреЛ рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛboolрд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред - рдпрд╣ рд╕рдм рдЧрд╣рд░рд╛рдИ рд╕реЗ nested JSON objects рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
- рдпрд╣ рдЬрд╛рдБрдЪреЗрдЧрд╛ рдХрд┐ рдПрдХ рдЖрд╡рд╢реНрдпрдХ attribute
- JSON рд╕реЗ рдФрд░ JSON рдореЗрдВ рд╕реНрд╡рддрдГ рд░реВрдкрд╛рдВрддрд░рдгред
- рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ OpenAPI рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдирд┐рдореНрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБред
- рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБред
- рд╕реАрдзреЗ 2 рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕реЗрдЬрд╝ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╕рддрд╣ рдХреЛ рдЫреБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЖ рдЧрдпрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдХрд░ рджреЗрдЦреЗрдВ:
return {"item_name": item.name, "item_id": item_id}
...рдпрд╣рд╛рдБ рд╕реЗ:
... "item_name": item.name ...
...рдпрд╣рд╛рдБ рддрдХ:
... "item_price": item.price ...
...рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдПрдбрд┐рдЯрд░ attributes рдХреЛ рдХреИрд╕реЗ auto-complete рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдиреЗрдЧрд╛:
рдЕрдзрд┐рдХ рдлрд╝реАрдЪрд░реНрд╕ рд╕рд╣рд┐рдд рдПрдХ рдЕрдзрд┐рдХ рд╕рдореНрдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдпреВрдЬрд╝рд░ рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
рд╕реНрдкреЙрдЗрд▓рд░ рдЕрд▓рд░реНрдЯ: рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ - рдпреВрдЬрд╝рд░ рдЧрд╛рдЗрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
- рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ 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 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИред









