From: whysage <67018871+whysage@users.noreply.github.com>
Date: Sat, 2 Sep 2023 15:32:30 +0000 (+0300)
Subject: 🌐 Add Ukrainian translation for `docs/uk/docs/alternatives.md` (#10060)
X-Git-Tag: 0.103.1~27
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad76dd1aa806fb62ad64a2b5c14fe00393ed2589;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Add Ukrainian translation for `docs/uk/docs/alternatives.md` (#10060)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
---
diff --git a/docs/uk/docs/alternatives.md b/docs/uk/docs/alternatives.md
new file mode 100644
index 0000000000..e712579769
--- /dev/null
+++ b/docs/uk/docs/alternatives.md
@@ -0,0 +1,412 @@
+# ÐлÑÑеÑнаÑиви, наÑÑ
Ð½ÐµÐ½Ð½Ñ Ñа поÑÑвнÑннÑ
+
+Що надиÑ
нÑло на ÑÑвоÑÐµÐ½Ð½Ñ **FastAPI**, Ñкий вÑн Ñ Ð¿Ð¾ÑÑнÑÐ½Ð½Ñ Ð· ÑнÑими алÑÑеÑнаÑивами Ñа Ñого вÑн Ñ Ð½Ð¸Ñ
навÑивÑÑ.
+
+## ÐÑÑÑп
+
+**FastAPI** не ÑÑнÑвало б, Ñкби не попеÑÐµÐ´Ð½Ñ ÑобоÑи ÑнÑиÑ
.
+
+РанÑÑе бÑло ÑÑвоÑено багаÑо ÑнÑÑÑÑменÑÑв, ÑÐºÑ Ð½Ð°Ð´Ð¸Ñ
нÑли на його ÑÑвоÑеннÑ.
+
+Я кÑлÑка ÑокÑв Ñникав ÑÑвоÑÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑеймвоÑкÑ. СпоÑаÑÐºÑ Ñ ÑпÑобÑвав виÑÑÑиÑи вÑÑ ÑÑнкÑÑÑ, оÑ
Ð¾Ð¿Ð»ÐµÐ½Ñ **FastAPI**, викоÑиÑÑовÑÑÑи багаÑо ÑÑзниÑ
ÑÑеймвоÑкÑв, плагÑнÑв Ñа ÑнÑÑÑÑменÑÑв.
+
+Ðле в ÑкийÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½Ðµ бÑло ÑнÑого виÑ
одÑ, окÑÑм ÑÑвоÑÐµÐ½Ð½Ñ ÑогоÑÑ, Ñо надавало б ÑÑÑ ÑÑ ÑÑнкÑÑÑ, взÑвÑи найкÑаÑÑ ÑÐ´ÐµÑ Ð· попеÑеднÑÑ
ÑнÑÑÑÑменÑÑв Ñ Ð¿Ð¾ÑднавÑи ÑÑ
найкÑаÑим Ñином, викоÑиÑÑовÑÑÑи Ð¼Ð¾Ð²Ð½Ñ ÑÑнкÑÑÑ, ÑÐºÑ Ð½Ð°Ð²ÑÑÑ Ð½Ðµ бÑли доÑÑÑÐ¿Ð½Ñ ÑанÑÑе (Python 3.6+ пÑдказки ÑипÑв).
+
+## ÐопеÑÐµÐ´Ð½Ñ ÑнÑÑÑÑменÑи
+
+### Django
+
+Це найпопÑлÑÑнÑÑий ÑÑеймвоÑк Python, Ñкий коÑиÑÑÑÑÑÑÑÑ ÑиÑÐ¾ÐºÐ¾Ñ Ð´Ð¾Ð²ÑÑоÑ. ÐÑн викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ ÑакиÑ
ÑиÑÑем, Ñк Instagram.
+
+ÐÑн вÑдноÑно ÑÑÑно повâÑзаний з ÑелÑÑÑйними базами даниÑ
(напÑиклад, MySQL або PostgreSQL), ÑÐ¾Ð¼Ñ Ð¼Ð°Ñи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð¸Ñ
NoSQL (напÑиклад, Couchbase, MongoDB, Cassandra ÑоÑо) Ñк оÑновний меÑ
анÑзм збеÑÑÐ³Ð°Ð½Ð½Ñ Ð½Ðµ дÑже пÑоÑÑо.
+
+ÐÑн бÑв ÑÑвоÑений Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ HTML Ñ ÑеÑвеÑнÑй ÑаÑÑинÑ, а не Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ API, ÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ ÑÑÑаÑним ÑнÑеÑÑейÑом (Ñк-Ð¾Ñ React, Vue.js Ñ Angular) або ÑнÑими ÑиÑÑемами (Ñк-Ð¾Ñ IoT пÑиÑÑÑоÑ), ÑÐºÑ ÑпÑлкÑÑÑÑÑÑ Ð· ним.
+
+### Django REST Framework
+
+ФÑеймвоÑк Django REST бÑв ÑÑвоÑений Ñк гнÑÑкий ÑнÑÑÑÑменÑаÑÑй Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ð²ÐµÐ±-ÑнÑеÑÑейÑÑв API викоÑиÑÑовÑÑÑи Django в оÑновÑ, Ñоб покÑаÑиÑи його можливоÑÑÑ API.
+
+Ðого викоÑиÑÑовÑÑÑÑ Ð±Ð°Ð³Ð°Ñо компанÑй, вклÑÑаÑÑи Mozilla, Red Hat Ñ Eventbrite.
+
+Це бÑв один Ñз пеÑÑиÑ
пÑикладÑв **авÑомаÑиÑÐ½Ð¾Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ API**, Ñ Ñаме Ñе бÑла одна з пеÑÑиÑ
Ñдей, Ñка надиÑ
нÑла на «поÑÑк» **FastAPI**.
+
+!!! ÐÑимÑÑка
+ Django REST Framework ÑÑвоÑив Том ÐÑÑÑÑÑ. Той Ñамий ÑвоÑеÑÑ Starlette Ñ Uvicorn, на ÑкиÑ
базÑÑÑÑÑÑ **FastAPI**.
+
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐаÑи авÑомаÑиÑний веб-ÑнÑеÑÑÐµÐ¹Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ API.
+
+### Flask
+
+Flask â Ñе «мÑкÑоÑÑеймвоÑк», вÑн не вклÑÑÐ°Ñ ÑнÑегÑаÑÑÑ Ð±Ð°Ð·Ð¸ даниÑ
, а Ñакож багаÑо ÑеÑей, ÑÐºÑ Ð·Ð° замовÑÑваннÑм Ñ Ð² Django.
+
+Ð¦Ñ Ð¿ÑоÑÑоÑа Ñа гнÑÑкÑÑÑÑ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи бази даниÑ
NoSQL Ñк оÑÐ½Ð¾Ð²Ð½Ñ ÑиÑÑÐµÐ¼Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
.
+
+ÐÑкÑлÑки вÑн дÑже пÑоÑÑий, вÑн поÑÑвнÑно легкий Ñа ÑнÑÑÑÑивний Ð´Ð»Ñ Ð¾ÑвоÑннÑ, Ñ
оÑа в деÑкиÑ
моменÑаÑ
докÑменÑаÑÑÑ ÑÑÐ°Ñ Ð´ÐµÑо ÑеÑ
нÑÑноÑ.
+
+ÐÑн Ñакож зазвиÑай викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ ÑнÑиÑ
пÑогÑам, Ñким не обовâÑзково поÑÑÑбна база даниÑ
, кеÑÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑами або бÑдÑ-Ñка з багаÑÑоÑ
ÑÑнкÑÑй, ÑÐºÑ Ñ Ð¿Ð¾Ð¿ÐµÑеднÑо вбÑдованими в Django. ХоÑа багаÑо з ÑиÑ
ÑÑнкÑÑй можна додаÑи за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¿Ð»Ð°Ð³ÑнÑв.
+
+ÐÑдокÑÐµÐ¼Ð»ÐµÐ½Ð½Ñ ÑаÑÑин бÑло клÑÑÐ¾Ð²Ð¾Ñ Ð¾ÑобливÑÑÑÑ, ÑÐºÑ Ñ Ñ
оÑÑв збеÑегÑи, пÑи ÑÑÐ¾Ð¼Ñ Ð·Ð°Ð»Ð¸ÑаÑÑиÑÑ Â«Ð¼ÑкÑоÑÑеймвоÑком», Ñкий можна ÑозÑиÑиÑи, Ñоб оÑ
опиÑи Ñаме Ñе, Ñо поÑÑÑбно.
+
+ÐÑаÑ
овÑÑÑи пÑоÑÑоÑÑ Flask, вÑн здававÑÑ Ñ
оÑоÑим пÑдÑ
одом Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ API. ÐаÑÑÑпним, Ñо знайÑов, бÑв «Django REST Framework» Ð´Ð»Ñ Flask.
+
+!!! ÐеÑеглÑнÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐÑÑи мÑкÑоÑÑеймовоÑком. ÐÑобиÑи легким комбÑнÑÐ²Ð°Ð½Ð½Ñ Ñа поÑÐ´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¾Ð±Ñ
ÑдниÑ
ÑнÑÑÑÑменÑÑв Ñа ÑаÑÑин.
+
+ ÐаÑи пÑоÑÑÑ Ñа Ð»ÐµÐ³ÐºÑ Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ ÑиÑÑÐµÐ¼Ñ Ð¼Ð°ÑÑÑÑÑизаÑÑÑ.
+
+
+### Requests
+
+**FastAPI** наÑпÑÐ°Ð²Ð´Ñ Ð½Ðµ Ñ Ð°Ð»ÑÑеÑнаÑÐ¸Ð²Ð¾Ñ **Requests**. СÑеÑа ÑÑ
заÑÑоÑÑÐ²Ð°Ð½Ð½Ñ Ð´Ñже ÑÑзна.
+
+ÐаÑпÑÐ°Ð²Ð´Ñ ÑÑлком звиÑна ÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи Requests *вÑеÑединÑ* пÑогÑами FastAPI.
+
+Ðле вÑе ж FastAPI ÑеÑпав наÑÑ
Ð½ÐµÐ½Ð½Ñ Ð· Requests.
+
+**Requests** â Ñе бÑблÑоÑека Ð´Ð»Ñ *взаÑмодÑÑ* з API (Ñк клÑÑнÑ), а **FastAPI** â Ñе бÑблÑоÑека Ð´Ð»Ñ *ÑÑвоÑеннÑ* API (Ñк ÑеÑвеÑ).
+
+Ðони бÑлÑÑ-Ð¼ÐµÐ½Ñ Ð·Ð½Ð°Ñ
одÑÑÑÑÑ Ð½Ð° пÑоÑилежниÑ
кÑнÑÑÑ
, доповнÑÑÑи одна однÑ.
+
+Requests маÑÑÑ Ð´Ñже пÑоÑÑий Ñа ÑнÑÑÑÑивно зÑозÑмÑлий дизайн, дÑже пÑоÑÑий Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑаннÑ, з ÑозÑмними паÑамеÑÑами за замовÑÑваннÑм. Ðле в Ñой же ÑÐ°Ñ Ð²Ñн дÑже поÑÑжний Ñ Ð½Ð°Ð»Ð°ÑÑовÑÑÑÑÑÑ.
+
+ÐÑÑ ÑомÑ, Ñк Ñказано на оÑÑÑÑÐ¹Ð½Ð¾Ð¼Ñ ÑайÑÑ:
+
+> Requests Ñ Ð¾Ð´Ð½Ð¸Ð¼ Ñз найбÑлÑÑ Ð·Ð°Ð²Ð°Ð½ÑажÑваниÑ
пакеÑÑв Python ÑÑÑÑ
ÑаÑÑв
+
+ÐикоÑиÑÑовÑваÑи його дÑже пÑоÑÑо. ÐапÑиклад, Ñоб виконаÑи Ð·Ð°Ð¿Ð¸Ñ `GET`, ви Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð½Ð°Ð¿Ð¸ÑаÑи:
+
+```Python
+response = requests.get("http://example.com/some/url")
+```
+
+ÐÑдповÑдна опеÑаÑÑÑ *ÑоÑÑÑ* API FastAPI може виглÑдаÑи Ñак:
+
+```Python hl_lines="1"
+@app.get("/some/url")
+def read_url():
+ return {"message": "Hello World"}
+```
+
+ÐвеÑнÑÑÑ ÑÐ²Ð°Ð³Ñ Ð½Ð° ÑÑ
ожÑÑÑÑ Ñ `requests.get(...)` Ñ `@app.get(...)`.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ * ÐайÑе пÑоÑÑий Ñа ÑнÑÑÑÑивно зÑозÑмÑлий API.
+ * ÐикоÑиÑÑовÑйÑе Ñмена (опеÑаÑÑÑ) меÑодÑв HTTP безпоÑеÑеднÑо, пÑоÑÑим Ñа ÑнÑÑÑÑивно зÑозÑмÑлим ÑпоÑобом.
+ * РозÑÐ¼Ð½Ñ Ð¿Ð°ÑамеÑÑи за замовÑÑваннÑм, але поÑÑÐ¶Ð½Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑ.
+
+
+### Swagger / OpenAPI
+
+ÐÐ¾Ð»Ð¾Ð²Ð½Ð¾Ñ ÑÑнкÑÑÑÑ, ÑÐºÑ Ñ Ñ
оÑÑв вÑд Django REST Framework, бÑла авÑомаÑиÑна API докÑменÑаÑÑÑ.
+
+ÐоÑÑм Ñ Ð²Ð¸Ñвив, Ñо ÑÑнÑÑ ÑÑандаÑÑ Ð´Ð»Ñ Ð´Ð¾ÐºÑменÑÑÐ²Ð°Ð½Ð½Ñ API з викоÑиÑÑаннÑм JSON (або YAML, ÑозÑиÑÐµÐ½Ð½Ñ JSON) пÑд Ð½Ð°Ð·Ð²Ð¾Ñ Swagger.
+
+Рвже бÑв ÑÑвоÑений веб-ÑнÑеÑÑÐµÐ¹Ñ ÐºÐ¾ÑиÑÑÑваÑа Ð´Ð»Ñ Swagger API. ÐÑже, можливÑÑÑÑ Ð³ÐµÐ½ÐµÑÑваÑи докÑменÑаÑÑÑ Swagger Ð´Ð»Ñ API дозволиÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи Ñей веб-ÑнÑеÑÑÐµÐ¹Ñ Ð°Ð²ÑомаÑиÑно.
+
+У ÑкийÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ Swagger бÑло пеÑедано Linux Foundation, Ñоб пеÑейменÑваÑи його на OpenAPI.
+
+ТомÑ, коли говоÑÑÑÑ Ð¿Ñо веÑÑÑÑ 2.0, пÑийнÑÑо говоÑиÑи «Swagger», а пÑо веÑÑÑÑ 3+ «OpenAPI».
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐÑийнÑÑи Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи вÑдкÑиÑий ÑÑандаÑÑ Ð´Ð»Ñ ÑпеÑиÑÑкаÑÑй API замÑÑÑÑ ÑпеÑÑалÑÐ½Ð¾Ñ ÑÑ
еми.
+
+ ÐнÑегÑÑваÑи ÑнÑÑÑÑменÑи ÑнÑеÑÑейÑÑ Ð½Ð° оÑÐ½Ð¾Ð²Ñ ÑÑандаÑÑÑв:
+
+ * ÐнÑеÑÑÐµÐ¹Ñ Swagger
+ * ReDoc
+
+ Ð¦Ñ Ð´Ð²Ð° бÑло обÑано ÑеÑез Ñе, Ñо вони доÑиÑÑ Ð¿Ð¾Ð¿ÑлÑÑÐ½Ñ Ñа ÑÑабÑлÑнÑ, але, виконавÑи Ñвидкий поÑÑк, ви можеÑе знайÑи деÑÑÑки додаÑковиÑ
алÑÑеÑнаÑивниÑ
ÑнÑеÑÑейÑÑв Ð´Ð»Ñ OpenAPI (ÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð° викоÑиÑÑовÑваÑи з **FastAPI**).
+
+### ФÑеймвоÑки REST Ð´Ð»Ñ Flask
+
+ÐÑнÑÑ ÐºÑлÑка ÑÑеймвоÑкÑв Flask REST, але, виÑÑаÑивÑи ÑÐ°Ñ Ñ ÑобоÑÑ Ð½Ð° ÑÑ
доÑлÑдженнÑ, Ñ Ð²Ð¸Ñвив, Ñо багаÑо з ниÑ
пÑипинено або залиÑено, з кÑлÑкома поÑÑÑйними пÑоблемами, ÑÐºÑ Ð·Ñобили ÑÑ
непÑидаÑними.
+
+### Marshmallow
+
+ÐднÑÑÑ Ð· головниÑ
ÑÑнкÑÑй, необÑ
ÑдниÑ
Ð´Ð»Ñ ÑиÑÑем API, Ñ "ÑеÑÑалÑзаÑÑÑ", Ñка беÑе Ð´Ð°Ð½Ñ Ð· ÐºÐ¾Ð´Ñ (Python) Ñ Ð¿ÐµÑеÑвоÑÑÑ ÑÑ
на ÑоÑÑ, Ñо можна надÑÑлаÑи ÑеÑез меÑежÑ. ÐапÑиклад, пеÑеÑвоÑÐµÐ½Ð½Ñ Ð¾Ð±âÑкÑа, Ñо мÑÑÑиÑÑ Ð´Ð°Ð½Ñ Ð· бази даниÑ
, на обâÑÐºÑ JSON. ÐеÑеÑвоÑÐµÐ½Ð½Ñ Ð¾Ð±âÑкÑÑв `datetime` на ÑÑÑоки ÑоÑо.
+
+ÐнÑÐ¾Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¾Ñ ÑÑнкÑÑÑÑ, необÑ
ÑÐ´Ð½Ð¾Ñ Ð´Ð»Ñ API, Ñ Ð¿ÐµÑевÑÑка даниÑ
, Ñка забезпеÑÑÑ Ð´ÑйÑнÑÑÑÑ Ð´Ð°Ð½Ð¸Ñ
за певними паÑамеÑÑами. ÐапÑиклад, Ñо деÑке поле Ñ `int`, а не деÑка випадкова ÑÑÑока. Це оÑобливо коÑиÑно Ð´Ð»Ñ Ð²Ñ
ÑдниÑ
даниÑ
.
+
+Ðез ÑиÑÑеми пеÑевÑÑки даниÑ
вам довелоÑÑ Ð± виконÑваÑи вÑÑ Ð¿ÐµÑевÑÑки вÑÑÑнÑ, Ñ ÐºÐ¾Ð´Ñ.
+
+Marshmallow ÑÑвоÑено Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÐµÐ½Ð½Ñ ÑиÑ
ÑÑнкÑÑй. Це ÑÑдова бÑблÑоÑека, Ñ Ñ ÑаÑÑо Ð½ÐµÑ ÐºÐ¾ÑиÑÑÑвавÑÑ ÑанÑÑе.
+
+Ðле вÑн бÑв ÑÑвоÑений до Ñого, Ñк ÑÑнÑвали пÑдказки ÑÐ¸Ð¿Ñ Python. ÐÑже, Ñоб визнаÑиÑи ÐºÐ¾Ð¶Ð½Ñ ÑÑ
емÑ, вам поÑÑÑбно викоÑиÑÑовÑваÑи ÑпеÑÑалÑÐ½Ñ ÑÑилÑÑи Ñа клаÑи, Ð½Ð°Ð´Ð°Ð½Ñ Marshmallow.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐикоÑиÑÑовÑваÑи код Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑного визнаÑÐµÐ½Ð½Ñ "ÑÑ
ем", ÑÐºÑ Ð½Ð°Ð´Ð°ÑÑÑ Ñипи даниÑ
Ñ Ð¿ÐµÑевÑÑкÑ.
+
+### Webargs
+
+ÐнÑÐ¾Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¾Ñ ÑÑнкÑÑÑÑ, необÑ
ÑÐ´Ð½Ð¾Ñ Ð´Ð»Ñ API, Ñ Ð°Ð½Ð°Ð»Ñз даниÑ
Ñз вÑ
ÑдниÑ
запиÑÑв.
+
+Webargs â Ñе ÑнÑÑÑÑменÑ, ÑÑвоÑений, Ñоб забезпеÑиÑи Ñе повеÑÑ
кÑлÑкоÑ
ÑÑеймвоÑкÑв, вклÑÑаÑÑи Flask.
+
+ÐÑн викоÑиÑÑовÑÑ Marshmallow в оÑÐ½Ð¾Ð²Ñ Ð´Ð»Ñ Ð¿ÐµÑевÑÑки даниÑ
. Ð ÑÑвоÑений Ñими ж ÑозÑобниками.
+
+Це ÑÑдовий ÑнÑÑÑÑменÑ, Ñ Ñ Ñакож ÑаÑÑо викоÑиÑÑовÑвав його, пеÑÑ Ð½Ñж ÑÑвоÑиÑи **FastAPI**.
+
+!!! ÐнÑоÑмаÑÑÑ
+ Webargs бÑв ÑÑвоÑений Ñими ж ÑозÑобниками Marshmallow.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐаÑи авÑомаÑиÑÐ½Ñ Ð¿ÐµÑевÑÑÐºÑ Ð´Ð°Ð½Ð¸Ñ
вÑ
Ñдного запиÑÑ.
+
+### APISpec
+
+Marshmallow Ñ Webargs забезпеÑÑÑÑÑ Ð¿ÐµÑевÑÑкÑ, аналÑз Ñ ÑеÑÑалÑзаÑÑÑ Ñк плагÑни.
+
+Ðле докÑменÑаÑÑÑ Ð´Ð¾ÑÑ Ð²ÑдÑÑÑнÑ. ÐоÑÑм бÑло ÑÑвоÑено APISpec.
+
+Це плагÑн Ð´Ð»Ñ Ð±Ð°Ð³Ð°ÑÑоÑ
ÑÑеймвоÑкÑв (Ñакож Ñ Ð¿Ð»Ð°Ð³Ñн Ð´Ð»Ñ Starlette).
+
+ÐÑинÑип ÑобоÑи полÑÐ³Ð°Ñ Ð² ÑомÑ, Ñо ви пиÑеÑе визнаÑÐµÐ½Ð½Ñ ÑÑ
еми, викоÑиÑÑовÑÑÑи ÑоÑÐ¼Ð°Ñ YAML, Ñ docstring ÐºÐ¾Ð¶Ð½Ð¾Ñ ÑÑнкÑÑÑ, Ñо обÑоблÑÑ Ð¼Ð°ÑÑÑÑÑ.
+
+РвÑн генеÑÑÑ ÑÑ
еми OpenAPI.
+
+Так Ñе пÑаÑÑÑ Ñ Flask, Starlette, Responder ÑоÑо.
+
+Ðле поÑÑм ми Ð·Ð½Ð¾Ð²Ñ Ð¼Ð°Ñмо пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð½Ð°ÑвноÑÑÑ Ð¼ÑкÑоÑинÑакÑиÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ Python ÑÑÑоки (великий YAML).
+
+РедакÑÐ¾Ñ ÑÑÑ Ð½ÑÑим не може допомогÑи. Ð ÑкÑо ми змÑнимо паÑамеÑÑи Ñи ÑÑ
еми Marshmallow Ñ Ð·Ð°Ð±Ñдемо Ñакож змÑниÑи ÑÑ ÑÑÑÐ¾ÐºÑ Ð´Ð¾ÐºÑменÑа YAML, згенеÑована ÑÑ
ема бÑде заÑÑаÑÑлоÑ.
+
+!!! ÐнÑоÑмаÑÑÑ
+ APISpec бÑв ÑÑвоÑений Ñими ж ÑозÑобниками Marshmallow.
+
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐÑдÑÑимÑваÑи вÑдкÑиÑий ÑÑандаÑÑ API, OpenAPI.
+
+### Flask-apispec
+
+Це плагÑн Flask, Ñкий обâÑднÑÑ Webargs, Marshmallow Ñ APISpec.
+
+ÐÑн викоÑиÑÑовÑÑ ÑнÑоÑмаÑÑÑ Ð· Webargs Ñ Marshmallow Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑного ÑÑвоÑÐµÐ½Ð½Ñ ÑÑ
ем OpenAPI за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ APISpec.
+
+Це ÑÑдовий ÑнÑÑÑÑменÑ, дÑже недооÑÑнений. ÐÑн Ð¼Ð°Ñ Ð±ÑÑи набагаÑо попÑлÑÑнÑÑим, нÑж багаÑо плагÑнÑв Flask. Це може бÑÑи повâÑзано з Ñим, Ñо його докÑменÑаÑÑÑ Ð½Ð°Ð´Ñо ÑÑиÑла й абÑÑÑакÑна.
+
+Це виÑÑÑило необÑ
ÑднÑÑÑÑ Ð¿Ð¸ÑаÑи YAML (ÑнÑий ÑинÑакÑиÑ) вÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑдкÑв докÑменÑÑв Python.
+
+Ð¦Ñ ÐºÐ¾Ð¼Ð±ÑнаÑÑÑ Flask, Flask-apispec Ñз Marshmallow Ñ Webargs бÑла моÑм ÑлÑбленим бекенд-ÑÑеком до ÑÑвоÑÐµÐ½Ð½Ñ **FastAPI**.
+
+ÐÑ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð¿Ñизвело до ÑÑвоÑÐµÐ½Ð½Ñ ÐºÑлÑкоÑ
генеÑаÑоÑÑв повного ÑÑека Flask. Це оÑновний ÑÑек, Ñкий Ñ (Ñа кÑлÑка зовнÑÑнÑÑ
команд) викоÑиÑÑовÑвав доÑÑ:
+
+* https://github.com/tiangolo/full-stack
+* https://github.com/tiangolo/full-stack-flask-couchbase
+* https://github.com/tiangolo/full-stack-flask-couchdb
+
+Ð ÑÑ ÑÐ°Ð¼Ñ Ð³ÐµÐ½ÐµÑаÑоÑи повного ÑÑÐµÐºÑ Ð±Ñли оÑÐ½Ð¾Ð²Ð¾Ñ [**FastAPI** генеÑаÑоÑÑв пÑоекÑÑв](project-generation.md){.internal-link target=_blank}.
+
+!!! ÐнÑоÑмаÑÑÑ
+ Flask-apispec бÑв ÑÑвоÑений Ñими ж ÑозÑобниками Marshmallow.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ СÑвоÑÐµÐ½Ð½Ñ ÑÑ
еми OpenAPI авÑомаÑиÑно з Ñого Ñамого кодÑ, Ñкий визнаÑÐ°Ñ ÑеÑÑалÑзаÑÑÑ Ñа пеÑевÑÑкÑ.
+
+### NestJS (Ñа Angular)
+
+Це навÑÑÑ Ð½Ðµ Python, NestJS â Ñе ÑÑеймвоÑк NodeJS JavaScript (TypeScript), наÑÑ
ненний Angular.
+
+Це доÑÑÐ³Ð°Ñ ÑогоÑÑ Ð¿Ð¾Ð´Ñбного до Ñого, Ñо можна зÑобиÑи з Flask-apispec.
+
+ÐÑн Ð¼Ð°Ñ ÑнÑегÑÐ¾Ð²Ð°Ð½Ñ ÑиÑÑÐµÐ¼Ñ Ð²Ð¿ÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей, наÑÑ
Ð½ÐµÐ½Ð½Ñ Angular two. ÐÑн поÑÑебÑÑ Ð¿Ð¾Ð¿ÐµÑеднÑÐ¾Ñ ÑеÑÑÑÑаÑÑÑ Â«injectables» (Ñк Ñ Ð²ÑÑ ÑнÑÑ ÑиÑÑеми впÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей, ÑÐºÑ Ñ Ð·Ð½Ð°Ñ), ÑÐ¾Ð¼Ñ Ñе збÑлÑÑÑÑ Ð±Ð°Ð³Ð°ÑоÑлÑвнÑÑÑÑ Ñа повÑоÑÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñ.
+
+ÐÑкÑлÑки паÑамеÑÑи опиÑÐ°Ð½Ñ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑипÑв TypeScript (подÑбно до пÑдказок ÑÐ¸Ð¿Ñ Python), пÑдÑÑимка ÑедакÑоÑа доÑиÑÑ Ñ
оÑоÑа.
+
+Ðле оÑкÑлÑки Ð´Ð°Ð½Ñ TypeScript не збеÑÑгаÑÑÑÑÑ Ð¿ÑÑÐ»Ñ ÐºÐ¾Ð¼Ð¿ÑлÑÑÑÑ Ð² JavaScript, вони не можÑÑÑ Ð¿Ð¾ÐºÐ»Ð°Ð´Ð°ÑиÑÑ Ð½Ð° Ñипи Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¿ÐµÑевÑÑки, ÑеÑÑалÑзаÑÑÑ Ñа докÑменÑаÑÑÑ Ð¾Ð´Ð½Ð¾ÑаÑно. ЧеÑез Ñе Ñа деÑÐºÑ Ð´Ð¸Ð·Ð°Ð¹Ð½ÐµÑÑÑÐºÑ ÑÑÑеннÑ, Ñоб оÑÑимаÑи пеÑевÑÑкÑ, ÑеÑÑалÑзаÑÑÑ Ñа авÑомаÑиÑÐ½Ñ Ð³ÐµÐ½ÐµÑаÑÑÑ ÑÑ
еми, поÑÑÑбно додаÑи декоÑаÑоÑи в багаÑÑоÑ
мÑÑÑÑÑ
. Таким Ñином код ÑÑÐ°Ñ Ð´Ð¾ÑиÑÑ Ð±Ð°Ð³Ð°ÑоÑлÑвним.
+
+ÐÑн не дÑже добÑе обÑоблÑÑ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ. ÐÑже, ÑкÑо ÑÑло JSON Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ñ Ð¾Ð±âÑкÑом JSON Ñз внÑÑÑÑÑнÑми полÑми, ÑкÑ, Ñ ÑÐ²Ð¾Ñ ÑеÑгÑ, Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ð¼Ð¸ обâÑкÑами JSON, його неможливо належним Ñином задокÑменÑÑваÑи Ñа пеÑевÑÑиÑи.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐикоÑиÑÑовÑваÑи Ñипи Python, Ñоб маÑи ÑÑÐ´Ð¾Ð²Ñ Ð¿ÑдÑÑÐ¸Ð¼ÐºÑ ÑедакÑоÑа.
+
+ ÐаÑи поÑÑÐ¶Ð½Ñ ÑиÑÑÐµÐ¼Ñ Ð²Ð¿ÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей. ÐнайдÑÑÑ ÑпоÑÑб звеÑÑи до мÑнÑмÑÐ¼Ñ Ð¿Ð¾Ð²ÑоÑÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñ.
+
+### Sanic
+
+Це бÑв один Ñз пеÑÑиÑ
надзвиÑайно ÑвидкиÑ
ÑÑеймвоÑкÑв Python на оÑÐ½Ð¾Ð²Ñ `asyncio`. ÐÑн бÑв дÑже ÑÑ
ожий на Flask.
+
+!!! ÐÑимÑÑка "ТеÑ
нÑÑÐ½Ñ Ð´ÐµÑалÑ"
+ ÐÑн викоÑиÑÑовÑвав `uvloop` замÑÑÑÑ ÑÑандаÑÑного ÑÐ¸ÐºÐ»Ñ Python `asyncio`. ÐÑÑ Ñо зÑобило його Ñаким Ñвидким.
+
+ Це Ñвно надиÑ
нÑло Uvicorn Ñ Starlette, ÑÐºÑ Ð·Ð°Ñаз ÑвидÑÑ Ð·Ð° Sanic Ñ Ð²ÑдкÑиÑиÑ
ÑеÑÑаÑ
.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐнайÑи ÑпоÑÑб оÑÑимаÑи божевÑлÑÐ½Ñ Ð¿ÑодÑкÑивнÑÑÑÑ.
+
+ ÐÑÑ ÑÐ¾Ð¼Ñ **FastAPI** базÑÑÑÑÑÑ Ð½Ð° Starlette, оÑкÑлÑки Ñе найÑвидÑа доÑÑÑпна ÑÑÑÑкÑÑÑа (пеÑевÑÑена ÑеÑÑами ÑÑоÑоннÑÑ
ÑозÑобникÑв).
+
+### Falcon
+
+Falcon â Ñе один виÑокопÑодÑкÑивний ÑÑеймвоÑк Python, вÑн ÑозÑоблений Ñк мÑнÑмалÑний Ñ Ð¿ÑаÑÑÑ Ñк оÑнова ÑнÑиÑ
ÑÑеймвоÑкÑв, ÑакиÑ
Ñк Hug.
+
+ÐÑн ÑозÑоблений Ñаким Ñином, Ñоб маÑи ÑÑнкÑÑÑ, ÑÐºÑ Ð¾ÑÑимÑÑÑÑ Ð´Ð²Ð° паÑамеÑÑи, один «запиÑ» Ñ Ð¾Ð´Ð¸Ð½ «вÑдповÑдÑ». ÐоÑÑм ви «ÑиÑаÑÑе» ÑаÑÑини запиÑÑ Ñа «запиÑÑÑÑе» ÑаÑÑини Ñ Ð²ÑдповÑдÑ. ЧеÑез Ñакий дизайн неможливо оголоÑиÑи паÑамеÑÑи запиÑÑ Ñа ÑÑла за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑÑандаÑÑниÑ
пÑдказок ÑÐ¸Ð¿Ñ Python Ñк паÑамеÑÑи ÑÑнкÑÑÑ.
+
+Таким Ñином, пеÑевÑÑка даниÑ
, ÑеÑÑалÑзаÑÑÑ Ñа докÑменÑаÑÑÑ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑваÑиÑÑ Ð² кодÑ, а не авÑомаÑиÑно. Ðбо вони Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð±ÑÑи ÑеалÑÐ·Ð¾Ð²Ð°Ð½Ñ Ñк ÑÑеймвоÑк повеÑÑ
Falcon, Ñк Hug. Така Ñама вÑдмÑннÑÑÑÑ ÑпоÑÑеÑÑгаÑÑÑÑÑ Ð² ÑнÑиÑ
ÑÑеймвоÑкаÑ
, наÑÑ
ненниÑ
дизайном Falcon, Ñо маÑÑÑ Ð¾Ð´Ð¸Ð½ обâÑÐºÑ Ð·Ð°Ð¿Ð¸ÑÑ Ñа один обâÑÐºÑ Ð²ÑдповÑÐ´Ñ Ñк паÑамеÑÑи.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐнайÑи ÑпоÑоби оÑÑимаÑи ÑÑÐ´Ð¾Ð²Ñ Ð¿ÑодÑкÑивнÑÑÑÑ.
+
+ Разом Ñз Hug (оÑкÑлÑки Hug базÑÑÑÑÑÑ Ð½Ð° Falcon) надиÑ
нÑв **FastAPI** оголоÑиÑи паÑамеÑÑ `response` Ñ ÑÑнкÑÑÑÑ
.
+
+ ХоÑа Ñ FastAPI Ñе необовâÑзково, Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ Ð² оÑÐ½Ð¾Ð²Ð½Ð¾Ð¼Ñ Ð´Ð»Ñ Ð²ÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑв, ÑайлÑв cookie Ñа алÑÑеÑнаÑивниÑ
кодÑв ÑÑанÑ.
+
+### Molten
+
+Я вÑдкÑив Ð´Ð»Ñ Ñебе Molten на пеÑÑиÑ
еÑапаÑ
ÑÑвоÑÐµÐ½Ð½Ñ **FastAPI**. РвÑн Ð¼Ð°Ñ Ð´Ð¾ÑиÑÑ ÑÑ
Ð¾Ð¶Ñ ÑдеÑ:
+
+* ÐазÑÑÑÑÑÑ Ð½Ð° пÑдказкаÑ
ÑÐ¸Ð¿Ñ Python.
+* ÐеÑевÑÑка Ñа докÑменÑаÑÑÑ ÑиÑ
ÑипÑв.
+* СиÑÑема впÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей.
+
+ÐÑн не викоÑиÑÑовÑÑ Ð¿ÐµÑевÑÑÐºÑ Ð´Ð°Ð½Ð¸Ñ
, ÑеÑÑалÑзаÑÑÑ Ñа бÑблÑоÑÐµÐºÑ Ð´Ð¾ÐºÑменÑаÑÑÑ ÑÑоÑоннÑÑ
ÑозÑобникÑв, Ñк Pydantic, вÑн Ð¼Ð°Ñ ÑÐ²Ð¾Ñ Ð²Ð»Ð°ÑнÑ. Таким Ñином, ÑÑ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑипÑв даниÑ
не можна бÑло б викоÑиÑÑовÑваÑи повÑоÑно Ñак легко.
+
+Це Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ ÑÑоÑ
и бÑлÑÑ Ð´Ð¾ÐºÐ»Ð°Ð´Ð½Ð¸Ñ
конÑÑгÑÑаÑÑй. РоÑкÑлÑки вÑн заÑнований на WSGI (замÑÑÑÑ ASGI), вÑн не пÑизнаÑений Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð²Ð¸ÑокопÑодÑкÑивниÑ
ÑнÑÑÑÑменÑÑв, ÑакиÑ
Ñк Uvicorn, Starlette Ñ Sanic.
+
+СиÑÑема впÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ Ð¿Ð¾Ð¿ÐµÑеднÑÐ¾Ñ ÑеÑÑÑÑаÑÑÑ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей, Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑÑ Ð²Ð¸ÑÑÑÑÑÑÑÑÑ Ð½Ð° оÑÐ½Ð¾Ð²Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑениÑ
ÑипÑв. ÐÑже, неможливо оголоÑиÑи бÑлÑÑе нÑж один «компоненÑ», Ñкий Ð½Ð°Ð´Ð°Ñ Ð¿ÐµÐ²Ð½Ð¸Ð¹ Ñип.
+
+ÐаÑÑÑÑÑи оголоÑÑÑÑÑÑÑ Ð² Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¼ÑÑÑÑ Ð· викоÑиÑÑаннÑм ÑÑнкÑÑй, оголоÑениÑ
в ÑнÑиÑ
мÑÑÑÑÑ
(замÑÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð´ÐµÐºÐ¾ÑаÑоÑÑв, ÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð° ÑозмÑÑÑиÑи безпоÑеÑеднÑо повеÑÑ
ÑÑнкÑÑÑ, Ñка обÑоблÑÑ ÐºÑнÑÐµÐ²Ñ ÑоÑкÑ). Це ближÑе до Ñого, Ñк Ñе ÑобиÑÑ Django, нÑж до Flask (Ñ Starlette). ÐÑн ÑоздÑлÑÑ Ð² ÐºÐ¾Ð´Ñ ÑеÑÑ, ÑÐºÑ Ð²ÑдноÑно ÑÑÑно повâÑзанÑ.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐизнаÑиÑи додаÑÐºÐ¾Ð²Ñ Ð¿ÐµÑевÑÑки Ð´Ð»Ñ ÑипÑв даниÑ
, викоÑиÑÑовÑÑÑи знаÑÐµÐ½Ð½Ñ "за замовÑÑваннÑм" аÑÑибÑÑÑв моделÑ. Це покÑаÑÑÑ Ð¿ÑдÑÑÐ¸Ð¼ÐºÑ ÑедакÑоÑа, а ÑанÑÑе вона бÑла недоÑÑÑпна в Pydantic.
+
+ Це ÑакÑиÑно надиÑ
нÑло оновиÑи ÑаÑÑини Pydantic, Ñоб пÑдÑÑимÑваÑи Ñой Ñамий ÑÑÐ¸Ð»Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÐµÐ½Ð½Ñ Ð¿ÐµÑевÑÑки (вÑÑ ÑÑ ÑÑнкÑÑÑ Ð²Ð¶Ðµ доÑÑÑÐ¿Ð½Ñ Ð² Pydantic).
+
+### Hug
+
+Hug бÑв одним Ñз пеÑÑиÑ
ÑÑеймвоÑкÑв, Ñкий ÑеалÑзÑвав оголоÑÐµÐ½Ð½Ñ ÑипÑв паÑамеÑÑÑв API за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¿Ñдказок ÑÐ¸Ð¿Ñ Python. Це бÑла ÑÑдова ÑдеÑ, Ñка надиÑ
нÑла ÑнÑÑ ÑнÑÑÑÑменÑи зÑобиÑи Ñе Ñаме.
+
+ÐÑн викоÑиÑÑовÑвав ÑпеÑÑалÑÐ½Ñ Ñипи Ñ ÑвоÑÑ
оголоÑеннÑÑ
замÑÑÑÑ ÑÑандаÑÑниÑ
ÑипÑв Python, але Ñе вÑе одно бÑв велиÑезний кÑок впеÑед.
+
+Це Ñакож бÑв один Ñз пеÑÑиÑ
ÑÑеймвоÑкÑв, Ñкий генеÑÑвав ÑпеÑÑалÑÐ½Ñ ÑÑ
емÑ, Ñо оголоÑÑвала веÑÑ API Ñ JSON.
+
+ÐÑн не базÑвавÑÑ Ð½Ð° ÑакиÑ
ÑÑандаÑÑаÑ
, Ñк OpenAPI Ñа JSON Schema. Ð¢Ð¾Ð¼Ñ Ð±Ñло б непÑоÑÑо ÑнÑегÑÑваÑи його з ÑнÑими ÑнÑÑÑÑменÑами, Ñк-Ð¾Ñ Swagger UI. Ðле Ð·Ð½Ð¾Ð²Ñ Ð¶ Ñаки, Ñе бÑла дÑже ÑнноваÑÑйна ÑдеÑ.
+
+ÐÑн Ð¼Ð°Ñ ÑÑÐºÐ°Ð²Ñ Ð½ÐµÐ·Ð²Ð¸ÑÐ°Ð¹Ð½Ñ ÑÑнкÑÑÑ: викоÑиÑÑовÑÑÑи ÑÑ ÑÐ°Ð¼Ñ ÑÑÑÑкÑÑÑÑ, можна ÑÑвоÑÑваÑи API, а Ñакож CLI.
+
+ÐÑкÑлÑки вÑн заÑнований на попеÑеднÑÐ¾Ð¼Ñ ÑÑандаÑÑÑ Ð´Ð»Ñ ÑинÑ
ÑонниÑ
веб-ÑÑеймвоÑкÑв Python (WSGI), вÑн не може пÑаÑÑваÑи з Websockets Ñа ÑнÑими ÑеÑами, Ñ
оÑа вÑн Ñакож Ð¼Ð°Ñ Ð²Ð¸ÑÐ¾ÐºÑ Ð¿ÑодÑкÑивнÑÑÑÑ.
+
+!!! ÐнÑоÑмаÑÑÑ
+ Hug ÑÑвоÑив ТÑмоÑÑ ÐÑоÑлÑ, Ñой Ñамий ÑвоÑеÑÑ `isort`, ÑÑдовий ÑнÑÑÑÑÐ¼ÐµÐ½Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑного ÑоÑÑÑÐ²Ð°Ð½Ð½Ñ ÑмпоÑÑÑ Ñ ÑайлаÑ
Python.
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ Hug надиÑ
нÑв ÑаÑÑÐ¸Ð½Ñ APIStar Ñ Ð±Ñв одним Ñз найбÑлÑÑ Ð¿ÐµÑÑпекÑивниÑ
ÑнÑÑÑÑменÑÑв, поÑÑд Ñз APIStar.
+
+ Hug надиÑ
нÑв **FastAPI** на викоÑиÑÑÐ°Ð½Ð½Ñ Ð¿Ñдказок ÑÐ¸Ð¿Ñ Python Ð´Ð»Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÐµÐ½Ð½Ñ Ð¿Ð°ÑамеÑÑÑв Ñ Ð°Ð²ÑомаÑиÑного ÑÑвоÑÐµÐ½Ð½Ñ ÑÑ
еми, Ñо визнаÑÐ°Ñ API.
+
+ Hug надиÑ
нÑв **FastAPI** оголоÑиÑи паÑамеÑÑ `response` Ñ ÑÑнкÑÑÑÑ
Ð´Ð»Ñ Ð²ÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑв Ñ ÑайлÑв cookie.
+
+### APIStar (<= 0,5)
+
+ÐезпоÑеÑеднÑо пеÑед Ñим, Ñк виÑÑÑиÑи ÑÑвоÑиÑи **FastAPI**, Ñ Ð·Ð½Ð°Ð¹Ñов ÑеÑÐ²ÐµÑ **APIStar**. ÐÑн мав майже вÑе, Ñо Ñ ÑÑкав, Ñ Ð¼Ð°Ð² ÑÑдовий дизайн.
+
+Це бÑла одна з пеÑÑиÑ
ÑеалÑзаÑÑй ÑÑеймвоÑкÑ, Ñо викоÑиÑÑовÑÑ Ð¿Ñдказки ÑÐ¸Ð¿Ñ Python Ð´Ð»Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑÐµÐ½Ð½Ñ Ð¿Ð°ÑамеÑÑÑв Ñ Ð·Ð°Ð¿Ð¸ÑÑв, ÑÐºÑ Ñ ÐºÐ¾Ð»Ð¸-небÑÐ´Ñ Ð±Ð°Ñив (до NestJS Ñ Molten). Я знайÑов його бÑлÑÑ-Ð¼ÐµÐ½Ñ Ð¾Ð´Ð½Ð¾ÑаÑно з Hug. Ðле APIStar викоÑиÑÑовÑвав ÑÑандаÑÑ OpenAPI.
+
+ÐÑн мав авÑомаÑиÑÐ½Ñ Ð¿ÐµÑевÑÑÐºÑ Ð´Ð°Ð½Ð¸Ñ
, ÑеÑÑалÑзаÑÑÑ Ð´Ð°Ð½Ð¸Ñ
Ñ Ð³ÐµÐ½ÐµÑаÑÑÑ ÑÑ
еми OpenAPI на оÑÐ½Ð¾Ð²Ñ Ð¿Ñдказок Ñого Ñамого ÑÐ¸Ð¿Ñ Ð² кÑлÑкоÑ
мÑÑÑÑÑ
.
+
+ÐизнаÑÐµÐ½Ð½Ñ ÑÑ
еми ÑÑла не викоÑиÑÑовÑвали ÑÑ ÑÐ°Ð¼Ñ Ð¿Ñдказки ÑÐ¸Ð¿Ñ Python, Ñк Pydantic, воно бÑло ÑÑоÑ
и ÑÑ
оже на Marshmallow, ÑÐ¾Ð¼Ñ Ð¿ÑдÑÑимка ÑедакÑоÑа бÑла б не ÑÐ°ÐºÐ¾Ñ Ñ
оÑоÑоÑ, але вÑе ж APIStar бÑв найкÑаÑим доÑÑÑпним ваÑÑанÑом.
+
+ÐÑн мав найкÑаÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð½Ð¸ÐºÐ¸ пÑодÑкÑивноÑÑÑ Ð½Ð° Ñой ÑÐ°Ñ (пеÑевеÑÑив лиÑе Starlette).
+
+СпоÑаÑÐºÑ Ð²Ñн не мав авÑомаÑиÑного веб-ÑнÑеÑÑейÑÑ Ð´Ð¾ÐºÑменÑаÑÑÑ API, але Ñ Ð·Ð½Ð°Ð², Ñо Ð¼Ð¾Ð¶Ñ Ð´Ð¾Ð´Ð°Ñи до нÑого ÑнÑеÑÑÐµÐ¹Ñ ÐºÐ¾ÑиÑÑÑваÑа Swagger.
+
+ÐÑн мав ÑиÑÑÐµÐ¼Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей. ÐÑн вимагав попеÑеднÑÐ¾Ñ ÑеÑÑÑÑаÑÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑв, Ñк Ñ ÑнÑÑ ÑнÑÑÑÑменÑи, ÑозглÑнÑÑÑ Ð²Ð¸Ñе. Ðле вÑе одно Ñе бÑла ÑÑдова ÑÑнкÑÑÑ.
+
+Я нÑколи не мÑг викоÑиÑÑовÑваÑи його в повноÑÑÐ½Ð½Ð¾Ð¼Ñ Ð¿ÑоекÑÑ, оÑкÑлÑки вÑн не мав ÑнÑегÑаÑÑÑ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸, ÑÐ¾Ð¼Ñ Ñ Ð½Ðµ мÑг замÑниÑи вÑÑ ÑÑнкÑÑÑ, ÑÐºÑ Ð¼Ð°Ð², генеÑаÑоÑами повного ÑÑÐµÐºÑ Ð½Ð° оÑÐ½Ð¾Ð²Ñ Flask-apispec. У моÑÑ
невиконаниÑ
пÑоекÑаÑ
Ñ Ð¼Ð°Ð² ÑÑвоÑиÑи Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° вилÑÑеннÑ, додавÑи ÑÑ ÑÑнкÑÑÑ.
+
+Ðле поÑÑм ÑокÑÑ Ð¿ÑоекÑÑ Ð·Ð¼ÑнивÑÑ.
+
+Це вже не бÑв веб-ÑÑеймвоÑк API, оÑкÑлÑки ÑвоÑÑÑ Ð¿Ð¾ÑÑÑбно бÑло зоÑеÑедиÑиÑÑ Ð½Ð° Starlette.
+
+Ð¢ÐµÐ¿ÐµÑ APIStar â Ñе набÑÑ ÑнÑÑÑÑменÑÑв Ð´Ð»Ñ Ð¿ÐµÑевÑÑки ÑпеÑиÑÑкаÑÑй OpenAPI, а не веб-ÑÑеймвоÑк.
+
+!!! ÐнÑоÑмаÑÑÑ
+ APIStar ÑÑвоÑив Том ÐÑÑÑÑÑ. Той Ñамий Ñ
лопеÑÑ, Ñкий ÑÑвоÑив:
+
+ * Django REST Framework
+ * Starlette (на ÑÐºÐ¾Ð¼Ñ Ð±Ð°Ð·ÑÑÑÑÑÑ **FastAPI**)
+ * Uvicorn (викоÑиÑÑовÑÑÑÑÑÑ Starlette Ñ **FastAPI**)
+
+!!! ÐеÑеглÑнÑÑе "ÐадиÑ
нÑло **FastAPI** на"
+ ÐÑнÑваÑи.
+
+ ÐÐ´ÐµÑ Ð¾Ð³Ð¾Ð»Ð¾ÑÐµÐ½Ð½Ñ ÐºÑлÑкоÑ
ÑеÑей (пеÑевÑÑки даниÑ
, ÑеÑÑалÑзаÑÑÑ Ñа докÑменÑаÑÑÑ) за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑиÑ
ÑамиÑ
ÑипÑв Python, ÑÐºÑ Ð² Ñой же ÑÐ°Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÑвали ÑÑÐ´Ð¾Ð²Ñ Ð¿ÑдÑÑÐ¸Ð¼ÐºÑ ÑедакÑоÑа, Ñ Ð²Ð²Ð°Ð¶Ð°Ð² генÑалÑÐ½Ð¾Ñ ÑдеÑÑ.
+
+ РпÑÑÐ»Ñ ÑÑивалого поÑÑÐºÑ Ð¿Ð¾Ð´ÑÐ±Ð½Ð¾Ñ ÑÑÑÑкÑÑÑи Ñа ÑеÑÑÑÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð³Ð°ÑÑоÑ
ÑÑзниÑ
алÑÑеÑнаÑив, APIStar ÑÑав найкÑаÑим доÑÑÑпним ваÑÑанÑом.
+
+ ÐоÑÑм APIStar пеÑеÑÑав ÑÑнÑваÑи Ñк ÑеÑвеÑ, Ñ Ð±Ñло ÑÑвоÑено Starlette, Ñкий ÑÑав Ð½Ð¾Ð²Ð¾Ñ ÐºÑаÑÐ¾Ñ Ð¾ÑÐ½Ð¾Ð²Ð¾Ñ Ð´Ð»Ñ ÑÐ°ÐºÐ¾Ñ ÑиÑÑеми. Це ÑÑало оÑÑаннÑм джеÑелом наÑÑ
Ð½ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ **FastAPI**. Я Ð²Ð²Ð°Ð¶Ð°Ñ **FastAPI** «дÑÑ
овним ÑпадкоÑмÑем» APIStar, ÑдоÑконалÑÑÑи Ñа ÑозÑиÑÑÑÑи ÑÑнкÑÑÑ, ÑиÑÑÐµÐ¼Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ ÑекÑÑÑ Ñа ÑнÑÑ ÑаÑÑини на оÑÐ½Ð¾Ð²Ñ Ð´Ð¾ÑвÑдÑ, оÑÑиманого вÑд ÑÑÑÑ
ÑиÑ
попеÑеднÑÑ
ÑнÑÑÑÑменÑÑв.
+
+## ÐикоÑиÑÑовÑÑÑÑÑÑ **FastAPI**
+
+### Pydantic
+
+Pydantic â Ñе бÑблÑоÑека Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¿ÐµÑевÑÑки даниÑ
, ÑеÑÑалÑзаÑÑÑ Ñа докÑменÑаÑÑÑ (за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÑÑ
еми JSON) на оÑÐ½Ð¾Ð²Ñ Ð¿Ñдказок ÑÐ¸Ð¿Ñ Python.
+
+Це ÑобиÑÑ Ð¹Ð¾Ð³Ð¾ надзвиÑайно ÑнÑÑÑÑивним.
+
+Ðого можна поÑÑвнÑÑи з Marshmallow. ХоÑа вÑн ÑвидÑий за Marshmallow Ñ ÑеÑÑаÑ
. ÐÑкÑлÑки вÑн базÑÑÑÑÑÑ Ð½Ð° ÑиÑ
ÑамиÑ
пÑдказкаÑ
ÑÐ¸Ð¿Ñ Python, пÑдÑÑимка ÑедакÑоÑа ÑÑдова.
+
+!!! ÐеÑеглÑнÑÑе "**FastAPI** викоÑиÑÑовÑÑ Ð¹Ð¾Ð³Ð¾ длÑ"
+ ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿ÐµÑевÑÑки вÑÑÑ
даниÑ
, ÑеÑÑалÑзаÑÑÑ Ð´Ð°Ð½Ð¸Ñ
Ñ Ð°Ð²ÑомаÑиÑÐ½Ð¾Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ (на оÑÐ½Ð¾Ð²Ñ ÑÑ
еми JSON).
+
+ ÐоÑÑм **FastAPI** беÑе ÑÑ Ð´Ð°Ð½Ñ ÑÑ
еми JSON Ñ ÑозмÑÑÑÑ ÑÑ
Ñ OpenAPI, окÑемо вÑд ÑÑÑÑ
ÑнÑиÑ
ÑеÑей, ÑÐºÑ Ð²Ñн ÑобиÑÑ.
+
+### Starlette
+
+Starlette â Ñе легкий ÑÑеймвоÑк/набÑÑ ÑнÑÑÑÑменÑÑв ASGI, Ñкий ÑдеалÑно пÑдÑ
одиÑÑ Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ð²Ð¸ÑокопÑодÑкÑивниÑ
asyncio ÑеÑвÑÑÑв.
+
+ÐÑн дÑже пÑоÑÑий Ñа ÑнÑÑÑÑивно зÑозÑмÑлий. Ðого ÑозÑоблено Ñаким Ñином, Ñоб його можна бÑло легко ÑозÑиÑÑваÑи Ñа маÑи модÑлÑÐ½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñи.
+
+ÐÑн маÑ:
+
+* СеÑйозно вÑажаÑÑÑ Ð¿ÑодÑкÑивнÑÑÑÑ.
+* ÐÑдÑÑÐ¸Ð¼ÐºÑ WebSocket.
+* Ð¤Ð¾Ð½Ð¾Ð²Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð² пÑоÑеÑÑ.
+* ÐодÑÑ Ð·Ð°Ð¿ÑÑÐºÑ Ñа завеÑÑÐµÐ½Ð½Ñ ÑобоÑи.
+* ТеÑÑового клÑÑнÑа, побÑдований на HTTPX.
+* CORS, GZip, ÑÑаÑиÑÐ½Ñ Ñайли, поÑÐ¾ÐºÐ¾Ð²Ñ Ð²ÑдповÑдÑ.
+* ÐÑдÑÑÐ¸Ð¼ÐºÑ ÑеанÑÑв Ñ ÑайлÑв cookie.
+* 100% покÑиÑÑÑ ÑеÑÑом.
+* 100% аноÑÐ¾Ð²Ð°Ð½Ñ ÐºÐ¾Ð´Ð¾Ð²Ñ Ð±Ð°Ð·Ñ.
+* ÐÑлÑка жоÑÑÑкиÑ
залежноÑÑей.
+
+Starlette наÑÐ°Ð·Ñ Ñ Ð½Ð°Ð¹ÑвидÑим ÑÑеймвоÑком Python Ñз пеÑевÑÑениÑ
. ÐеÑевеÑÑÑÑ Ð»Ð¸Ñе Uvicorn, Ñкий Ñ Ð½Ðµ ÑÑеймвоÑком, а ÑеÑвеÑом.
+
+Starlette Ð½Ð°Ð´Ð°Ñ Ð²ÑÑ Ð¾ÑÐ½Ð¾Ð²Ð½Ñ ÑÑнкÑÑÑ Ð²ÐµÐ±-мÑкÑоÑÑеймвоÑкÑ.
+
+Ðле вÑн не забезпеÑÑÑ Ð°Ð²ÑомаÑиÑÐ½Ð¾Ñ Ð¿ÐµÑевÑÑки даниÑ
, ÑеÑÑалÑзаÑÑÑ Ñи докÑменÑаÑÑÑ.
+
+Це одна з головниÑ
ÑеÑей, ÑÐºÑ **FastAPI** Ð´Ð¾Ð´Ð°Ñ Ð·Ð²ÐµÑÑ
Ñ, вÑе на оÑÐ½Ð¾Ð²Ñ Ð¿Ñдказок ÑÐ¸Ð¿Ñ Python (з викоÑиÑÑаннÑм Pydantic). Це, а Ñакож ÑиÑÑема впÑÐ¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ÑÑей, ÑÑилÑÑи безпеки, ÑÑвоÑÐµÐ½Ð½Ñ ÑÑ
еми OpenAPI ÑоÑо.
+
+!!! ÐÑимÑÑка "ТеÑ
нÑÑÐ½Ñ Ð´ÐµÑалÑ"
+ ASGI â Ñе новий «ÑÑандаÑÑ», Ñкий ÑозÑоблÑÑÑÑÑÑ Ñленами оÑÐ½Ð¾Ð²Ð½Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Django. Це Ñе не «ÑÑандаÑÑ Python» (PEP), Ñ
оÑа вони в пÑоÑеÑÑ ÑÑого.
+
+ Тим не менÑ, вÑн Ñже викоÑиÑÑовÑÑÑÑÑÑ Ñк «ÑÑандаÑÑ» кÑлÑкома ÑнÑÑÑÑменÑами. Це знаÑно покÑаÑÑÑ ÑÑмÑÑнÑÑÑÑ, оÑкÑлÑки ви можеÑе пеÑеклÑÑиÑи Uvicorn на бÑдÑ-Ñкий ÑнÑий ÑеÑÐ²ÐµÑ ASGI (напÑиклад, Daphne або Hypercorn), або ви можеÑе додаÑи ÑнÑÑÑÑменÑи, ÑÑмÑÑÐ½Ñ Ð· ASGI, Ñк-Ð¾Ñ `python-socketio`.
+
+!!! ÐеÑеглÑнÑÑе "**FastAPI** викоÑиÑÑовÑÑ Ð¹Ð¾Ð³Ð¾ длÑ"
+ ÐеÑÑÐ²Ð°Ð½Ð½Ñ Ð²ÑÑма оÑновними веб-ÑаÑÑинами. ÐÐ¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ ÑÑнкÑÑй звеÑÑ
Ñ.
+
+ Сам ÐºÐ»Ð°Ñ `FastAPI` безпоÑеÑеднÑо ÑÑпадковÑÑ ÐºÐ»Ð°Ñ `Starlette`.
+
+ ÐÑже, ÑÑе, Ñо ви можеÑе ÑобиÑи Ð·Ñ Starlette, ви можеÑе ÑобиÑи Ñе безпоÑеÑеднÑо за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ **FastAPI**, оÑкÑлÑки Ñе, по ÑÑÑÑ, Starlette на ÑÑеÑоÑдаÑ
.
+
+### Uvicorn
+
+Uvicorn â Ñе блиÑкавиÑний ÑеÑÐ²ÐµÑ ASGI, побÑдований на uvloop Ñ httptools.
+
+Це не веб-ÑÑеймвоÑк, а ÑеÑвеÑ. ÐапÑиклад, вÑн не Ð½Ð°Ð´Ð°Ñ ÑнÑÑÑÑменÑÑв Ð´Ð»Ñ Ð¼Ð°ÑÑÑÑÑизаÑÑÑ. Це Ñе, Ñо ÑÑеймвоÑк на кÑÑÐ°Ð»Ñ Starlette (або **FastAPI**) забезпеÑиÑÑ Ð¿Ð¾Ð²ÐµÑÑ
нÑого.
+
+Це Ñекомендований ÑеÑÐ²ÐµÑ Ð´Ð»Ñ Starlette Ñ **FastAPI**.
+
+!!! ÐеÑеглÑнÑÑе "**FastAPI** ÑекомендÑÑ Ñе Ñк"
+ ÐÑновний веб-ÑеÑÐ²ÐµÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑÐºÑ Ð¿ÑогÑам **FastAPI**.
+
+ Ðи можеÑе поÑднаÑи його з Gunicorn, Ñоб маÑи аÑинÑ
Ñонний багаÑопÑоÑеÑний ÑеÑвеÑ.
+
+ ÐодаÑÐºÐ¾Ð²Ñ ÑнÑоÑмаÑÑÑ Ð´Ð¸Ð². Ñ ÑоздÑÐ»Ñ [РозгоÑÑаннÑ](deployment/index.md){.internal-link target=_blank}.
+
+## ÐÑÑÑнÑиÑи Ñа ÑвидкÑÑÑÑ
+
+Щоб зÑозÑмÑÑи, поÑÑвнÑÑи Ñа побаÑиÑи ÑÑзниÑÑ Ð¼Ñж Uvicorn, Starlette Ñ FastAPI, пеÑеглÑнÑÑе ÑоздÑл пÑо [ÐенÑмаÑки](benchmarks.md){.internal-link target=_blank}.