Browse Source
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>pull/11114/head
committed by
GitHub
1 changed files with 33 additions and 0 deletions
@ -0,0 +1,33 @@ |
|||||
|
# Response - Cambiar el Status Code |
||||
|
|
||||
|
Probablemente ya has leído con anterioridad que puedes establecer un [Response Status Code](../tutorial/response-status-code.md){.internal-link target=_blank} por defecto. |
||||
|
|
||||
|
Pero en algunos casos necesitas retornar un status code diferente al predeterminado. |
||||
|
|
||||
|
## Casos de uso |
||||
|
|
||||
|
Por ejemplo, imagina que quieres retornar un HTTP status code de "OK" `200` por defecto. |
||||
|
|
||||
|
Pero si los datos no existen, quieres crearlos y retornar un HTTP status code de "CREATED" `201`. |
||||
|
|
||||
|
Pero aún quieres poder filtrar y convertir los datos que retornas con un `response_model`. |
||||
|
|
||||
|
Para esos casos, puedes usar un parámetro `Response`. |
||||
|
|
||||
|
## Usar un parámetro `Response` |
||||
|
|
||||
|
Puedes declarar un parámetro de tipo `Response` en tu *función de la operación de path* (como puedes hacer para cookies y headers). |
||||
|
|
||||
|
Y luego puedes establecer el `status_code` en ese objeto de respuesta *temporal*. |
||||
|
|
||||
|
```Python hl_lines="1 9 12" |
||||
|
{!../../../docs_src/response_change_status_code/tutorial001.py!} |
||||
|
``` |
||||
|
|
||||
|
Y luego puedes retornar cualquier objeto que necesites, como normalmente lo harías (un `dict`, un modelo de base de datos, etc). |
||||
|
|
||||
|
Y si declaraste un `response_model`, aún se usará para filtrar y convertir el objeto que retornaste. |
||||
|
|
||||
|
**FastAPI** usará esa respuesta *temporal* para extraer el código de estado (también cookies y headers), y los pondrá en la respuesta final que contiene el valor que retornaste, filtrado por cualquier `response_model`. |
||||
|
|
||||
|
También puedes declarar la dependencia del parámetro `Response`, y establecer el código de estado en ellos. Pero ten en cuenta que el último en establecerse será el que gane. |
Loading…
Reference in new issue