Files
fastapi/docs/hi/docs/tutorial/path-params.md
T
452e526877 ЁЯМР Update translations for hi (update-outdated) (#16212)
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>
2026-08-19 10:58:07 +02:00

252 lines
14 KiB
Markdown

# Path Parameters { #path-parameters }
рдЖрдк Python format strings рджреНрд╡рд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рди syntax рдХреЗ рд╕рд╛рде path "parameters" рдпрд╛ "variables" declare рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{* ../../docs_src/path_params/tutorial001_py310.py hl[6:7] *}
path parameter `item_id` рдХреА value рдЖрдкрдХреЗ function рдХреЛ argument `item_id` рдХреЗ рд░реВрдк рдореЗрдВ pass рдХреА рдЬрд╛рдПрдЧреАред
рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдЖрдк рдпрд╣ example run рдХрд░рддреЗ рд╣реИрдВ рдФрд░ [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ response рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
```JSON
{"item_id":"foo"}
```
## Types рдХреЗ рд╕рд╛рде Path parameters { #path-parameters-with-types }
рдЖрдк standard Python type annotations рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ function рдореЗрдВ рдХрд┐рд╕реА path parameter рдХрд╛ type declare рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{* ../../docs_src/path_params/tutorial002_py310.py hl[7] *}
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, `item_id` рдХреЛ `int` declare рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
/// tip | рд╕реБрдЭрд╛рд╡
рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ function рдХреЗ рдЕрдВрджрд░ editor support рдорд┐рд▓реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ error checks, completion рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
///
## Data <dfn title="рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ: serialization, parsing, marshalling">conversion</dfn> { #data-conversion }
рдЕрдЧрд░ рдЖрдк рдпрд╣ example run рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ browser рдореЗрдВ [http://127.0.0.1:8000/items/3](http://127.0.0.1:8000/items/3) рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ response рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
```JSON
{"item_id":3}
```
/// tip | рд╕реБрдЭрд╛рд╡
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ function рдиреЗ рдЬреЛ value рдкреНрд░рд╛рдкреНрдд рдХреА (рдФрд░ return рдХреА) рд╡рд╣ `3` рд╣реИ, Python `int` рдХреЗ рд░реВрдк рдореЗрдВ, рди рдХрд┐ string `"3"`ред
рддреЛ, рдЙрд╕ type declaration рдХреЗ рд╕рд╛рде, **FastAPI** рдЖрдкрдХреЛ automatic request <dfn title="HTTP request рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА string рдХреЛ Python data рдореЗрдВ рдмрджрд▓рдирд╛">"parsing"</dfn> рджреЗрддрд╛ рд╣реИред
///
## Data validation { #data-validation }
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк browser рдореЗрдВ [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдЕрдЪреНрдЫрд╛ HTTP error рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
```JSON
{
"detail": [
{
"type": "int_parsing",
"loc": [
"path",
"item_id"
],
"msg": "Input should be a valid integer, unable to parse string as an integer",
"input": "foo"
}
]
}
```
рдХреНрдпреЛрдВрдХрд┐ path parameter `item_id` рдХреА value `"foo"` рдереА, рдЬреЛ рдХрд┐ `int` рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдЖрдкрдиреЗ `int` рдХреЗ рдмрдЬрд╛рдп `float` рджрд┐рдпрд╛, рддреЛ рднреА рд╡рд╣реА error рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬреИрд╕реЗ: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
/// tip | рд╕реБрдЭрд╛рд╡
рддреЛ, рдЙрд╕реА Python type declaration рдХреЗ рд╕рд╛рде, **FastAPI** рдЖрдкрдХреЛ data validation рджреЗрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ error рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ validation рдХрд┐рд╕ рдЬрдЧрд╣ pass рдирд╣реАрдВ рд╣реБрдЖред
рдпрд╣ рдЖрдкрдХреЗ API рдХреЗ рд╕рд╛рде interact рдХрд░рдиреЗ рд╡рд╛рд▓реЗ code рдХреЛ develop рдФрд░ debug рдХрд░рддреЗ рд╕рдордп рдмреЗрд╣рдж рдорджрджрдЧрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
///
## Documentation { #documentation }
рдФрд░ рдЬрдм рдЖрдк рдЕрдкрдиреЗ browser рдореЗрдВ [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ automatic, interactive, API documentation рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
<img src="/img/tutorial/path-params/image01.png">
/// tip | рд╕реБрдЭрд╛рд╡
рдлрд┐рд░ рд╕реЗ, рдмрд╕ рдЙрд╕реА Python type declaration рдХреЗ рд╕рд╛рде, **FastAPI** рдЖрдкрдХреЛ automatic, interactive documentation рджреЗрддрд╛ рд╣реИ (Swagger UI рдХреЛ integrate рдХрд░рддреЗ рд╣реБрдП)ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ path parameter рдХреЛ integer рдХреЗ рд░реВрдк рдореЗрдВ declare рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
///
## Standard-рдЖрдзрд╛рд░рд┐рдд рд▓рд╛рдн, рд╡реИрдХрд▓реНрдкрд┐рдХ documentation { #standards-based-benefits-alternative-documentation }
рдФрд░ рдХреНрдпреЛрдВрдХрд┐ generate рдХрд┐рдпрд╛ рдЧрдпрд╛ schema [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md) standard рд╕реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ compatible tools рд╣реИрдВред
рдЗрд╕реА рд╡рдЬрд╣ рд╕реЗ, **FastAPI** рд╕реНрд╡рдпрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ API documentation рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (ReDoc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП), рдЬрд┐рд╕реЗ рдЖрдк [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) рдкрд░ access рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<img src="/img/tutorial/path-params/image02.png">
рдЗрд╕реА рддрд░рд╣, рдХрдИ compatible tools рд╣реИрдВред рдЗрдирдореЗрдВ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП code generation tools рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
## Pydantic { #pydantic }
рд╕рд╛рд░рд╛ data validation рдЕрдВрджрд░реВрдиреА рддреМрд░ рдкрд░ [Pydantic](https://pydantic.dev/docs/) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рднреА рд▓рд╛рдн рдорд┐рд▓рддреЗ рд╣реИрдВред рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдЪреНрдЫреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд╣реИрдВред
рдЖрдк `str`, `float`, `bool` рдФрд░ рдХрдИ рдЕрдиреНрдп рдЬрдЯрд┐рд▓ data types рдХреЗ рд╕рд╛рде рд╡рд╣реА type declarations рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ tutorial рдХреЗ рдЕрдЧрд▓реЗ chapters рдореЗрдВ explore рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
## рдХреНрд░рдо рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ { #order-matters }
*path operations* рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ fixed path рд╣реЛред
рдЬреИрд╕реЗ `/users/me`, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ current user рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ data рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ `/users/{user_id}` path рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА specific user рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА user ID рд╕реЗ data рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдХреНрдпреЛрдВрдХрд┐ *path operations* рдХрд╛ evaluation рдХреНрд░рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ `/users/me` рдХреЗ рд▓рд┐рдП path, `/users/{user_id}` рд╡рд╛рд▓реЗ path рд╕реЗ рдкрд╣рд▓реЗ declare рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ:
{* ../../docs_src/path_params/tutorial003_py310.py hl[6,11] *}
рдЕрдиреНрдпрдерд╛, `/users/{user_id}` рдХреЗ рд▓рд┐рдП path `/users/me` рд╕реЗ рднреА match рдХрд░реЗрдЧрд╛, рдпрд╣ "рд╕реЛрдЪрддреЗ рд╣реБрдП" рдХрд┐ рдЙрд╕реЗ `user_id` parameter рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдХреА value `"me"` рд╣реИред
рдЗрд╕реА рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА path operation рдХреЛ рдлрд┐рд░ рд╕реЗ define рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:
{* ../../docs_src/path_params/tutorial003b_py310.py hl[6,11] *}
рдкрд╣рд▓рд╛ рд╡рд╛рд▓рд╛ рд╣рдореЗрд╢рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ path рдкрд╣рд▓реЗ match рдХрд░рддрд╛ рд╣реИред
## рдкрд╣рд▓реЗ рд╕реЗ рддрдп values { #predefined-values }
рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ *path operation* рд╣реИ рдЬреЛ рдПрдХ *path parameter* рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрднрд╡ valid *path parameter* values рдкрд╣рд▓реЗ рд╕реЗ рддрдп рд╣реЛрдВ, рддреЛ рдЖрдк standard Python <abbr title="Enumeration">`Enum`</abbr> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
### рдПрдХ `Enum` class рдмрдирд╛рдПрдВ { #create-an-enum-class }
`Enum` import рдХрд░реЗрдВ рдФрд░ рдПрдХ sub-class рдмрдирд╛рдПрдВ рдЬреЛ `str` рдФрд░ `Enum` рд╕реЗ inherit рдХрд░рддреА рд╣реЛред
`str` рд╕реЗ inherit рдХрд░рдиреЗ рдкрд░ API docs рдпрд╣ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдХрд┐ values рдХрд╛ type `string` рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░рд╣ рд╕реЗ render рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдлрд┐рд░ fixed values рдХреЗ рд╕рд╛рде class attributes рдмрдирд╛рдПрдВ, рдЬреЛ рдЙрдкрд▓рдмреНрдз valid values рд╣реЛрдВрдЧреА:
{* ../../docs_src/path_params/tutorial005_py310.py hl[1,6:9] *}
/// tip | рд╕реБрдЭрд╛рд╡
рдЕрдЧрд░ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ, "AlexNet", "ResNet", рдФрд░ "LeNet" рдмрд╕ Machine Learning <dfn title="рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, Deep Learning model architectures">models</dfn> рдХреЗ рдирд╛рдо рд╣реИрдВред
///
### рдПрдХ *path parameter* declare рдХрд░реЗрдВ { #declare-a-path-parameter }
рдлрд┐рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ enum class (`ModelName`) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ type annotation рдХреЗ рд╕рд╛рде рдПрдХ *path parameter* рдмрдирд╛рдПрдВ:
{* ../../docs_src/path_params/tutorial005_py310.py hl[16] *}
### Docs рджреЗрдЦреЗрдВ { #check-the-docs }
рдХреНрдпреЛрдВрдХрд┐ *path parameter* рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз values рдкрд╣рд▓реЗ рд╕реЗ рддрдп рд╣реИрдВ, interactive docs рдЙрдиреНрд╣реЗрдВ рдЕрдЪреНрдЫреЗ рд╕реЗ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
<img src="/img/tutorial/path-params/image03.png">
### Python *enumerations* рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ { #working-with-python-enumerations }
*path parameter* рдХреА value рдПрдХ *enumeration member* рд╣реЛрдЧреАред
#### *Enumeration members* рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ { #compare-enumeration-members }
рдЖрдк рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдЕрдкрдиреЗ рдмрдирд╛рдП рд╣реБрдП enum `ModelName` рдореЗрдВ рдореМрдЬреВрдж *enumeration member* рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{* ../../docs_src/path_params/tutorial005_py310.py hl[17] *}
#### *Enumeration value* рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ { #get-the-enumeration-value }
рдЖрдк `model_name.value` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ actual value (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ `str`) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, `your_enum_member.value`:
{* ../../docs_src/path_params/tutorial005_py310.py hl[20] *}
/// tip | рд╕реБрдЭрд╛рд╡
рдЖрдк `ModelName.lenet.value` рдХреЗ рд╕рд╛рде value `"lenet"` рднреА access рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
///
#### *Enumeration members* return рдХрд░реЗрдВ { #return-enumeration-members }
рдЖрдк рдЕрдкрдиреЗ *path operation* рд╕реЗ *enum members* return рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ JSON body рдореЗрдВ nested рднреА (рдЬреИрд╕реЗ рдПрдХ `dict`)ред
Client рдХреЛ return рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреА рд╕рдВрдмрдВрдзрд┐рдд values (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ strings) рдореЗрдВ convert рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
{* ../../docs_src/path_params/tutorial005_py310.py hl[18,21,23] *}
рдЕрдкрдиреЗ client рдореЗрдВ рдЖрдкрдХреЛ рдРрд╕рд╛ JSON response рдорд┐рд▓реЗрдЧрд╛:
```JSON
{
"model_name": "alexnet",
"message": "Deep Learning FTW!"
}
```
## Paths рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ Path parameters { #path-parameters-containing-paths }
рдорд╛рди рд▓реЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ path `/files/{file_path}` рдХреЗ рд╕рд╛рде рдПрдХ *path operation* рд╣реИред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ `file_path` рдореЗрдВ рд╕реНрд╡рдпрдВ рдПрдХ *path* рд░рдЦрдирд╛ рд╣реИ, рдЬреИрд╕реЗ `home/johndoe/myfile.txt`ред
рддреЛ, рдЙрд╕ file рдХреЗ рд▓рд┐рдП URL рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдЧрд╛: `/files/home/johndoe/myfile.txt`ред
### OpenAPI support { #openapi-support }
OpenAPI рдХрд┐рд╕реА *path parameter* рдХреЛ рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ *path* рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП declare рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ support рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдРрд╕реЗ scenarios рдмрди рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ test рдФрд░ define рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛред
рдлрд┐рд░ рднреА, рдЖрдк **FastAPI** рдореЗрдВ Starlette рдХреЗ internal tools рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ docs рдлрд┐рд░ рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдХреЛрдИ documentation рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рдмрддрд╛рдП рдХрд┐ parameter рдореЗрдВ path рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
### Path convertor { #path-convertor }
Starlette рд╕реЗ рд╕реАрдзреЗ рдПрдХ option рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ *path* рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ *path parameter* declare рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
```
/files/{file_path:path}
```
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, parameter рдХрд╛ рдирд╛рдо `file_path` рд╣реИ, рдФрд░ рдЖрдЦрд┐рд░реА рд╣рд┐рд╕реНрд╕рд╛, `:path`, рдЗрд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ parameter рдХрд┐рд╕реА рднреА *path* рд╕реЗ match рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рддреЛ, рдЖрдк рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{* ../../docs_src/path_params/tutorial004_py310.py hl[6] *}
/// tip | рд╕реБрдЭрд╛рд╡
рдЖрдкрдХреЛ parameter рдореЗрдВ `/home/johndoe/myfile.txt` рд░рдЦрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, leading slash (`/`) рдХреЗ рд╕рд╛рдеред
рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, URL рд╣реЛрдЧрд╛: `/files//home/johndoe/myfile.txt`, `files` рдФрд░ `home` рдХреЗ рдмреАрдЪ double slash (`//`) рдХреЗ рд╕рд╛рдеред
///
## Recap { #recap }
**FastAPI** рдХреЗ рд╕рд╛рде, рдЫреЛрдЯреЗ, рд╕рд╣рдЬ рдФрд░ standard Python type declarations рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:
* Editor support: error checks, autocompletion рдЖрджрд┐ред
* Data "<dfn title="HTTP request рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА string рдХреЛ Python data рдореЗрдВ рдмрджрд▓рдирд╛">parsing</dfn>"
* Data validation
* API annotation рдФрд░ automatic documentation
рдФрд░ рдЖрдкрдХреЛ рдЗрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ declare рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ frameworks рдХреА рддреБрд▓рдирд╛ рдореЗрдВ **FastAPI** рдХрд╛ рд╢рд╛рдпрдж рдпрд╣реА рдореБрдЦреНрдп рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд▓рд╛рдн рд╣реИ (raw performance рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред