Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Add Russian translation for docs/ru/docs/tutorial/body-multiple-params.md #9586

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
309 changes: 309 additions & 0 deletions docs/ru/docs/tutorial/body-multiple-params.md
@@ -0,0 +1,309 @@
# Body - ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Path` ΠΈ `Query` ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ обьявлСния Ρ‚Π΅Π»Π° запроса.

## ОбьСдинСниС `Path`, `Query` ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄Π΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `Path`, `Query` ΠΈ объявлСния Ρ‚Π΅Π»Π° запроса Π² своих функциях ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, **FastAPI** автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π»Π° запроса ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, установив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ€Π°Π²Π½ΠΎΠ΅ `None`:

=== "Python 3.10+"

```Python hl_lines="18-20"
{!> ../../../docs_src/body_multiple_params/tutorial001_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="18-20"
{!> ../../../docs_src/body_multiple_params/tutorial001_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="19-21"
{!> ../../../docs_src/body_multiple_params/tutorial001_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="17-19"
{!> ../../../docs_src/body_multiple_params/tutorial001_py310.py!}
```

=== "Python 3.6+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

```Python hl_lines="19-21"
{!> ../../../docs_src/body_multiple_params/tutorial001.py!}
```

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ взят ΠΈΠ· Ρ‚Π΅Π»Π° запроса, нСобязатСлСн. Π’Π°ΠΊ ΠΊΠ°ΠΊ, Π±Ρ‹Π»ΠΎ установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `None` ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

## Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π»Π°
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, *path operations* ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ JSON-Ρ‚Π΅Π»ΠΎ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `Item`, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ:
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

```JSON
{
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
```

Но Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ мноТСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π΅Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `item` ΠΈ `user`:
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

=== "Python 3.10+"

```Python hl_lines="20"
{!> ../../../docs_src/body_multiple_params/tutorial002_py310.py!}
```

=== "Python 3.6+"

```Python hl_lines="22"
{!> ../../../docs_src/body_multiple_params/tutorial002.py!}
```

Π’ этом случаС, **FastAPI** Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ‚Π΅Π»Π° (Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ модСлями Pydantic).
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (ΠΈΠΌΡ‘Π½ ΠΏΠΎΠ»Π΅ΠΉ) Π² Ρ‚Π΅Π»Π΅ запроса, ΠΈ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

```JSON
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
},
"user": {
"username": "dave",
"full_name": "Dave Grohl"
}
}
```

