Co-authored-by: pr-submit[bot] <pr-submit[bot]@users.noreply.github.com> Co-authored-by: Yurii Motov <109919500+YuriiMotov@users.noreply.github.com> Co-authored-by: pr-push[bot] <pr-push[bot]@users.noreply.github.com>
40 KiB
рд╡рд┐рдХрд▓реНрдк, рдкреНрд░реЗрд░рдгрд╛ рдФрд░ рддреБрд▓рдирд╛рдПрдБ
FastAPI рдХреЛ рдХрд┐рд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА, рдпрд╣ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИ рдФрд░ рдЙрдирд╕реЗ рдЗрд╕рдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ред
рдкрд░рд┐рдЪрдп
рджреВрд╕рд░реЛрдВ рдХреЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рдо рдХреЗ рдмрд┐рдирд╛ FastAPI рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрдИ tools рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред
рдореИрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдПрдХ рдирдпрд╛ framework рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрддрд╛ рд░рд╣рд╛ред рдкрд╣рд▓реЗ рдореИрдВрдиреЗ FastAPI рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╕рднреА features рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ frameworks, plug-ins рдФрд░ tools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордп рдРрд╕рд╛ рдЖрдпрд╛ рдЬрдм рдРрд╕рд╛ рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ рдЬреЛ рдпреЗ рд╕рднреА features рдкреНрд░рджрд╛рди рдХрд░реЗ, рдкрд┐рдЫрд▓реЗ tools рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓реЗрдХрд░, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рдорд┐рд▓рд╛рдХрд░, рдЙрди language features рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬреЛ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рднреА рдирд╣реАрдВ рдереЗ (Python 3.6+ type hints)ред
рдкрд┐рдЫрд▓реЗ tools
Django
рдпрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп Python framework рд╣реИ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Instagram рдЬреИрд╕реЗ systems рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ relational databases (рдЬреИрд╕реЗ MySQL рдпрд╛ PostgreSQL) рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд tightly coupled рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп store engine рдХреЗ рд░реВрдк рдореЗрдВ NoSQL database (рдЬреИрд╕реЗ Couchbase, MongoDB, Cassandra, рдЖрджрд┐) рд░рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ backend рдореЗрдВ HTML generate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рди рдХрд┐ рдХрд┐рд╕реА modern frontend (рдЬреИрд╕реЗ React, Vue.js рдФрд░ Angular) рдпрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп systems (рдЬреИрд╕реЗ IoT devices) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА APIs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Django REST Framework
Django REST Framework рдХреЛ Django рдХреЗ рдКрдкрд░ Web APIs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ flexible toolkit рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрд╛рдХрд┐ рдЗрд╕рдХреА API рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХреЗред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Mozilla, Red Hat рдФрд░ Eventbrite рд╕рд╣рд┐рдд рдХрдИ рдХрдВрдкрдирд┐рдпрд╛рдБ рдХрд░рддреА рд╣реИрдВред
рдпрд╣ automatic API documentation рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдФрд░ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬрд┐рд╕рдиреЗ FastAPI рдХреА "рдЦреЛрдЬ" рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
/// note | рдиреЛрдЯ
Django REST Framework рдХреЛ Tom Christie рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред рд╡рд╣реА Starlette рдФрд░ Uvicorn рдХреЗ creator рд╣реИрдВ, рдЬрд┐рди рдкрд░ FastAPI рдЖрдзрд╛рд░рд┐рдд рд╣реИред
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдПрдХ automatic API documentation web user interface рд╣реЛред
///
Flask
Flask рдПрдХ "microframework" рд╣реИ, рдЗрд╕рдореЗрдВ database integrations рдпрд╛ Django рдореЗрдВ default рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдИ рдЪреАрдЬрд╝реЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред
рдпрд╣ simplicity рдФрд░ flexibility рдореБрдЦреНрдп data storage system рдХреЗ рд░реВрдк рдореЗрдВ NoSQL databases рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬрд╝реЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕реЗ рд╕реАрдЦрдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╣рдЬ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ documentation рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдереЛрдбрд╝рд╛ technical рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЙрди рдЕрдиреНрдп applications рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ database, user management, рдпрд╛ Django рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ built-in рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ features рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ features plug-ins рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Parts рдХрд╛ рдпрд╣ decoupling, рдФрд░ рдПрдХ "microframework" рд╣реЛрдирд╛ рдЬрд┐рд╕реЗ рдареАрдХ рд╡рд╣реА рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП extend рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ key feature рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
Flask рдХреА simplicity рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ APIs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ match рд▓рдЧрд╛ред рдЕрдЧрд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдЦреЛрдЬрдиреА рдереА рд╡рд╣ Flask рдХреЗ рд▓рд┐рдП рдПрдХ "Django REST Framework" рдерд╛ред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдПрдХ micro-framework рд╣реЛред рдЖрд╡рд╢реНрдпрдХ tools рдФрд░ parts рдХреЛ mix and match рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдПрдХ simple рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди routing system рд╣реЛред
///
Requests
FastAPI рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Requests рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдХрд╛ scope рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ FastAPI application рдХреЗ рдЕрдВрджрд░ Requests рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдд рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, FastAPI рдХреЛ Requests рд╕реЗ рдХрд╛рдлреА рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реАред
Requests APIs рдХреЗ рд╕рд╛рде interact рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (client рдХреЗ рд░реВрдк рдореЗрдВ) рдПрдХ library рд╣реИ, рдЬрдмрдХрд┐ FastAPI APIs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (server рдХреЗ рд░реВрдк рдореЗрдВ) рдПрдХ library рд╣реИред
рд╡реЗ рдХрдореЛрдмреЗрд╢ рд╡рд┐рдкрд░реАрдд рд╕рд┐рд░реЛрдВ рдкрд░ рд╣реИрдВ, рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реБрдПред
Requests рдХрд╛ design рдмрд╣реБрдд simple рдФрд░ intuitive рд╣реИ, sensible defaults рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдпрд╣ рдмрд╣реБрдд powerful рдФрд░ customizable рд╣реИред
рдЗрд╕реАрд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ official website рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:
Requests рдЕрдм рддрдХ рдХреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ downloaded Python packages рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ
рдЖрдк рдЗрд╕реЗ рдЬрд┐рд╕ рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GET request рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд┐рдЦреЗрдВрдЧреЗ:
response = requests.get("http://example.com/some/url")
FastAPI рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдордХрдХреНрд╖ API path operation рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
@app.get("/some/url")
def read_url():
return {"message": "Hello World"}
requests.get(...) рдФрд░ @app.get(...) рдореЗрдВ рд╕рдорд╛рдирддрд╛рдПрдБ рджреЗрдЦреЗрдВред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
- рдПрдХ simple рдФрд░ intuitive API рд╣реЛред
- HTTP method names (operations) рдХреЛ рд╕реАрдзреЗ, straightforward рдФрд░ intuitive рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
- sensible defaults рд╣реЛрдВ, рд▓реЗрдХрд┐рди powerful customizations рднреА рд╣реЛрдВред
///
Swagger / OpenAPI
Django REST Framework рд╕реЗ рдЬреЛ рдореБрдЦреНрдп feature рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рд╡рд╣ automatic API documentation рдерд╛ред
рдлрд┐рд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ APIs рдХреЛ document рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSON (рдпрд╛ YAML, JSON рдХрд╛ рдПрдХ extension) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ standard рдерд╛, рдЬрд┐рд╕реЗ Swagger рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред
рдФрд░ Swagger APIs рдХреЗ рд▓рд┐рдП рдПрдХ web user interface рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА API рдХреЗ рд▓рд┐рдП Swagger documentation generate рдХрд░ рдкрд╛рдирд╛ рдЗрд╕ web user interface рдХрд╛ automatically рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ред
рдПрдХ рд╕рдордп рдкрд░, Swagger рдХреЛ Linux Foundation рдХреЛ рджреЗ рджрд┐рдпрд╛ рдЧрдпрд╛, рддрд╛рдХрд┐ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ OpenAPI рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред
рдЗрд╕реАрд▓рд┐рдП version 2.0 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╕рдордп "Swagger" рдХрд╣рдирд╛ рдЖрдо рд╣реИ, рдФрд░ version 3+ рдХреЗ рд▓рд┐рдП "OpenAPI"ред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
Custom schema рдХреЗ рдмрдЬрд╛рдп API specifications рдХреЗ рд▓рд┐рдП рдПрдХ open standard рдЕрдкрдирд╛рдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдФрд░ standards-based user interface tools рдХреЛ integrate рдХрд┐рдпрд╛ рдЬрд╛рдП:
рдЗрди рджреЛрдиреЛрдВ рдХреЛ рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдХрд╛рдлреА popular рдФрд░ stable рдереЗ, рд▓реЗрдХрд┐рди рдПрдХ quick search рдХрд░рдиреЗ рдкрд░, рдЖрдк OpenAPI рдХреЗ рд▓рд┐рдП рджрд░реНрдЬрдиреЛрдВ alternative user interfaces рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк FastAPI рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
///
Flask REST frameworks
рдХрдИ Flask REST frameworks рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдЬрд╛рдБрдЪ рдореЗрдВ рд╕рдордп рдФрд░ рдХрд╛рдо рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХрдИ discontinue рдпрд╛ abandon рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рдХрдИ unresolved issues рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдкрдпреБрдХреНрдд рдмрдирд╛ рджрд┐рдпрд╛ред
Marshmallow
API systems рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдореБрдЦреНрдп features рдореЗрдВ рд╕реЗ рдПрдХ data "serialization" рд╣реИ, рдЬрд┐рд╕рдореЗрдВ code (Python) рд╕реЗ data рд▓реЗрдХрд░ рдЙрд╕реЗ рдРрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ network рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, database рд╕реЗ data рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ object рдХреЛ JSON object рдореЗрдВ рдмрджрд▓рдирд╛ред datetime objects рдХреЛ strings рдореЗрдВ рдмрджрд▓рдирд╛, рдЖрджрд┐ред
APIs рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдПрдХ рдФрд░ рдмрдбрд╝рд╛ feature data validation рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ data рдирд┐рд╢реНрдЪрд┐рдд parameters рдХреЗ рдЕрдиреБрд╕рд╛рд░ valid рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ field int рд╣реИ, рдХреЛрдИ random string рдирд╣реАрдВред рдпрд╣ incoming data рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред
Data validation system рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рд╕рднреА checks рд╣рд╛рде рд╕реЗ, code рдореЗрдВ рдХрд░рдиреЗ рдкрдбрд╝рддреЗред
рдпреЗ features рд╡рд╣реА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Marshmallow рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди library рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕реЗ Python type hints рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рд░ schema рдХреЛ define рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Marshmallow рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП specific utils рдФрд░ classes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
"schemas" рдХреЛ define рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ data types рдФрд░ validation, automatically рдкреНрд░рджрд╛рди рдХрд░реЗред
///
Webargs
APIs рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдПрдХ рдФрд░ рдмрдбрд╝рд╛ feature incoming requests рд╕реЗ data parsing рдХрд░рдирд╛ рд╣реИред
Webargs рдПрдХ tool рд╣реИ рдЬрд┐рд╕реЗ Flask рд╕рд╣рд┐рдд рдХрдИ frameworks рдХреЗ рдКрдкрд░ рдпрд╣ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ data validation рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ Marshmallow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕реЗ рдЙрдиреНрд╣реАрдВ developers рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред
рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди tool рд╣реИ рдФрд░ FastAPI рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рднреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
/// note | рдиреЛрдЯ
Webargs рдХреЛ рдЙрдиреНрд╣реАрдВ Marshmallow developers рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
Incoming request data рдХрд╛ automatic validation рд╣реЛред
///
APISpec
Marshmallow рдФрд░ Webargs plug-ins рдХреЗ рд░реВрдк рдореЗрдВ validation, parsing рдФрд░ serialization рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди documentation рдЕрднреА рднреА missing рд╣реИред рдлрд┐рд░ APISpec рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред
рдпрд╣ рдХрдИ frameworks рдХреЗ рд▓рд┐рдП рдПрдХ plug-in рд╣реИ (рдФрд░ Starlette рдХреЗ рд▓рд┐рдП рднреА рдПрдХ plug-in рд╣реИ)ред
рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк route handle рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ function рдХреА docstring рдХреЗ рдЕрдВрджрд░ YAML format рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ schema рдХреА definition рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдФрд░ рдпрд╣ OpenAPI schemas generate рдХрд░рддрд╛ рд╣реИред
Flask, Starlette, Responder, рдЖрджрд┐ рдореЗрдВ рдпрд╣ рдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ Python string (рдПрдХ рдмрдбрд╝рд╛ YAML) рдХреЗ рдЕрдВрджрд░ micro-syntax рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
Editor рдЗрд╕рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдФрд░ рдЕрдЧрд░ рд╣рдо parameters рдпрд╛ Marshmallow schemas modify рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ YAML docstring рдХреЛ рднреА modify рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ generated schema obsolete рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
/// note | рдиреЛрдЯ
APISpec рдХреЛ рдЙрдиреНрд╣реАрдВ Marshmallow developers рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
APIs рдХреЗ рд▓рд┐рдП open standard, OpenAPI рдХреЛ support рдХрд┐рдпрд╛ рдЬрд╛рдПред
///
Flask-apispec
рдпрд╣ рдПрдХ Flask plug-in рд╣реИ, рдЬреЛ Webargs, Marshmallow рдФрд░ APISpec рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдпрд╣ APISpec рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ OpenAPI schemas automatically generate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Webargs рдФрд░ Marshmallow рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди tool рд╣реИ, рдмрд╣реБрдд underratedред рдЗрд╕реЗ рд╡рд╣рд╛рдБ рдореМрдЬреВрдж рдХрдИ Flask plug-ins рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ popular рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╢рд╛рдпрдж рдЗрд╕рдХреА documentation рдХреЗ рдмрд╣реБрдд concise рдФрд░ abstract рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдиреЗ Python docstrings рдХреЗ рдЕрдВрджрд░ YAML (рдПрдХ рдФрд░ syntax) рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ред
Flask, Flask-apispec рдХреЛ Marshmallow рдФрд░ Webargs рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдХрд░ рдпрд╣ combination FastAPI рдмрдирд╛рдиреЗ рддрдХ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ backend stack рдерд╛ред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрдИ Flask full-stack generators рдмрдиреЗред рдпреЗ рд╡реЗ main stacks рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ (рдФрд░ рдХрдИ external teams) рдЕрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
- https://github.com/tiangolo/full-stack
- https://github.com/tiangolo/full-stack-flask-couchbase
- https://github.com/tiangolo/full-stack-flask-couchdb
рдФрд░ рдпрд╣реА full-stack generators FastAPI Project Generators рдХрд╛ base рдереЗред
/// note | рдиреЛрдЯ
Flask-apispec рдХреЛ рдЙрдиреНрд╣реАрдВ Marshmallow developers рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
OpenAPI schema рдХреЛ automatically generate рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЙрд╕реА code рд╕реЗ рдЬреЛ serialization рдФрд░ validation define рдХрд░рддрд╛ рд╣реИред
///
NestJS (рдФрд░ Angular)
рдпрд╣ Python рднреА рдирд╣реАрдВ рд╣реИ, NestJS Angular рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдПрдХ JavaScript (TypeScript) NodeJS framework рд╣реИред
рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ Flask-apispec рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рдо рдЬреИрд╕рд╛ рд╣реИред
рдЗрд╕рдореЗрдВ Angular 2 рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдПрдХ integrated dependency injection system рд╣реИред рдЗрд╕рдореЗрдВ "injectables" рдХреЛ pre-register рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЬреИрд╕реЗ рдореБрдЭреЗ рдЬреНрдЮрд╛рдд рд╕рднреА рдЕрдиреНрдп dependency injection systems рдореЗрдВ), рдЗрд╕рд▓рд┐рдП, рдпрд╣ verbosity рдФрд░ code repetition рдмрдврд╝рд╛рддрд╛ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ parameters рдХреЛ TypeScript types (Python type hints рдХреЗ рд╕рдорд╛рди) рдХреЗ рд╕рд╛рде describe рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, editor support рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ TypeScript data compilation рдХреЗ рдмрд╛рдж JavaScript рдореЗрдВ preserve рдирд╣реАрдВ рд░рд╣рддрд╛, рдпрд╣ validation, serialization рдФрд░ documentation рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдкрд░ define рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП types рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдФрд░ рдХреБрдЫ design decisions рдХреЗ рдХрд╛рд░рдг, validation, serialization рдФрд░ automatic schema generation рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдИ рдЬрдЧрд╣ decorators рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдХрд╛рдлреА verbose рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ nested models рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ handle рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ request рдореЗрдВ JSON body рдПрдХ JSON object рд╣реИ рдЬрд┐рд╕рдореЗрдВ inner fields рд╣реИрдВ рдЬреЛ рдЦреБрдж nested JSON objects рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдареАрдХ рд╕реЗ document рдФрд░ validate рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдмреЗрд╣рддрд░реАрди editor support рдХреЗ рд▓рд┐рдП Python types рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдПрдХ powerful dependency injection system рд╣реЛред Code repetition рдХреЛ minimize рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рдЬрд╛рдПред
///
Sanic
рдпрд╣ asyncio рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд╣рд▓реЗ рдмреЗрд╣рдж рддреЗрдЬрд╝ Python frameworks рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ред рдЗрд╕реЗ Flask рдХреЗ рдмрд╣реБрдд рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
/// note | рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
рдЗрд╕рдиреЗ default Python asyncio loop рдХреЗ рдмрдЬрд╛рдп uvloop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣реА рдЗрд╕реЗ рдЗрддрдирд╛ рддреЗрдЬрд╝ рдмрдирд╛рддрд╛ рдерд╛ред
рдЗрд╕рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ Uvicorn рдФрд░ Starlette рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ open benchmarks рдореЗрдВ Sanic рд╕реЗ рддреЗрдЬрд╝ рд╣реИрдВред
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдмреЗрд╣рдж рддреЗрдЬрд╝ performance рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рдЬрд╛рдПред
рдЗрд╕реАрд▓рд┐рдП FastAPI Starlette рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рддреЗрдЬрд╝ framework рд╣реИ (third-party benchmarks рджреНрд╡рд╛рд░рд╛ tested)ред
///
Falcon
Falcon рдПрдХ рдФрд░ high performance Python framework рд╣реИ, рдЗрд╕реЗ minimal рд╣реЛрдиреЗ рдФрд░ Hug рдЬреИрд╕реЗ рдЕрдиреНрдп frameworks рдХреА foundation рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП design рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕реЗ рдРрд╕реА functions рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП design рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рджреЛ parameters receive рдХрд░рддреА рд╣реИрдВ, рдПрдХ "request" рдФрд░ рдПрдХ "response"ред рдлрд┐рд░ рдЖрдк request рд╕реЗ parts "read" рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ response рдореЗрдВ parts "write" рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ design рдХреЗ рдХрд╛рд░рдг, standard Python type hints рдХреЗ рд╕рд╛рде function parameters рдХреЗ рд░реВрдк рдореЗрдВ request parameters рдФрд░ bodies declare рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, data validation, serialization, рдФрд░ documentation рдХреЛ code рдореЗрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, automatically рдирд╣реАрдВред рдпрд╛ рдЙрдиреНрд╣реЗрдВ Falcon рдХреЗ рдКрдкрд░ рдПрдХ framework рдХреЗ рд░реВрдк рдореЗрдВ implement рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ Hugред рдпрд╣реА рдЕрдВрддрд░ рдЙрди рдЕрдиреНрдп frameworks рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ Falcon рдХреЗ design рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИрдВ, рдЬрд╣рд╛рдБ parameters рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ request object рдФрд░ рдПрдХ response object рд╣реЛрддрд╛ рд╣реИред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдмреЗрд╣рддрд░реАрди performance рдкрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬреЗ рдЬрд╛рдПрдБред
Hug рдХреЗ рд╕рд╛рде (рдХреНрдпреЛрдВрдХрд┐ Hug Falcon рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдЗрд╕рдиреЗ FastAPI рдХреЛ functions рдореЗрдВ response parameter declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ FastAPI рдореЗрдВ рдпрд╣ optional рд╣реИ, рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ headers, cookies, рдФрд░ alternative status codes set рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
///
Molten
рдореИрдВрдиреЗ FastAPI рдмрдирд╛рдиреЗ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ Molten рдЦреЛрдЬрд╛ред рдФрд░ рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ:
- Python type hints рдкрд░ рдЖрдзрд╛рд░рд┐рддред
- рдЗрди types рд╕реЗ validation рдФрд░ documentationред
- Dependency Injection systemред
рдпрд╣ Pydantic рдЬреИрд╕реА data validation, serialization рдФрд░ documentation third-party library рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рдХреА рдЕрдкрдиреА library рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпреЗ data type definitions рдЙрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ reusable рдирд╣реАрдВ рд╣реЛрдВрдЧреАред
рдЗрд╕реЗ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ verbose configurations рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ WSGI (ASGI рдХреЗ рдмрдЬрд╛рдп) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕реЗ Uvicorn, Starlette рдФрд░ Sanic рдЬреИрд╕реЗ tools рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП high performance рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП design рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Dependency injection system рдХреЛ dependencies рдХреА pre-registration рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ dependencies declared types рдХреЗ рдЖрдзрд╛рд░ рдкрд░ solve рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд type рдХреЛ provide рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ "component" declare рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
Routes рдПрдХ рд╣реА рдЬрдЧрд╣ declare рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░реА рдЬрдЧрд╣реЛрдВ рдкрд░ declared functions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (decorators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬрд┐рдиреНрд╣реЗрдВ endpoint handle рдХрд░рдиреЗ рд╡рд╛рд▓реА function рдХреЗ рдареАрдХ рдКрдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдпрд╣ Flask (рдФрд░ Starlette) рдХреЗ рддрд░реАрдХреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ Django рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдЕрдзрд┐рдХ рдХрд░реАрдм рд╣реИред рдпрд╣ code рдореЗрдВ рдЙрди рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд tightly coupled рд╣реИрдВред
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
Model attributes рдХреЗ "default" value рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ data types рдХреЗ рд▓рд┐рдП extra validations define рдХрд┐рдП рдЬрд╛рдПрдБред рдпрд╣ editor support рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ Pydantic рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛ред
рдЗрд╕рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Pydantic рдХреЗ parts рдХреЛ update рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рд╡рд╣реА validation declaration style support рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдпрд╣ рд╕рд╛рд░реА functionality рдЕрдм Pydantic рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ)ред
///
Hug
Hug рдЙрди рдкрд╣рд▓реЗ frameworks рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬрд┐рд╕рдиреЗ Python type hints рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ API parameter types рдХреА declaration implement рдХреАред рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди рд╡рд┐рдЪрд╛рд░ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдиреНрдп tools рдХреЛ рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
рдЗрд╕рдиреЗ рдЕрдкрдиреА declarations рдореЗрдВ standard Python types рдХреЗ рдмрдЬрд╛рдп custom types рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХрджрдо рдЖрдЧреЗ рдерд╛ред
рдпрд╣ рдкреВрд░реЗ API рдХреЛ JSON рдореЗрдВ declare рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ custom schema generate рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ frameworks рдореЗрдВ рд╕реЗ рднреА рдПрдХ рдерд╛ред
рдпрд╣ OpenAPI рдФрд░ JSON Schema рдЬреИрд╕реЗ standard рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ Swagger UI рдЬреИрд╕реЗ рдЕрдиреНрдп tools рдХреЗ рд╕рд╛рде integrate рдХрд░рдирд╛ straightforward рдирд╣реАрдВ рд╣реЛрддрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдПрдХ рдмрд╣реБрдд innovative idea рдерд╛ред
рдЗрд╕рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк, uncommon feature рд╣реИ: рдЙрд╕реА framework рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ APIs рдФрд░ CLIs рднреА рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ synchronous Python web frameworks (WSGI) рдХреЗ рдкрд┐рдЫрд▓реЗ standard рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдпрд╣ Websockets рдФрд░ рдЕрдиреНрдп рдЪреАрдЬрд╝реЛрдВ рдХреЛ handle рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ performance рднреА high рд╣реИред
/// note | рдиреЛрдЯ
Hug рдХреЛ Timothy Crosley рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛, рд╡рд╣реА isort рдХреЗ creator рд╣реИрдВ, рдЬреЛ Python files рдореЗрдВ imports рдХреЛ automatically sort рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди tool рд╣реИред
///
/// tip | FastAPI рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЪрд╛рд░
Hug рдиреЗ APIStar рдХреЗ parts рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдФрд░ APIStar рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдпрд╣ рдЙрди tools рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬреЛ рдореБрдЭреЗ рд╕рдмрд╕реЗ promising рд▓рдЧреЗред
Hug рдиреЗ FastAPI рдХреЛ parameters declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Python type hints рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ, рдФрд░ API рдХреЛ automatically define рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ schema generate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
Hug рдиреЗ FastAPI рдХреЛ headers рдФрд░ cookies set рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП functions рдореЗрдВ response parameter declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред
///
APIStar (<= 0.5)
FastAPI рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдореБрдЭреЗ APIStar server рдорд┐рд▓рд╛ред рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╡рд╣ рд╕рдм рдХреБрдЫ рдерд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рддрд▓рд╛рд╢ рдереА рдФрд░ рдЗрд╕рдХрд╛ design рдмреЗрд╣рддрд░реАрди рдерд╛ред
рдпрд╣ рдЙрди рдкрд╣рд▓реЗ implementations рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬреЛ рдореИрдВрдиреЗ рдХрднреА рджреЗрдЦреЗ, рдЬрд┐рд╕рдореЗрдВ parameters рдФрд░ requests declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Python type hints рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ framework рдерд╛ (NestJS рдФрд░ Molten рд╕реЗ рдкрд╣рд▓реЗ)ред рдореБрдЭреЗ рдпрд╣ Hug рдХреЗ рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп рдорд┐рд▓рд╛ред рд▓реЗрдХрд┐рди APIStar рдиреЗ OpenAPI standard рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЗрд╕рдореЗрдВ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЙрдиреНрд╣реАрдВ type hints рдХреЗ рдЖрдзрд╛рд░ рдкрд░ automatic data validation, data serialization рдФрд░ OpenAPI schema generation рдерд╛ред
Body schema definitions Pydantic рдЬреИрд╕реЗ Python type hints рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рдереАрдВ, рдпрд╣ Marshmallow рдХреЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдорд╛рди рдерд╛, рдЗрд╕рд▓рд┐рдП editor support рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, APIStar рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛ред
рдЙрд╕ рд╕рдордп рдЗрд╕рдХреЗ performance benchmarks рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдереЗ (рд╕рд┐рд░реНрдл Starlette рдиреЗ surpass рдХрд┐рдпрд╛ рдерд╛)ред
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЗрд╕рдореЗрдВ automatic API documentation web UI рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ Swagger UI рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдБред
рдЗрд╕рдореЗрдВ dependency injection system рдерд╛ред рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдЕрдиреНрдп tools рдХреА рддрд░рд╣, рдЗрд╕рдореЗрдВ components рдХреА pre-registration рдЖрд╡рд╢реНрдпрдХ рдереАред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░реАрди feature рдерд╛ред
рдореИрдВ рдХрднреА рднреА рдЗрд╕реЗ full project рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ security integration рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ Flask-apispec рдкрд░ рдЖрдзрд╛рд░рд┐рдд full-stack generators рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╕рднреА features рдХреЛ replace рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореЗрд░реЗ projects backlog рдореЗрдВ рдЙрд╕ functionality рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ pull request рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред
рд▓реЗрдХрд┐рди рдлрд┐рд░, project рдХрд╛ focus shift рд╣реЛ рдЧрдпрд╛ред
рдпрд╣ рдЕрдм API web framework рдирд╣реАрдВ рд░рд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ creator рдХреЛ Starlette рдкрд░ focus рдХрд░рдирд╛ рдерд╛ред
рдЕрдм APIStar OpenAPI specifications validate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tools рдХрд╛ рдПрдХ set рд╣реИ, web framework рдирд╣реАрдВред
/// note | рдиреЛрдЯ
APIStar рдХреЛ Tom Christie рдиреЗ рдмрдирд╛рдпрд╛ рдерд╛ред рд╡рд╣реА рд╡реНрдпрдХреНрддрд┐ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдмрдирд╛рдпрд╛:
- Django REST Framework
- Starlette (рдЬрд┐рд╕ рдкрд░ FastAPI рдЖрдзрд╛рд░рд┐рдд рд╣реИ)
- Uvicorn (Starlette рдФрд░ FastAPI рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
///
/// tip | FastAPI рдХреЛ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдорд┐рд▓реА рдХрд┐
рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдПред
рдПрдХ рд╣реА Python types рдХреЗ рд╕рд╛рде рдХрдИ рдЪреАрдЬрд╝реЗрдВ (data validation, serialization рдФрд░ documentation) declare рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░, рдЬреЛ рд╕рд╛рде рд╣реА рдмреЗрд╣рддрд░реАрди editor support рднреА рджреЗрддрд╛ рдерд╛, рдореБрдЭреЗ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдЪрд╛рд░ рд▓рдЧрд╛ред
рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдорд╛рди framework рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ alternatives рдХреЛ test рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, APIStar рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛ред
рдлрд┐рд░ APIStar рдиреЗ server рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд░рд╣рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ Starlette рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдФрд░ рдпрд╣ рдРрд╕реЗ system рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдмреЗрд╣рддрд░ foundation рдерд╛ред рдпрд╣реА FastAPI рдмрдирд╛рдиреЗ рдХреА рдЕрдВрддрд┐рдо рдкреНрд░реЗрд░рдгрд╛ рдереАред
рдореИрдВ FastAPI рдХреЛ APIStar рдХрд╛ "spiritual successor" рдорд╛рдирддрд╛ рд╣реВрдБ, рдЬреЛ рдЗрди рд╕рднреА рдкрд┐рдЫрд▓реЗ tools рд╕реЗ рдорд┐рд▓реА рд╕реАрдЦ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ features, typing system, рдФрд░ рдЕрдиреНрдп parts рдХреЛ improve рдФрд░ increase рдХрд░рддрд╛ рд╣реИред
///
FastAPI рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛
Pydantic
Pydantic Python type hints рдХреЗ рдЖрдзрд╛рд░ рдкрд░ data validation, serialization рдФрд░ documentation (JSON Schema рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) define рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ library рд╣реИред
рдпрд╣ рдЗрд╕реЗ рдмреЗрд╣рдж intuitive рдмрдирд╛рддрд╛ рд╣реИред
рдпрд╣ Marshmallow рд╕реЗ comparable рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ benchmarks рдореЗрдВ рдпрд╣ Marshmallow рд╕реЗ рддреЗрдЬрд╝ рд╣реИред рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдиреНрд╣реАрдВ Python type hints рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, editor support рдмреЗрд╣рддрд░реАрди рд╣реИред
/// tip | FastAPI рдЗрд╕реЗ рдЗрди рдХрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рд╕рднреА data validation, data serialization рдФрд░ automatic model documentation (JSON Schema рдкрд░ рдЖрдзрд╛рд░рд┐рдд) handle рдХрд░рдирд╛ред
рдлрд┐рд░ FastAPI рдЙрд╕ JSON Schema data рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ OpenAPI рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЙрди рд╕рднреА рдЕрдиреНрдп рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдпрд╣ рдХрд░рддрд╛ рд╣реИред
///
Starlette
Starlette рдПрдХ lightweight ASGI framework/toolkit рд╣реИ, рдЬреЛ high-performance asyncio services рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП ideal рд╣реИред
рдпрд╣ рдмрд╣реБрдд simple рдФрд░ intuitive рд╣реИред рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ extensible рд╣реЛрдиреЗ рдФрд░ modular components рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП design рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдореЗрдВ рд╣реИ:
- рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА performance.
- WebSocket support.
- In-process background tasks.
- Startup рдФрд░ shutdown events.
- HTTPX рдкрд░ built test client.
- CORS, GZip, Static Files, Streaming responses.
- Session рдФрд░ Cookie support.
- 100% test coverage.
- 100% type annotated codebase.
- рдХреБрдЫ hard dependencies.
Starlette рд╡рд░реНрддрдорд╛рди рдореЗрдВ tested рд╕рдмрд╕реЗ рддреЗрдЬрд╝ Python framework рд╣реИред рдХреЗрд╡рд▓ Uvicorn рдиреЗ рдЗрд╕реЗ surpass рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ framework рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ server рд╣реИред
Starlette рд╕рднреА basic web microframework functionality рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ automatic data validation, serialization рдпрд╛ documentation рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ред
рдпрд╣ рдЙрди рдореБрдЦреНрдп рдЪреАрдЬрд╝реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ FastAPI рдКрдкрд░ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд╕рдм Python type hints (Pydantic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдкрд░ рдЖрдзрд╛рд░рд┐рддред рдЗрд╕рдХреЗ рд╕рд╛рде dependency injection system, security utilities, OpenAPI schema generation, рдЖрджрд┐ред
/// note | рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
ASGI рдПрдХ рдирдпрд╛ "standard" рд╣реИ рдЬрд┐рд╕реЗ Django core team members рджреНрд╡рд╛рд░рд╛ develop рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА "Python standard" (рдПрдХ PEP) рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВред
рдлрд┐рд░ рднреА, рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ tools рджреНрд╡рд╛рд░рд╛ "standard" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ interoperability рдХреЛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк Uvicorn рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп ASGI server (рдЬреИрд╕реЗ Daphne рдпрд╛ Hypercorn) рд╕реЗ switch рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк ASGI compatible tools, рдЬреИрд╕реЗ python-socketio, рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
///
/// tip | FastAPI рдЗрд╕реЗ рдЗрди рдХрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рд╕рднреА core web parts рдХреЛ handle рдХрд░рдирд╛ред рдКрдкрд░ рд╕реЗ features рдЬреЛрдбрд╝рдирд╛ред
Class FastAPI рдЦреБрдж рд╕реАрдзреЗ class Starlette рд╕реЗ inherit рдХрд░рддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬреЛ рдХреБрдЫ рднреА рдЖрдк Starlette рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдЖрдк рд╕реАрдзреЗ FastAPI рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ steroids рдкрд░ Starlette рд╣реИред
///
Uvicorn
Uvicorn рдПрдХ lightning-fast ASGI server рд╣реИ, рдЬреЛ uvloop рдФрд░ httptools рдкрд░ рдмрдирд╛ рд╣реИред
рдпрд╣ web framework рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ server рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ paths рджреНрд╡рд╛рд░рд╛ routing рдХреЗ рд▓рд┐рдП tools рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣ рдРрд╕реА рдЪреАрдЬрд╝ рд╣реИ рдЬреЛ Starlette (рдпрд╛ FastAPI) рдЬреИрд╕рд╛ framework рдКрдкрд░ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
рдпрд╣ Starlette рдФрд░ FastAPI рдХреЗ рд▓рд┐рдП recommended server рд╣реИред
/// tip | FastAPI рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ
FastAPI applications рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП main web serverред
рдЖрдк asynchronous multi-process server рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП --workers command line option рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг Deployment section рдореЗрдВ рджреЗрдЦреЗрдВред
///
Benchmarks рдФрд░ speed
Uvicorn, Starlette рдФрд░ FastAPI рдХреЗ рдмреАрдЪ рд╕рдордЭрдиреЗ, рддреБрд▓рдирд╛ рдХрд░рдиреЗ, рдФрд░ рдЕрдВрддрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, Benchmarks рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ section рджреЗрдЦреЗрдВред