From: Sebastián Ramírez
- ФÑеймвоÑк FastAPI: виÑока пÑодÑкÑивнÑÑÑÑ, легко вивÑаÑи, Ñвидко пиÑаÑи код, гоÑовий до пÑодакÑÐ¸Ð½Ñ + ФÑеймвоÑк FastAPI - Ñе виÑока пÑодÑкÑивнÑÑÑÑ, легко вивÑаÑи, Ñвидко пиÑаÑи код, гоÑовий до пÑодакÑинÑ
@@ -33,14 +33,14 @@
---
-FastAPI â Ñе ÑÑÑаÑний, Ñвидкий (виÑокопÑодÑкÑивний) вебÑÑеймвоÑк Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ API за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Python, Ñо базÑÑÑÑÑÑ Ð½Ð° ÑÑандаÑÑниÑ
пÑдказкаÑ
ÑипÑв Python.
+FastAPI - Ñе ÑÑÑаÑний, Ñвидкий (виÑокопÑодÑкÑивний) вебÑÑеймвоÑк Ð´Ð»Ñ ÑÑвоÑÐµÐ½Ð½Ñ API за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Python, Ñо базÑÑÑÑÑÑ Ð½Ð° ÑÑандаÑÑниÑ
пÑдказкаÑ
ÑипÑв Python.
ÐлÑÑÐ¾Ð²Ñ Ð¾ÑобливоÑÑÑ:
* **Швидкий**: дÑже виÑока пÑодÑкÑивнÑÑÑÑ, на ÑÑÐ²Ð½Ñ Ð· **NodeJS** Ñа **Go** (завдÑки Starlette Ñа Pydantic). [Ðдин Ñз найÑвидÑиÑ
Python-ÑÑеймвоÑкÑв](#performance).
* **Швидке напиÑÐ°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ**: пÑиÑвидÑÑÑ ÑозÑÐ¾Ð±ÐºÑ ÑÑнкÑÑÐ¾Ð½Ð°Ð»Ñ Ð¿Ñиблизно на 200%â300%. *
* **ÐенÑе помилок**: зменÑÑÑ Ð¿Ñиблизно на 40% кÑлÑкÑÑÑÑ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº, ÑпÑиÑинениÑ
лÑÐ´Ð¸Ð½Ð¾Ñ (ÑозÑобником). *
-* **ÐнÑÑÑÑивний**: ÑÑдова пÑдÑÑимка ÑедакÑоÑами кодÑ. ÐвÑÐ¾Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²ÑÑди. ÐенÑе ÑаÑÑ Ð½Ð° налагодженнÑ.
+* **ÐнÑÑÑÑивний**: ÑÑдова пÑдÑÑимка ÑедакÑоÑами кодÑ. ÐвÑÐ¾Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²ÑÑди. ÐенÑе ÑаÑÑ Ð½Ð° налагодженнÑ.
* **ÐÑоÑÑий**: ÑпÑоÑкÑований Ñак, Ñоб бÑÑи пÑоÑÑим Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ñа вивÑеннÑ. ÐенÑе ÑаÑÑ Ð½Ð° ÑиÑÐ°Ð½Ð½Ñ Ð´Ð¾ÐºÑменÑаÑÑÑ.
* **ÐоÑоÑкий**: мÑнÑмÑзÑÑ Ð´ÑблÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ. ÐÑлÑка можливоÑÑей з кожного оголоÑÐµÐ½Ð½Ñ Ð¿Ð°ÑамеÑÑа. ÐенÑе помилок.
* **ÐадÑйний**: ви оÑÑимÑÑÑе код, гоÑовий до пÑодакÑинÑ. РавÑомаÑиÑÐ½Ð¾Ñ ÑнÑеÑакÑÐ¸Ð²Ð½Ð¾Ñ Ð´Ð¾ÐºÑменÑаÑÑÑÑ.
@@ -127,9 +127,9 @@ FastAPI â Ñе ÑÑÑаÑний, Ñвидкий (виÑокопÑодÑкÑи
-ЯкÑо ви ÑÑвоÑÑÑÑе заÑÑоÑÑнок CLI Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð² ÑеÑмÑÐ½Ð°Ð»Ñ Ð·Ð°Ð¼ÑÑÑÑ Ð²ÐµÐ±-API, звеÑнÑÑÑ ÑÐ²Ð°Ð³Ñ Ð½Ð° **Typer**.
+ЯкÑо ви ÑÑвоÑÑÑÑе заÑÑоÑÑнок CLI Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð² ÑеÑмÑÐ½Ð°Ð»Ñ Ð·Ð°Ð¼ÑÑÑÑ Ð²ÐµÐ±-API, звеÑнÑÑÑ ÑÐ²Ð°Ð³Ñ Ð½Ð° **Typer**.
-**Typer** â молодÑий бÑÐ°Ñ FastAPI. Рйого задÑмано Ñк **FastAPI Ð´Ð»Ñ CLI**. â¨ï¸ ð
+**Typer** - молодÑий бÑÐ°Ñ FastAPI. Рйого задÑмано Ñк **FastAPI Ð´Ð»Ñ CLI**. â¨ï¸ ð
## Ðимоги { #requirements }
@@ -161,8 +161,6 @@ $ pip install "fastapi[standard]"
СÑвоÑÑÑÑ Ñайл `main.py` з:
```Python
-from typing import Union
-
from fastapi import FastAPI
app = FastAPI()
@@ -174,7 +172,7 @@ def read_root():
@app.get("/items/{item_id}")
-def read_item(item_id: int, q: Union[str, None] = None):
+def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
```
@@ -183,9 +181,7 @@ def read_item(item_id: int, q: Union[str, None] = None):
ЯкÑо Ð²Ð°Ñ ÐºÐ¾Ð´ викоÑиÑÑовÑÑ `async` / `await`, ÑкоÑиÑÑайÑеÑÑ `async def`:
-```Python hl_lines="9 14"
-from typing import Union
-
+```Python hl_lines="7 12"
from fastapi import FastAPI
app = FastAPI()
@@ -197,7 +193,7 @@ async def read_root():
@app.get("/items/{item_id}")
-async def read_item(item_id: int, q: Union[str, None] = None):
+async def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
```
@@ -288,9 +284,7 @@ INFO: Application startup complete.
ÐголоÑÑÑÑ ÑÑло, викоÑиÑÑовÑÑÑи ÑÑандаÑÑÐ½Ñ Ñипи Python, завдÑки Pydantic.
-```Python hl_lines="4 9-12 25-27"
-from typing import Union
-
+```Python hl_lines="2 7-10 23-25"
from fastapi import FastAPI
from pydantic import BaseModel
@@ -300,7 +294,7 @@ app = FastAPI()
class Item(BaseModel):
name: str
price: float
- is_offer: Union[bool, None] = None
+ is_offer: bool | None = None
@app.get("/")
@@ -309,7 +303,7 @@ def read_root():
@app.get("/items/{item_id}")
-def read_item(item_id: int, q: Union[str, None] = None):
+def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
@@ -374,7 +368,7 @@ item: Item
* ÐалÑдаÑÑÑ Ð´Ð°Ð½Ð¸Ñ
:
* ÐвÑомаÑиÑÐ½Ñ Ñа зÑозÑмÑÐ»Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸, коли Ð´Ð°Ð½Ñ Ð½ÐµÐºÐ¾ÑекÑнÑ.
* ÐалÑдаÑÑÑ Ð½Ð°Ð²ÑÑÑ Ð´Ð»Ñ Ð³Ð»Ð¸Ð±Ð¾ÐºÐ¾ вкладениÑ
JSON-обʼÑкÑÑв.
-* ÐеÑеÑвоÑÐµÐ½Ð½Ñ Ð²Ñ
ÑдниÑ
даниÑ
: з меÑÐµÐ¶Ñ Ð´Ð¾ даниÑ
Ñ ÑипÑв Python. ЧиÑÐ°Ð½Ð½Ñ Ð·:
+* ÐеÑеÑвоÑÐµÐ½Ð½Ñ Ð²Ñ
ÑдниÑ
даниÑ
: з меÑÐµÐ¶Ñ Ð´Ð¾ даниÑ
Ñ ÑипÑв Python. ЧиÑÐ°Ð½Ð½Ñ Ð·:
* JSON.
* ÐаÑамеÑÑÑв ÑлÑÑ
Ñ.
* ÐаÑамеÑÑÑв запиÑÑ.
@@ -382,7 +376,7 @@ item: Item
* Headers.
* Forms.
* Files.
-* ÐеÑеÑвоÑÐµÐ½Ð½Ñ Ð²Ð¸Ñ
ÑдниÑ
даниÑ
: пеÑеÑвоÑÐµÐ½Ð½Ñ Ð· даниÑ
Ñ ÑипÑв Python Ñ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ñ Ð´Ð°Ð½Ñ (Ñк JSON):
+* ÐеÑеÑвоÑÐµÐ½Ð½Ñ Ð²Ð¸Ñ
ÑдниÑ
даниÑ
: пеÑеÑвоÑÐµÐ½Ð½Ñ Ð· даниÑ
Ñ ÑипÑв Python Ñ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ñ Ð´Ð°Ð½Ñ (Ñк JSON):
* ÐеÑеÑвоÑÐµÐ½Ð½Ñ ÑипÑв Python (`str`, `int`, `float`, `bool`, `list`, ÑоÑо).
* ÐбʼÑкÑÑв `datetime`.
* ÐбʼÑкÑÑв `UUID`.
@@ -439,9 +433,9 @@ item: Item

-ÐÐ»Ñ Ð±ÑлÑÑ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ пÑикладÑ, Ñо вклÑÑÐ°Ñ Ð±ÑлÑÑе можливоÑÑей, пеÑеглÑнÑÑе ТÑÑоÑÑал â ÐоÑÑбник коÑиÑÑÑваÑа.
+ÐÐ»Ñ Ð±ÑлÑÑ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ пÑикладÑ, Ñо вклÑÑÐ°Ñ Ð±ÑлÑÑе можливоÑÑей, пеÑеглÑнÑÑе ÐавÑалÑний поÑÑбник - ÐоÑÑбник коÑиÑÑÑваÑа.
-**Spoiler alert**: ÑÑÑоÑÑал â поÑÑбник коÑиÑÑÑваÑа мÑÑÑиÑÑ:
+**ÐопеÑÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñо ÑпойлеÑ**: навÑалÑний поÑÑбник - поÑÑбник коÑиÑÑÑваÑа мÑÑÑиÑÑ:
* ÐголоÑÐµÐ½Ð½Ñ **паÑамеÑÑÑв** з ÑнÑиÑ
ÑÑзниÑ
мÑÑÑÑ, Ñк-оÑ: **headers**, **cookies**, **form fields** Ñа **files**.
* Як вÑÑановлÑваÑи **Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð²Ð°Ð»ÑдаÑÑÑ** Ñк `maximum_length` або `regex`.
@@ -500,11 +494,11 @@ Deploying to FastAPI Cloud...
ÐÑн забезпеÑÑÑ Ñой Ñамий **developer experience** ÑÑвоÑÐµÐ½Ð½Ñ Ð·Ð°ÑÑоÑÑнкÑв на FastAPI пÑд ÑÐ°Ñ ÑÑ
**ÑозгоÑÑаннÑ** Ñ Ñ
маÑÑ. ð
-FastAPI Cloud â оÑновний ÑпонÑÐ¾Ñ Ñ Ð´Ð¶ÐµÑело ÑÑнанÑÑÐ²Ð°Ð½Ð½Ñ open source пÑоÑкÑÑв *FastAPI and friends*. â¨
+FastAPI Cloud - оÑновний ÑпонÑÐ¾Ñ Ñ Ð´Ð¶ÐµÑело ÑÑнанÑÑÐ²Ð°Ð½Ð½Ñ open source пÑоÑкÑÑв *FastAPI and friends*. â¨
#### РозгоÑÑÐ°Ð½Ð½Ñ Ð² ÑнÑиÑ
Ñ
маÑниÑ
пÑовайдеÑÑв { #deploy-to-other-cloud-providers }
-FastAPI â open source Ñ Ð±Ð°Ð·ÑÑÑÑÑÑ Ð½Ð° ÑÑандаÑÑаÑ
. Ðи можеÑе ÑозгоÑÑаÑи заÑÑоÑÑнки FastAPI в бÑдÑ-ÑÐºÐ¾Ð¼Ñ Ñ
маÑÐ½Ð¾Ð¼Ñ Ð¿ÑовайдеÑÑ, Ñкий ви обеÑеÑе.
+FastAPI - open source пÑÐ¾ÐµÐºÑ Ñ Ð±Ð°Ð·ÑÑÑÑÑÑ Ð½Ð° ÑÑандаÑÑаÑ
. Ðи можеÑе ÑозгоÑÑаÑи заÑÑоÑÑнки FastAPI в бÑдÑ-ÑÐºÐ¾Ð¼Ñ Ñ
маÑÐ½Ð¾Ð¼Ñ Ð¿ÑовайдеÑÑ, Ñкий ви обеÑеÑе.
ÐоÑÑимÑйÑеÑÑ ÑнÑÑÑÑкÑÑй ваÑого Ñ
маÑного пÑовайдеÑа, Ñоб ÑозгоÑнÑÑи заÑÑоÑÑнки FastAPI Ñ Ð½Ñого. ð¤
@@ -530,7 +524,7 @@ FastAPI залежиÑÑ Ð²Ñд Pydantic Ñ Starlette.
*
httpx - поÑÑÑбно, ÑкÑо ви Ñ
оÑеÑе викоÑиÑÑовÑваÑи `TestClient`.
* jinja2 - поÑÑÑбно, ÑкÑо ви Ñ
оÑеÑе викоÑиÑÑовÑваÑи конÑÑгÑÑаÑÑÑ ÑаблонÑв за замовÑÑваннÑм.
-* python-multipart - поÑÑÑбно, ÑкÑо ви Ñ
оÑеÑе пÑдÑÑимÑваÑи «parsing» ÑоÑм за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ `request.form()`.
+* python-multipart - поÑÑÑбно, ÑкÑо ви Ñ
оÑеÑе пÑдÑÑимÑваÑи «parsing» ÑоÑм за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ `request.form()`.
ÐикоÑиÑÑовÑÑÑÑÑÑ FastAPI:
diff --git a/docs/uk/docs/tutorial/body-multiple-params.md b/docs/uk/docs/tutorial/body-multiple-params.md
index dc9a768c35..f541beea76 100644
--- a/docs/uk/docs/tutorial/body-multiple-params.md
+++ b/docs/uk/docs/tutorial/body-multiple-params.md
@@ -103,15 +103,16 @@
ÐÑкÑлÑки за замовÑÑваннÑм одиниÑÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑнÑеÑпÑеÑÑÑÑÑÑÑ Ñк паÑамеÑÑи запиÑÑ, вам не поÑÑÑбно Ñвно додаваÑи `Query`, ви можеÑе пÑоÑÑо зÑобиÑи:
```Python
-q: Union[str, None] = None
+q: str | None = None
```
-Ðбо в Python 3.10 Ñ Ð²Ð¸Ñе:
+Ðбо в Python 3.9:
```Python
-q: str | None = None
+q: Union[str, None] = None
```
+
ÐапÑиклад:
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
@@ -129,7 +130,7 @@ q: str | None = None
Ðа замовÑÑваннÑм **FastAPI** оÑÑкÑваÑиме його ÑÑло безпоÑеÑеднÑо.
-Ðле ÑкÑо ви Ñ
оÑеÑе, Ñоб вÑн оÑÑкÑвав JSON з клÑÑем `item`, а вÑеÑÐµÐ´Ð¸Ð½Ñ Ð½Ñого â вмÑÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ, Ñк Ñе вÑдбÑваÑÑÑÑÑ, коли ви оголоÑÑÑÑе додаÑÐºÐ¾Ð²Ñ Ð¿Ð°ÑамеÑÑи ÑÑла, ви можеÑе викоÑиÑÑаÑи ÑпеÑÑалÑний паÑамеÑÑ `Body` â `embed`:
+Ðле ÑкÑо ви Ñ
оÑеÑе, Ñоб вÑн оÑÑкÑвав JSON з клÑÑем `item`, а вÑеÑÐµÐ´Ð¸Ð½Ñ Ð½Ñого - вмÑÑÑ Ð¼Ð¾Ð´ÐµÐ»Ñ, Ñк Ñе вÑдбÑваÑÑÑÑÑ, коли ви оголоÑÑÑÑе додаÑÐºÐ¾Ð²Ñ Ð¿Ð°ÑамеÑÑи ÑÑла, ви можеÑе викоÑиÑÑаÑи ÑпеÑÑалÑний паÑамеÑÑ `Body` - `embed`:
```Python
item: Item = Body(embed=True)