From: Valentyn Khoroshchak <37864128+vkhoroshchak@users.noreply.github.com>
Date: Tue, 9 Jul 2024 15:45:46 +0000 (+0300)
Subject: 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/first-steps.md` (#11809)
X-Git-Tag: 0.111.1~34
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7039c5edc54e3c4f715e669696cf8d7d53aec80c;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/first-steps.md` (#11809)
---
diff --git a/docs/uk/docs/tutorial/first-steps.md b/docs/uk/docs/tutorial/first-steps.md
new file mode 100644
index 0000000000..725677e425
--- /dev/null
+++ b/docs/uk/docs/tutorial/first-steps.md
@@ -0,0 +1,328 @@
+# ÐеÑÑÑ ÐºÑоки
+
+ÐайпÑоÑÑÑÑий Ñайл FastAPI може виглÑдаÑи Ñак:
+
+```Python
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+
+СкопÑÑйÑе Ñе до ÑÐ°Ð¹Ð»Ñ `main.py`.
+
+ÐапÑÑÑÑÑÑ ÑеÑвеÑ:
+
+
+
+```console
+$ fastapi dev main.py
+INFO Using path main.py
+INFO Resolved absolute path /home/user/code/awesomeapp/main.py
+INFO Searching for package file structure from directories with __init__.py files
+INFO Importing from /home/user/code/awesomeapp
+
+ ââ Python module file ââ®
+ â â
+ â ð main.py â
+ â â
+ â°âââââââââââââââââââââââ¯
+
+INFO Importing module main
+INFO Found importable FastAPI app
+
+ ââ Importable FastAPI app ââ®
+ â â
+ â from main import app â
+ â â
+ â°âââââââââââââââââââââââââââ¯
+
+INFO Using import string main:app
+
+ âââââââââââ 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 [2265862] using WatchFiles
+INFO: Started server process [2265873]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+```
+
+
+
+У конÑÐ¾Ð»Ñ Ð±Ñде ÑÑдок пÑиблизно Ñакого змÑÑÑÑ:
+
+```hl_lines="4"
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+Цей ÑÑдок показÑÑ URL, за Ñким додаÑок запÑÑкаÑÑÑÑÑ Ð½Ð° ваÑÑй локалÑнÑй маÑинÑ.
+
+### ÐеÑевÑÑÑе
+
+ÐÑдкÑийÑе бÑаÑÐ·ÐµÑ Ñа введÑÑÑ Ð°Ð´ÑеÑÑ http://127.0.0.1:8000.
+
+Ðи побаÑиÑе Ñ Ð²ÑдповÑÐ´Ñ Ñаке повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ ÑоÑмаÑÑ JSON:
+
+```JSON
+{"message": "Hello World"}
+```
+
+### ÐнÑеÑакÑивна API докÑменÑаÑÑÑ
+
+ÐеÑейдемо ÑÑди http://127.0.0.1:8000/docs.
+
+Ðи побаÑиÑе авÑомаÑиÑÐ½Ñ ÑнÑеÑакÑÐ¸Ð²Ð½Ñ API докÑменÑаÑÑÑ (ÑÑвоÑÐµÐ½Ñ Ð·Ð°Ð²Ð´Ñки Swagger UI):
+
+
+
+### ÐлÑÑеÑнаÑивна API докÑменÑаÑÑÑ
+
+Ð¢ÐµÐ¿ÐµÑ Ð¿ÐµÑейдемо ÑÑди http://127.0.0.1:8000/redoc.
+
+Ðи побаÑиÑе алÑÑеÑнаÑÐ¸Ð²Ð½Ñ Ð°Ð²ÑомаÑиÑÐ½Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ (ÑÑвоÑÐµÐ½Ñ Ð·Ð°Ð²Ð´Ñки ReDoc):
+
+
+
+### OpenAPI
+
+**FastAPI** генеÑÑÑ "ÑÑ
емÑ" з ÑÑÑм ваÑим API, викоÑиÑÑовÑÑÑи ÑÑандаÑÑ **OpenAPI** Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ API.
+
+#### "СÑ
ема"
+
+"СÑ
ема" - Ñе визнаÑÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ð¾Ð¿Ð¸Ñ ÑогоÑÑ. Це не код, Ñкий його ÑеалÑзÑÑ, а пÑоÑÑо абÑÑÑакÑний опиÑ.
+
+#### API "ÑÑ
ема"
+
+У ÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, OpenAPI Ñ ÑпеÑиÑÑкаÑÑÑÑ, Ñка визнаÑаÑ, Ñк опиÑаÑи ÑÑ
ÐµÐ¼Ñ Ð²Ð°Ñого API.
+
+Це визнаÑÐµÐ½Ð½Ñ ÑÑ
еми вклÑÑÐ°Ñ ÑлÑÑ
и (paths) ваÑого API, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ Ð¿Ð°ÑамеÑÑи, ÑÐºÑ Ð²Ð¾Ð½Ð¸ пÑиймаÑÑÑ ÑоÑо.
+
+#### "СÑ
ема" даниÑ
+
+ТеÑмÑн "ÑÑ
ема" Ñакож може вÑдноÑиÑиÑÑ Ð´Ð¾ ÑÑÑÑкÑÑÑи даниÑ
, напÑиклад, JSON.
+
+У ÑÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ñе ознаÑÐ°Ñ - аÑÑибÑÑи JSON Ñ Ñипи даниÑ
, ÑÐºÑ Ð²Ð¾Ð½Ð¸ маÑÑÑ ÑоÑо.
+
+#### OpenAPI Ñ JSON Schema
+
+OpenAPI опиÑÑÑ ÑÑ
ÐµÐ¼Ñ Ð´Ð»Ñ Ð²Ð°Ñого API. Ð ÑÑ ÑÑ
ема вклÑÑÐ°Ñ Ð²Ð¸Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ (або "ÑÑ
еми") даниÑ
, Ñо надÑилаÑÑÑÑÑ Ñа оÑÑимÑÑÑÑÑÑ Ð²Ð°Ñим API за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ **JSON Schema**, ÑÑандаÑÑÑ Ð´Ð»Ñ ÑÑ
ем даниÑ
JSON.
+
+#### РозглÑнемо `openapi.json`
+
+ЯкÑо Ð²Ð°Ñ ÑÑкавиÑÑ, Ñк виглÑÐ´Ð°Ñ Ð²Ð¸Ñ
Ñдна ÑÑ
ема OpenAPI, Ñо FastAPI авÑомаÑиÑно генеÑÑÑ JSON-ÑÑ
ÐµÐ¼Ñ Ð· ÑÑÑма опиÑами API.
+
+ÐзнайомиÑиÑÑ Ð¼Ð¾Ð¶Ð½Ð° за поÑиланнÑм: http://127.0.0.1:8000/openapi.json.
+
+Ðи побаÑиÑе пÑиблизно Ñакий JSON:
+
+```JSON
+{
+ "openapi": "3.1.0",
+ "info": {
+ "title": "FastAPI",
+ "version": "0.1.0"
+ },
+ "paths": {
+ "/items/": {
+ "get": {
+ "responses": {
+ "200": {
+ "description": "Successful Response",
+ "content": {
+ "application/json": {
+
+
+
+...
+```
+
+#### ÐÐ»Ñ Ñого поÑÑÑбний OpenAPI
+
+СÑ
ема OpenAPI Ñ Ð¾ÑÐ½Ð¾Ð²Ð¾Ñ Ð´Ð»Ñ Ð¾Ð±Ð¾Ñ
ÑиÑÑем ÑнÑеÑакÑÐ¸Ð²Ð½Ð¾Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ.
+
+ÐÑнÑÑÑÑ Ð´ÐµÑÑÑки алÑÑеÑнаÑивниÑ
ÑнÑÑÑÑменÑÑв, заÑнованиÑ
на OpenAPI. Ðи можеÑе легко додаÑи бÑдÑ-Ñкий з ниÑ
до **FastAPI** додаÑкÑ.
+
+Ðи Ñакож можеÑе викоÑиÑÑовÑваÑи OpenAPI Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑÐ½Ð¾Ñ Ð³ÐµÐ½ÐµÑаÑÑÑ ÐºÐ¾Ð´Ñ Ð´Ð»Ñ ÐºÐ»ÑÑнÑÑв, ÑÐºÑ Ð²Ð·Ð°ÑмодÑÑÑÑ Ð· API. ÐапÑиклад, Ð´Ð»Ñ ÑÑонÑенд-, мобÑлÑниÑ
або IoT-додаÑкÑв
+
+## Ð ÑÐµÐ¿ÐµÑ ÐºÑок за кÑоком
+
+### ÐÑок 1: ÑмпоÑÑÑÑмо `FastAPI`
+
+```Python hl_lines="1"
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+
+`FastAPI` Ñе ÐºÐ»Ð°Ñ Ñ Python, Ñкий Ð½Ð°Ð´Ð°Ñ Ð²ÑÑ ÑÑнкÑÑоналÑнÑÑÑÑ Ð´Ð»Ñ API.
+
+!!! note "ТеÑ
нÑÑÐ½Ñ Ð´ÐµÑалÑ"
+ `FastAPI` Ñе клаÑ, Ñкий ÑÑпадковÑÑÑÑÑÑ Ð±ÐµÐ·Ð¿Ð¾ÑеÑеднÑо вÑд `Starlette`.
+
+ Ðи Ñакож можеÑе викоÑиÑÑовÑваÑи вÑÑ ÑÑнкÑÑоналÑнÑÑÑÑ Starlette Ñ `FastAPI`.
+
+### ÐÑок 2: ÑÑвоÑÑÑмо екземплÑÑ `FastAPI`
+
+```Python hl_lines="3"
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+ÐмÑнна `app` Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»ÑÑом клаÑÑ `FastAPI`.
+
+Це бÑде головна ÑоÑка Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ñ Ð²Ð·Ð°ÑмодÑÑ Ð· API.
+
+### ÐÑок 3: визнаÑÑе опеÑаÑÑÑ ÑлÑÑ
Ñ (path operation)
+
+#### ШлÑÑ
(path)
+
+"ШлÑÑ
" Ñе ÑаÑÑина URL, Ñка йде одÑÐ°Ð·Ñ Ð¿ÑÑÐ»Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ `/`.
+
+ÐÑже, Ñ ÑÐ°ÐºÐ¾Ð¼Ñ URL, Ñк:
+
+```
+https://example.com/items/foo
+```
+
+...ÑлÑÑ
бÑде:
+
+```
+/items/foo
+```
+
+!!! info "ÐодаÑкова ÑнÑоÑмаÑÑÑ"
+ "ШлÑÑ
" (path) Ñакож зазвиÑай називаÑÑÑ "ендпоÑнÑом" (endpoint) або "маÑÑÑÑÑом" (route).
+
+ÐÑи ÑÑвоÑÐµÐ½Ð½Ñ API, "ÑлÑÑ
" Ñ Ð¾Ñновним ÑпоÑобом ÑоздÑÐ»ÐµÐ½Ð½Ñ "завданÑ" Ñ "ÑеÑÑÑÑÑв".
+#### Operation
+
+"ÐпеÑаÑÑÑ" (operation) ÑÑÑ Ð¾Ð·Ð½Ð°ÑÐ°Ñ Ð¾Ð´Ð¸Ð½ з "меÑодÑв" HTTP.
+
+Ðдин з:
+
+* `POST`
+* `GET`
+* `PUT`
+* `DELETE`
+
+...Ñа бÑлÑÑ ÐµÐºÐ·Ð¾ÑиÑниÑ
:
+
+* `OPTIONS`
+* `HEAD`
+* `PATCH`
+* `TRACE`
+
+У HTTP-пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð° ÑпÑлкÑваÑиÑÑ Ð· кожним ÑлÑÑ
ом, викоÑиÑÑовÑÑÑи один (або кÑлÑка) з ÑиÑ
"меÑодÑв".
+
+---
+
+ÐÑи ÑÑвоÑÐµÐ½Ð½Ñ API зазвиÑай викоÑиÑÑовÑÑÑÑÑÑ ÐºÐ¾Ð½ÐºÑеÑÐ½Ñ Ð¼ÐµÑоди HTTP Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ
дÑй.
+
+Як пÑавило, викоÑиÑÑовÑÑÑÑ:
+
+* `POST`: Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
.
+* `GET`: Ð´Ð»Ñ ÑиÑÐ°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
.
+* `PUT`: Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
.
+* `DELETE`: Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
.
+
+Ð OpenAPI кожен HTTP меÑод називаÑÑÑÑÑ "опеÑаÑÑÑ".
+
+Ðи Ñакож бÑдемо доÑÑимÑваÑиÑÑ ÑÑого ÑеÑмÑна.
+
+#### ÐизнаÑÑе декоÑаÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ (path operation decorator)
+
+```Python hl_lines="6"
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+ÐекоÑаÑÐ¾Ñ `@app.get("/")` вказÑÑ **FastAPI**, Ñо ÑÑнкÑÑÑ Ð½Ð¸Ð¶Ñе, вÑдповÑÐ´Ð°Ñ Ð·Ð° обÑÐ¾Ð±ÐºÑ Ð·Ð°Ð¿Ð¸ÑÑв, ÑÐºÑ Ð½Ð°Ð´Ñ
одÑÑÑ Ð´Ð¾ неÑ:
+
+* ÑлÑÑ
`/`
+* викоÑиÑÑовÑÑÑи get
опеÑаÑÑÑ
+
+!!! info "`@decorator` ÐодаÑкова ÑнÑоÑмаÑÑÑ"
+ СинÑакÑÐ¸Ñ `@something` Ñ Python називаÑÑÑÑÑ "декоÑаÑоÑом".
+
+ Ðи ÑозÑаÑовÑÑÑе його над ÑÑнкÑÑÑÑ. Як гаÑний декоÑаÑивний капелÑÑ
(мабÑÑÑ, звÑдÑи поÑ
одиÑÑ ÑеÑмÑн).
+
+ "ÐекоÑаÑоÑ" пÑÐ¸Ð¹Ð¼Ð°Ñ ÑÑнкÑÑÑ Ð½Ð¸Ð¶Ñе Ñ Ð²Ð¸ÐºÐ¾Ð½ÑÑ Ð· Ð½ÐµÑ ÑкÑÑÑ Ð´ÑÑ.
+
+ У наÑÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ, Ñей декоÑаÑÐ¾Ñ Ð¿Ð¾Ð²ÑдомлÑÑ **FastAPI**, Ñо ÑÑнкÑÑÑ Ð½Ð¸Ð¶Ñе вÑдповÑÐ´Ð°Ñ **ÑлÑÑ
Ñ** `/` Ñ **опеÑаÑÑÑ** `get`.
+
+ Це Ñ Ñ "декоÑаÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ (path operation decorator)".
+
+Ðожна Ñакож викоÑиÑÑовÑваÑи опеÑаÑÑÑ:
+
+* `@app.post()`
+* `@app.put()`
+* `@app.delete()`
+
+РбÑлÑÑ ÐµÐºÐ·Ð¾ÑиÑнÑ:
+
+* `@app.options()`
+* `@app.head()`
+* `@app.patch()`
+* `@app.trace()`
+
+!!! tip "ÐоÑада"
+ Ðи можеÑе викоÑиÑÑовÑваÑи ÐºÐ¾Ð¶Ð½Ñ Ð¾Ð¿ÐµÑаÑÑÑ (HTTP-меÑод) на ÑвÑй ÑозÑÑд.
+
+ **FastAPI** не нав'ÑзÑÑ Ð¶Ð¾Ð´Ð½Ð¾Ð³Ð¾ певного знаÑÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ меÑодÑ.
+
+ Ðаведена ÑÑÑ ÑнÑоÑмаÑÑÑ Ñ ÑекомендаÑÑÑÑ, а не обов'ÑÐ·ÐºÐ¾Ð²Ð¾Ñ Ð²Ð¸Ð¼Ð¾Ð³Ð¾Ñ.
+
+ ÐапÑиклад, пÑд ÑÐ°Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ GraphQL зазвиÑай ÑÑÑ Ð´ÑÑ Ð²Ð¸ÐºÐ¾Ð½ÑÑÑÑÑÑ ÑÑлÑки за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ `POST` опеÑаÑÑй.
+
+
+### ÐÑок 4: визнаÑÑе **ÑÑнкÑÑÑ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ (path operation function)**
+
+ÐÑÑ "**ÑÑнкÑÑÑ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ**":
+
+* **ÑлÑÑ
**: Ñе `/`.
+* **опеÑаÑÑÑ**: Ñе `get`.
+* **ÑÑнкÑÑÑ**: Ñе ÑÑнкÑÑÑ, Ñка знаÑ
одиÑÑÑÑ Ð½Ð¸Ð¶Ñе "декоÑаÑоÑа" (нижÑе `@app.get("/")`).
+
+```Python hl_lines="7"
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+
+Це звиÑайна ÑÑнкÑÑÑ Python.
+
+FastAPI викликаÑиме ÑÑ ÑоÑазÑ, коли оÑÑÐ¸Ð¼Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ URL Ñз ÑлÑÑ
ом "/", викоÑиÑÑовÑÑÑи опеÑаÑÑÑ `GET`.
+
+У Ð´Ð°Ð½Ð¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ñе аÑинÑ
Ñонна ÑÑнкÑÑÑ.
+
+---
+
+Ðи Ñакож можеÑе визнаÑиÑи ÑÑ Ñк звиÑÐ°Ð¹Ð½Ñ ÑÑнкÑÑÑ Ð·Ð°Ð¼ÑÑÑÑ `async def`:
+
+```Python hl_lines="7"
+{!../../../docs_src/first_steps/tutorial003.py!}
+```
+
+!!! note "ÐÑимÑÑка"
+ ЯкÑо не знаÑÑе в ÑÐ¾Ð¼Ñ ÑÑзниÑÑ, подивÑÑÑÑÑ [ÐонкÑÑенÑнÑÑÑÑ: *"ÐоÑпÑÑаÑÑ?"*](../async.md#in-a-hurry){.internal-link target=_blank}.
+
+### ÐÑок 5: повеÑнÑÑÑ ÑезÑлÑÑаÑ
+
+```Python hl_lines="8"
+{!../../../docs_src/first_steps/tutorial001.py!}
+```
+
+Ðи можеÑе повеÑнÑÑи `dict`, `list`, а Ñакож окÑÐµÐ¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ `str`, `int`, ÑÑд.
+
+Також можна повеÑнÑÑи Ð¼Ð¾Ð´ÐµÐ»Ñ Pydantic (пÑо Ñе ви дÑзнаÑÑеÑÑ Ð¿ÑзнÑÑе).
+
+ÐÑнÑÑ Ð±Ð°Ð³Ð°Ñо ÑнÑиÑ
об'ÑкÑÑв Ñ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹, ÑÐºÑ Ð±ÑдÑÑÑ Ð°Ð²ÑомаÑиÑно конвеÑÑÐ¾Ð²Ð°Ð½Ñ Ð² JSON (зокÑема ORM ÑоÑо). СпÑобÑйÑе викоÑиÑÑаÑи ÑÐ²Ð¾Ñ ÑлÑбленÑ, велика ймовÑÑнÑÑÑÑ, Ñо вони вже пÑдÑÑимÑÑÑÑÑÑ.
+
+## ÐÑдÑб'Ñмо пÑдÑÑмки
+
+* ÐмпоÑÑÑÑмо `FastAPI`.
+* СÑвоÑÑÑмо екземплÑÑ `app`.
+* ÐиÑемо **декоÑаÑÐ¾Ñ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ** Ñк `@app.get("/")`.
+* ÐиÑемо **ÑÑнкÑÑÑ Ð¾Ð¿ÐµÑаÑÑÑ ÑлÑÑ
Ñ**; напÑиклад, `def root(): ...`.
+* ÐапÑÑкаÑмо ÑеÑÐ²ÐµÑ Ñ ÑÐµÐ¶Ð¸Ð¼Ñ ÑозÑобки `fastapi dev`.