Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/ru/docs/about/index.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# О проекте
# О проекте { #about }

FastAPI: внутреннее устройство, повлиявшие технологии и всё такое прочее. 🤓
О FastAPI, его дизайне, источниках вдохновения и многом другом. 🤓
30 changes: 15 additions & 15 deletions docs/ru/docs/advanced/additional-status-codes.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
# Дополнительные статус коды
# Дополнительные статус-коды { #additional-status-codes }

По умолчанию **FastAPI** возвращает ответы, используя `JSONResponse`, помещая содержимое, которое вы возвращаете из вашей *операции пути*, внутрь этого `JSONResponse`.
По умолчанию **FastAPI** будет возвращать ответы, используя `JSONResponse`, помещая содержимое, которое вы возвращаете из вашей *операции пути*, внутрь этого `JSONResponse`.

Он будет использовать код статуса по умолчанию или тот, который вы укажете в вашей *операции пути*.
Он будет использовать статус-код по умолчанию или тот, который вы укажете в вашей *операции пути*.

## Дополнительные статус коды
## Дополнительные статус-коды { #additional-status-codes_1 }

Если вы хотите возвращать дополнительный статус код помимо основного, вы можете сделать это, возвращая объект `Response` напрямую, как `JSONResponse`, и устанавливая нужный статус код напрямую.
Если вы хотите возвращать дополнительные статус-коды помимо основного, вы можете сделать это, возвращая `Response` напрямую, например `JSONResponse`, и устанавливая дополнительный статус-код напрямую.

Например, скажем, вы хотите создать *операцию пути*, которая позволяет обновлять элементы и возвращает HTTP-код 200 "OK" при успешном выполнении.
Например, предположим, что вы хотите иметь *операцию пути*, которая позволяет обновлять элементы и возвращает HTTP статус-код 200 «OK» при успешном выполнении.

Но вы также хотите, чтобы она принимала новые элементы. И если элемент ранее не существовал, он создаётся, и возвращался HTTP-код 201 "Created".
Но вы также хотите, чтобы она принимала новые элементы. И если элементы ранее не существовали, она создаёт их и возвращает HTTP статус-код 201 «Created».

Чтобы реализовать это, импортируйте `JSONResponse` и возвращайте ваш контент напрямую, устанавливая нужный `status_code`:
Чтобы добиться этого, импортируйте `JSONResponse` и верните туда свой контент напрямую, установив нужный вам `status_code`:

{* ../../docs_src/additional_status_codes/tutorial001_an_py310.py hl[4,25] *}

/// warning | Внимание

Когда вы возвращаете объект `Response` напрямую, как в примере выше, он будет возвращён как есть.
Когда вы возвращаете `Response` напрямую, как в примере выше, он будет возвращён как есть.

Он не будет сериализован при помощи модели и т.д.
Он не будет сериализован с помощью модели и т.п.

Убедитесь, что в нём содержатся именно те данные, которые вы хотите, и что значения являются валидным JSON (если вы используете `JSONResponse`).
Убедитесь, что в нём именно те данные, которые вы хотите, и что значения являются валидным JSON (если вы используете `JSONResponse`).

///

/// note | Технические детали

Вы также можете использовать `from starlette.responses import JSONResponse`.

**FastAPI** предоставляет тот же `starlette.responses` через `fastapi.responses` просто для вашего удобства, как разработчика. Но большинство доступных Response-классов поступают напрямую из Starlette. То же самое касается и `status`.
**FastAPI** предоставляет тот же `starlette.responses` через `fastapi.responses` просто для вашего удобства как разработчика. Но большинство доступных Response-классов приходят напрямую из Starlette. То же самое со `status`.

///

## OpenAPI и документация API
## OpenAPI и документация API { #openapi-and-api-docs }

Если вы возвращаете дополнительные коды статусов и ответы напрямую, они не будут включены в схему OpenAPI (документацию API), потому что FastAPI не может заранее знать, что вы собираетесь вернуть.
Если вы возвращаете дополнительные статус-коды и ответы напрямую, они не будут включены в схему OpenAPI (документацию API), потому что у FastAPI нет способа заранее знать, что вы собираетесь вернуть.

Но вы можете задокументировать это в вашем коде, используя: [Дополнительные ответы в OpenAPI](additional-responses.md){.internal-link target=_blank}.
Но вы можете задокументировать это в своём коде, используя: [Дополнительные ответы](additional-responses.md){.internal-link target=_blank}.
14 changes: 7 additions & 7 deletions docs/ru/docs/advanced/async-tests.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
# Асинхронное тестирование
# Асинхронное тестирование { #async-tests }

Вы уже видели как тестировать **FastAPI** приложение, используя имеющийся класс `TestClient`. К этому моменту вы видели только как писать тесты в синхронном стиле без использования `async` функций.

Возможность использования асинхронных функций в ваших тестах может быть полезнa, когда, например, вы асинхронно обращаетесь к вашей базе данных. Представьте, что вы хотите отправить запросы в ваше FastAPI приложение, а затем при помощи асинхронной библиотеки для работы с базой данных удостовериться, что ваш бекэнд корректно записал данные в базу данных.

Давайте рассмотрим, как мы можем это реализовать.

## pytest.mark.anyio
## pytest.mark.anyio { #pytest-mark-anyio }

Если мы хотим вызывать асинхронные функции в наших тестах, то наши тестовые функции должны быть асинхронными. AnyIO предоставляет для этого отличный плагин, который позволяет нам указывать, какие тестовые функции должны вызываться асинхронно.

