checker(q="somequery")
```
-â\80¦Ð¸ пеÑ\80едаÑ\81Ñ\82 возвÑ\80аÑ\89Ñ\91нное знаÑ\87ение как знаÑ\87ение завиÑ\81имоÑ\81Ñ\82и в наÑ\88Ñ\83 *Ñ\84Ñ\83нкÑ\86иÑ\8e-обÑ\80абоÑ\82Ñ\87ике пÑ\83Ñ\82и* в паÑ\80амеÑ\82Ñ\80 `fixed_content_included`:
+â\80¦Ð¸ пеÑ\80едаÑ\81Ñ\82 возвÑ\80аÑ\89Ñ\91нное знаÑ\87ение как знаÑ\87ение завиÑ\81имоÑ\81Ñ\82и в паÑ\80амеÑ\82Ñ\80 `fixed_content_included` наÑ\88ей *Ñ\84Ñ\83нкÑ\86ии-обÑ\80абоÑ\82Ñ\87ика пÑ\83Ñ\82и*:
{* ../../docs_src/dependencies/tutorial011_an_py39.py hl[22] *}
## Использование `WSGIMiddleware` { #using-wsgimiddleware }
-Нужно импортировать `WSGIMiddleware`.
+/// info | Информация
+
+Для этого требуется установить `a2wsgi`, например с помощью `pip install a2wsgi`.
+
+///
+
+Нужно импортировать `WSGIMiddleware` из `a2wsgi`.
Затем оберните WSGI‑приложение (например, Flask) в middleware (Промежуточный слой).
После этого смонтируйте его на путь.
-{* ../../docs_src/wsgi/tutorial001_py39.py hl[2:3,3] *}
+{* ../../docs_src/wsgi/tutorial001_py39.py hl[1,3,23] *}
+
+/// note | Примечание
+
+Ранее рекомендовалось использовать `WSGIMiddleware` из `fastapi.middleware.wsgi`, но теперь он помечен как устаревший.
+
+Вместо него рекомендуется использовать пакет `a2wsgi`. Использование остаётся таким же.
+
+Просто убедитесь, что пакет `a2wsgi` установлен, и импортируйте `WSGIMiddleware` из `a2wsgi`.
+
+///
## Проверьте { #check-it }
* Создайте файл `main.py` со следующим содержимым:
```Python
-from typing import Union
-
from fastapi import FastAPI
app = FastAPI()
@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}
```
Создайте файл `main.py` со следующим содержимым:
```Python
-from typing import Union
-
from fastapi import FastAPI
app = FastAPI()
@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}
```
Если ваш код использует `async` / `await`, используйте `async def`:
-```Python hl_lines="9 14"
-from typing import Union
-
+```Python hl_lines="7 12"
from fastapi import FastAPI
app = FastAPI()
@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}
```
Объявите тело запроса, используя стандартные типы 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
class Item(BaseModel):
name: str
price: float
- is_offer: Union[bool, None] = None
+ is_offer: bool | None = None
@app.get("/")
@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}
Поскольку по умолчанию, отдельные значения интерпретируются как query-параметры, вам не нужно явно добавлять `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
```
Например:
/// info | Информация
-`Body` также имеет все те же дополнительные параметры валидации и метаданных, как у `Query`,`Path` и других, которые вы увидите позже.
+`Body` также имеет все те же дополнительные параметры валидации и метаданных, как у `Query`, `Path` и других, которые вы увидите позже.
///
Вы можете добавить параметры `summary` и `description`:
-{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[18:19] *}
+{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[17:18] *}
## Описание из строк документации { #description-from-docstring }
Вы можете указать описание ответа с помощью параметра `response_description`:
-{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[19] *}
+{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
/// info | Дополнительная информация
///
-/// check
+/// check | Проверка
OpenAPI указывает, что каждой *операции пути* необходимо описание ответа.