8000 🌐 Add Russian translation for `docs/ru/docs/advanced/response-directl… · fastapi/fastapi@0d5dc7e · GitHub
[go: up one dir, main page]

Skip to content

Commit 0d5dc7e

Browse files
🌐 Add Russian translation for docs/ru/docs/advanced/response-directly.md (#13801)
* 🌐 Add Russian translation for `docs/ru/docs/advanced/response-directly.md` * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks * Update response-directly.md fixed `Response-классов` --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 8068a40 commit 0d5dc7e

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Возврат ответа напрямую
2+
3+
Когда вы создаёте **FastAPI** *операцию пути*, вы можете возвращать из неё любые данные: `dict`, `list`, Pydantic-модель, модель базы данных и т.д.
4+
5+
По умолчанию **FastAPI** автоматически преобразует возвращаемое значение в JSON с помощью `jsonable_encoder`, как описано в [JSON кодировщик](../tutorial/encoder.md){.internal-link target=_blank}.
6+
7+
Затем "под капотом" эти данные, совместимые с JSON (например `dict`), помещаются в `JSONResponse`, который используется для отправки ответа клиенту.
8+
9+
Но вы можете возвращать `JSONResponse` напрямую из ваших *операций пути*.
10+
11+
Это может быть полезно, например, если нужно вернуть пользовательские заголовки или куки.
12+
13+
## Возврат `Response`
14+
15+
На самом деле, вы можете возвращать любой объект `Response` или его подкласс.
16+
17+
/// tip | Подсказка
18+
19+
`JSONResponse` сам по себе является подклассом `Response`.
20+
21+
///
22+
23+
И когда вы возвращаете `Response`, **FastAPI** передаст его напрямую.
24+
25+
Это не приведет к преобразованию данных с помощью Pydantic-моделей, содержимое не будет преобразовано в какой-либо тип и т.д.
26+
27+
Это даёт вам большую гибкость. Вы можете возвращать любые типы данных, переопределять любые объявления или валидацию данных и т.д.
28+
29+
## Использование `jsonable_encoder` в `Response`
30+
31+
Поскольку **FastAPI** не изменяет объект `Response`, который вы возвращаете, вы должны убедиться, что его содержимое готово к отправке.
32+
33+
Например, вы не можете поместить Pydantic-модель в `JSONResponse`, не преобразовав её сначала в `dict` с помощью преобразования всех типов данных (таких как `datetime`, `UUID` и т.д.) в совместимые с JSON типы.
34+
35+
В таких случаях вы можете использовать `jsonable_encoder` для преобразования данных перед передачей их в ответ:
36+
37+
{* ../../docs_src/response_directly/tutorial001.py hl[6:7,21:22] *}
38+
39+
/// note | Технические детали
40+
41+
Вы также можете использовать `from starlette.responses import JSONResponse`.
42+
43+
**FastAPI** предоставляет `starlette.responses` через `fastapi.responses` просто для вашего удобства, как разработчика. Но большинство доступных Response-классов поступают напрямую из Starlette.
44+
45+
///
46+
47+
## Возврат пользовательского `Response`
48+
49+
Пример выше показывает все необходимые части, но он пока не очень полезен, так как вы могли бы просто вернуть `item` напрямую, и **FastAPI** поместил бы его в `JSONResponse`, преобразовав в `dict` и т.д. Всё это происходит по умолчанию.
50+
51+
Теперь давайте посмотрим, как можно использовать это для возврата пользовательского ответа.
52+
53+
Допустим, вы хотите вернуть ответ в формате <a href="https://en.wikipedia.org/wiki/XML" class="external-link" target="_blank">XML</a>.
54+
55+
Вы можете поместить ваш XML-контент в строку, поместить её в `Response` и вернуть:
56+
57+
{* ../../docs_src/response_directly/tutorial002.py hl[1,18] *}
58+
59+
## Примечания
60+
61+
Когда вы возвращаете объект `Response` напрямую, его данные не валидируются, не преобразуются (не сериализуются) и не документируются автоматически.
62+
63+
Но вы всё равно можете задокументировать это, как описано в [Дополнительные ответы в OpenAPI](additional-responses.md){.internal-link target=_blank}.
64+
65+
В следующих разделах вы увидите, как использовать/объявлять такие кастомные `Response`, при этом сохраняя автоматическое преобразование данных, документацию и т.д.

0 commit comments

Comments
 (0)
0