## HTTPX
## HTTPX { #httpx }

Даже если **FastAPI** приложение использует обычные функции `def` вместо `async def`, это все равно `async` приложение 'под капотом'.

Чтобы работать с асинхронным FastAPI приложением в ваших обычных тестовых функциях `def`, используя стандартный pytest, `TestClient` внутри себя делает некоторую магию. Но эта магия перестает работать, когда мы используем его внутри асинхронных функций. Запуская наши тесты асинхронно, мы больше не можем использовать `TestClient` внутри наших тестовых функций.

`TestClient` основан на <a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPX</a>, и, к счастью, мы можем использовать его (`HTTPX`) напрямую для тестирования API.

## Пример
## Пример { #example }

В качестве простого примера, давайте рассмотрим файловую структуру, схожую с описанной в [Большие приложения](../tutorial/bigger-applications.md){.internal-link target=_blank} и [Тестирование](../tutorial/testing.md){.internal-link target=_blank}:

Expand All @@ -38,7 +38,7 @@

{* ../../docs_src/async_tests/test_main.py *}

## Запуск тестов
## Запуск тестов { #run-it }

Вы можете запустить свои тесты как обычно:

Expand All @@ -52,7 +52,7 @@ $ pytest

</div>

## Подробнее
## Подробнее { #in-detail }

Маркер `@pytest.mark.anyio` говорит pytest, что тестовая функция должна быть вызвана асинхронно:

Expand Down Expand Up @@ -88,7 +88,7 @@ response = client.get('/')

///

## Вызов других асинхронных функций
## Вызов других асинхронных функций { #other-asynchronous-function-calls }

Теперь тестовая функция стала асинхронной, поэтому внутри нее вы можете вызывать также и другие `async` функции, не связанные с отправлением запросов в ваше FastAPI приложение. Как если бы вы вызывали их в любом другом месте вашего кода.

Expand Down
8 changes: 4 additions & 4 deletions docs/ru/docs/advanced/index.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Расширенное руководство пользователя
# Расширенное руководство пользователя { #advanced-user-guide }

## Дополнительные возможности
## Дополнительные возможности { #additional-features }

Основное [Учебник - Руководство пользователя](../tutorial/index.md){.internal-link target=_blank} должно быть достаточно, чтобы познакомить вас со всеми основными функциями **FastAPI**.

В следующих разделах вы увидите другие варианты, конфигурации и дополнительные возможности.

/// tip
/// tip | Совет

Следующие разделы **не обязательно являются "продвинутыми"**.

И вполне возможно, что для вашего случая использования решение находится в одном из них.

///

## Сначала прочитайте Учебник - Руководство пользователя
## Сначала прочитайте Учебник - Руководство пользователя { #read-the-tutorial-first }

Вы все еще можете использовать большинство функций **FastAPI** со знаниями из [Учебник - Руководство пользователя](../tutorial/index.md){.internal-link target=_blank}.

Expand Down
20 changes: 10 additions & 10 deletions docs/ru/docs/advanced/response-change-status-code.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Response - Изменение cтатус кода
# Response - Изменение статус-кода { #response-change-status-code }

Вы, вероятно, уже читали о том, что можно установить [Состояние ответа по умолчанию](../tutorial/response-status-code.md){.internal-link target=_blank}.
Вы, вероятно, уже читали о том, что можно установить [статус-код ответа по умолчанию](../tutorial/response-status-code.md){.internal-link target=_blank}.

Но в некоторых случаях вам нужно вернуть код состояния, отличный от установленного по умолчанию.
Но в некоторых случаях нужно вернуть другой статус-код, отличный от значения по умолчанию.

## Пример использования
## Пример использования { #use-case }

Например, представьте, что вы хотите возвращать HTTP код состояния "OK" `200` по умолчанию.
Например, представьте, что вы хотите по умолчанию возвращать HTTP статус-код «OK» `200`.

Но если данные не существовали, вы хотите создать их и вернуть HTTP код состояния "CREATED" `201`.
Но если данные не существовали, вы хотите создать их и вернуть HTTP статус-код «CREATED» `201`.

При этом вы всё ещё хотите иметь возможность фильтровать и преобразовывать возвращаемые данные с помощью `response_model`.

Для таких случаев вы можете использовать параметр `Response`.

## Использование параметра `Response`
## Использование параметра `Response` { #use-a-response-parameter }

Вы можете объявить параметр типа `Response` в вашей *функции обработки пути* (так же как для cookies и headers).
Вы можете объявить параметр типа `Response` в вашей *функции обработки пути* (как и для cookies и HTTP-заголовков).

И затем вы можете установить `status_code` в этом *временном* объекте ответа.

Expand All @@ -26,6 +26,6 @@

И если вы объявили `response_model`, он всё равно будет использоваться для фильтрации и преобразования возвращаемого объекта.

**FastAPI** будет использовать этот *временный* ответ для извлечения кода состояния (а также cookies и headers) и поместит их в финальный ответ, который содержит возвращаемое вами значение, отфильтрованное любым `response_model`.
**FastAPI** будет использовать этот *временный* ответ для извлечения статус-кода (а также cookies и HTTP-заголовков) и поместит их в финальный ответ, который содержит возвращаемое вами значение, отфильтрованное любым `response_model`.

Вы также можете объявить параметр `Response` в зависимостях и установить код состояния в них. Но помните, что последнее установленное значение будет иметь приоритет.
Вы также можете объявить параметр `Response` в зависимостях и установить в них статус-код. Но помните, что последнее установленное значение будет иметь приоритет.
Loading