|
1 | | -# Дополнительные статус коды |
| 1 | +# Дополнительные статус-коды { #additional-status-codes } |
2 | 2 |
|
3 | | -По умолчанию **FastAPI** возвращает ответы, используя `JSONResponse`, помещая содержимое, которое вы возвращаете из вашей *операции пути*, внутрь этого `JSONResponse`. |
| 3 | +По умолчанию **FastAPI** будет возвращать ответы, используя `JSONResponse`, помещая содержимое, которое вы возвращаете из вашей *операции пути*, внутрь этого `JSONResponse`. |
4 | 4 |
|
5 | | -Он будет использовать код статуса по умолчанию или тот, который вы укажете в вашей *операции пути*. |
| 5 | +Он будет использовать статус-код по умолчанию или тот, который вы укажете в вашей *операции пути*. |
6 | 6 |
|
7 | | -## Дополнительные статус коды |
| 7 | +## Дополнительные статус-коды { #additional-status-codes_1 } |
8 | 8 |
|
9 | | -Если вы хотите возвращать дополнительный статус код помимо основного, вы можете сделать это, возвращая объект `Response` напрямую, как `JSONResponse`, и устанавливая нужный статус код напрямую. |
| 9 | +Если вы хотите возвращать дополнительные статус-коды помимо основного, вы можете сделать это, возвращая `Response` напрямую, например `JSONResponse`, и устанавливая дополнительный статус-код напрямую. |
10 | 10 |
|
11 | | -Например, скажем, вы хотите создать *операцию пути*, которая позволяет обновлять элементы и возвращает HTTP-код 200 "OK" при успешном выполнении. |
| 11 | +Например, предположим, что вы хотите иметь *операцию пути*, которая позволяет обновлять элементы и возвращает HTTP статус-код 200 «OK» при успешном выполнении. |
12 | 12 |
|
13 | | -Но вы также хотите, чтобы она принимала новые элементы. И если элемент ранее не существовал, он создаётся, и возвращался HTTP-код 201 "Created". |
| 13 | +Но вы также хотите, чтобы она принимала новые элементы. И если элементы ранее не существовали, она создаёт их и возвращает HTTP статус-код 201 «Created». |
14 | 14 |
|
15 | | -Чтобы реализовать это, импортируйте `JSONResponse` и возвращайте ваш контент напрямую, устанавливая нужный `status_code`: |
| 15 | +Чтобы добиться этого, импортируйте `JSONResponse` и верните туда свой контент напрямую, установив нужный вам `status_code`: |
16 | 16 |
|
17 | 17 | {* ../../docs_src/additional_status_codes/tutorial001_an_py310.py hl[4,25] *} |
18 | 18 |
|
19 | 19 | /// warning | Внимание |
20 | 20 |
|
21 | | -Когда вы возвращаете объект `Response` напрямую, как в примере выше, он будет возвращён как есть. |
| 21 | +Когда вы возвращаете `Response` напрямую, как в примере выше, он будет возвращён как есть. |
22 | 22 |
|
23 | | -Он не будет сериализован при помощи модели и т.д. |
| 23 | +Он не будет сериализован с помощью модели и т.п. |
24 | 24 |
|
25 | | -Убедитесь, что в нём содержатся именно те данные, которые вы хотите, и что значения являются валидным JSON (если вы используете `JSONResponse`). |
| 25 | +Убедитесь, что в нём именно те данные, которые вы хотите, и что значения являются валидным JSON (если вы используете `JSONResponse`). |
26 | 26 |
|
27 | 27 | /// |
28 | 28 |
|
29 | 29 | /// note | Технические детали |
30 | 30 |
|
31 | 31 | Вы также можете использовать `from starlette.responses import JSONResponse`. |
32 | 32 |
|
33 | | -**FastAPI** предоставляет тот же `starlette.responses` через `fastapi.responses` просто для вашего удобства, как разработчика. Но большинство доступных Response-классов поступают напрямую из Starlette. То же самое касается и `status`. |
| 33 | +**FastAPI** предоставляет тот же `starlette.responses` через `fastapi.responses` просто для вашего удобства как разработчика. Но большинство доступных Response-классов приходят напрямую из Starlette. То же самое со `status`. |
34 | 34 |
|
35 | 35 | /// |
36 | 36 |
|
37 | | -## OpenAPI и документация API |
| 37 | +## OpenAPI и документация API { #openapi-and-api-docs } |
38 | 38 |
|
39 | | -Если вы возвращаете дополнительные коды статусов и ответы напрямую, они не будут включены в схему OpenAPI (документацию API), потому что FastAPI не может заранее знать, что вы собираетесь вернуть. |
| 39 | +Если вы возвращаете дополнительные статус-коды и ответы напрямую, они не будут включены в схему OpenAPI (документацию API), потому что у FastAPI нет способа заранее знать, что вы собираетесь вернуть. |
40 | 40 |
|
41 | | -Но вы можете задокументировать это в вашем коде, используя: [Дополнительные ответы в OpenAPI](additional-responses.md){.internal-link target=_blank}. |
| 41 | +Но вы можете задокументировать это в своём коде, используя: [Дополнительные ответы](additional-responses.md){.internal-link target=_blank}. |
0 commit comments