!!! Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ хотя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` Π±Ρ‹Π» объявлСн Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдпологаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ `item`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ хотя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` Π±Ρ‹Π» объявлСн Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдпологаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ `item`.
ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ хотя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` Π±Ρ‹Π» объявлСн Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ `item`.



**FastAPI** сдСлаСт автоматичСскиС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· запроса, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ своё ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ содСрТимоС, ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС происходит с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ `user`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**FastAPI** сдСлаСт автоматичСскиС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· запроса, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ своё ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ содСрТимоС, ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС происходит с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ `user`.
**FastAPI** сдСлаСт автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· запроса, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ своё ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ содСрТимоС, ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ `user`.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Π― Π½Π΅ спСциалист ΠΏΠΎ запятым, Π½ΠΎ каТСтся здСсь, ΠΏΠ΅Ρ€Π΅Π΄ "ΠΈ", Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.


ΠŸΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° составных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² схСмС OpenAPI ΠΈ автоматичСских Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ΠŸΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° составных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² схСмС OpenAPI ΠΈ автоматичСских Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….
FastAPI ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ этих составных Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… для схСмы OpenAPI ΠΈ Π°Π²Ρ‚ΠΎ-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Π’ΡƒΡ‚ слоТноватая строчка для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, Π½ΠΎ ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚..


## ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π² Ρ‚Π΅Π»Π΅ запроса

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ `Query` `Path` для опрСдСлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, для query ΠΈ path ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², **FastAPI** прСдоставляСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт - `Body`.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

НапримСр, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ модСль, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `importance` Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ‚Π΅Π»Π΅ запроса, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² `item` ΠΈ `user`.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Если Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ это, ΠΈΠ·-Π·Π° СдинствСнного значСния, **FastAPI** Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ **FastAPI** ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ»ΡŽΡ‡ Ρ‚Π΅Π»Π° запроса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ `Body`:
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

=== "Python 3.10+"

```Python hl_lines="23"
{!> ../../../docs_src/body_multiple_params/tutorial003_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="23"
{!> ../../../docs_src/body_multiple_params/tutorial003_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="24"
{!> ../../../docs_src/body_multiple_params/tutorial003_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="20"
{!> ../../../docs_src/body_multiple_params/tutorial003_py310.py!}
```

=== "Python 3.6+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="22"
{!> ../../../docs_src/body_multiple_params/tutorial003.py!}
```

Π’ этом случаС, **FastAPI** Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

```JSON
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
},
"user": {
"username": "dave",
"full_name": "Dave Grohl"
},
"importance": 5
}
```

Π’Π°ΠΊΠΆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, валидация, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ‚.Π΄.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

## ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ body ΠΈ query ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² любоС врСмя, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ query-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ явно Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ `Query`, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

```Python
q: Union[str, None] = None
```

Или Π² Python 3.10 ΠΈ Π²Ρ‹ΡˆΠ΅:

```Python
q: str | None = None
```

НапримСр:

=== "Python 3.10+"

```Python hl_lines="27"
{!> ../../../docs_src/body_multiple_params/tutorial004_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="27"
{!> ../../../docs_src/body_multiple_params/tutorial004_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="28"
{!> ../../../docs_src/body_multiple_params/tutorial004_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="25"
{!> ../../../docs_src/body_multiple_params/tutorial004_py310.py!}
```

=== "Python 3.6+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="27"
{!> ../../../docs_src/body_multiple_params/tutorial004.py!}
```

!!! Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ
`Body` Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ всС Ρ‚Π΅ ΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρƒ `Query`,`Path` ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅.

## Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item` ΠΈΠ· Pydantic ΠΌΠΎΠ΄Π΅Π»ΠΈ `Item`.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, **FastAPI** ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Но Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π» JSON с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ `item` с содСрТимым ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ это происходит ΠΏΡ€ΠΈ объявлСнии Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `embed` Ρƒ Ρ‚ΠΈΠΏΠ° `Body`:

```Python
item: Item = Body(embed=True)
```

Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

=== "Python 3.10+"

```Python hl_lines="17"
{!> ../../../docs_src/body_multiple_params/tutorial005_an_py310.py!}
```

=== "Python 3.9+"

```Python hl_lines="17"
{!> ../../../docs_src/body_multiple_params/tutorial005_an_py39.py!}
```

=== "Python 3.6+"

```Python hl_lines="18"
{!> ../../../docs_src/body_multiple_params/tutorial005_an.py!}
```

=== "Python 3.10+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="15"
{!> ../../../docs_src/body_multiple_params/tutorial005_py310.py!}
```

=== "Python 3.6+ non-Annotated"

!!! Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Annotated` Π²Π΅Ρ€ΡΠΈΡŽ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

```Python hl_lines="17"
{!> ../../../docs_src/body_multiple_params/tutorial005.py!}
```

Π’ этом случаС **FastAPI** Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

```JSON hl_lines="2"
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
}
```

вмСсто этого:

```JSON
{
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
```

## РСзюмС

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ нСсколько body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² вашСй *Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*, Π΄Π°ΠΆΠ΅ Ссли запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Ρ‚Π΅Π»ΠΎ.
Alexandrhub marked this conversation as resolved.
Show resolved Hide resolved

Но **FastAPI** справится с этим, прСдоставит ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² вашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сдСлаСт Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ схСмы *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния для получСния Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅Π»Π° запроса.

И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ **FastAPI** Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π² ΠΊΠ»ΡŽΡ‡, Π΄Π°ΠΆΠ΅ Ссли объявлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ FastAPI Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ запроса Π² ΠΊΠ»ΡŽΡ‡, Π΄Π°ΠΆΠ΅ Ссли объявлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Π§Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ нСсуразно...

1 change: 1 addition & 0 deletions docs/ru/mkdocs.yml
Expand Up @@ -74,6 +74,7 @@ nav:
- tutorial/cookie-params.md
- tutorial/testing.md
- tutorial/response-status-code.md
- tutorial/body-multiple-params.md
- async.md
- Π Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅:
- deployment/index.md
Expand Down