committed by
GitHub
1 changed files with 69 additions and 0 deletions
@ -0,0 +1,69 @@ |
|||||
|
# Файлы и формы в запросе |
||||
|
|
||||
|
Вы можете определять файлы и поля формы одновременно, используя `File` и `Form`. |
||||
|
|
||||
|
!!! info "Дополнительная информация" |
||||
|
Чтобы получать загруженные файлы и/или данные форм, сначала установите <a href="https://andrew-d.github.io/python-multipart/" class="external-link" target="_blank">`python-multipart`</a>. |
||||
|
|
||||
|
Например: `pip install python-multipart`. |
||||
|
|
||||
|
## Импортируйте `File` и `Form` |
||||
|
|
||||
|
=== "Python 3.9+" |
||||
|
|
||||
|
```Python hl_lines="3" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001_an_py39.py!} |
||||
|
``` |
||||
|
|
||||
|
=== "Python 3.6+" |
||||
|
|
||||
|
```Python hl_lines="1" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001_an.py!} |
||||
|
``` |
||||
|
|
||||
|
=== "Python 3.6+ без Annotated" |
||||
|
|
||||
|
!!! tip "Подсказка" |
||||
|
Предпочтительнее использовать версию с аннотацией, если это возможно. |
||||
|
|
||||
|
```Python hl_lines="1" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
## Определите параметры `File` и `Form` |
||||
|
|
||||
|
Создайте параметры файла и формы таким же образом, как для `Body` или `Query`: |
||||
|
|
||||
|
=== "Python 3.9+" |
||||
|
|
||||
|
```Python hl_lines="10-12" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001_an_py39.py!} |
||||
|
``` |
||||
|
|
||||
|
=== "Python 3.6+" |
||||
|
|
||||
|
```Python hl_lines="9-11" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001_an.py!} |
||||
|
``` |
||||
|
|
||||
|
=== "Python 3.6+ без Annotated" |
||||
|
|
||||
|
!!! tip "Подсказка" |
||||
|
Предпочтительнее использовать версию с аннотацией, если это возможно. |
||||
|
|
||||
|
```Python hl_lines="8" |
||||
|
{!> ../../../docs_src/request_forms_and_files/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
Файлы и поля формы будут загружены в виде данных формы, и вы получите файлы и поля формы. |
||||
|
|
||||
|
Вы можете объявить некоторые файлы как `bytes`, а некоторые - как `UploadFile`. |
||||
|
|
||||
|
!!! warning "Внимание" |
||||
|
Вы можете объявить несколько параметров `File` и `Form` в операции *path*, но вы не можете также объявить поля `Body`, которые вы ожидаете получить в виде JSON, так как запрос будет иметь тело, закодированное с помощью `multipart/form-data` вместо `application/json`. |
||||
|
|
||||
|
Это не ограничение **Fast API**, это часть протокола HTTP. |
||||
|
|
||||
|
## Резюме |
||||
|
|
||||
|
Используйте `File` и `Form` вместе, когда необходимо получить данные и файлы в одном запросе. |
Loading…
Reference in new issue