committed by
GitHub
1 changed files with 37 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||
# Códigos de estado adicionales |
|||
|
|||
Por defecto, **FastAPI** devolverá las respuestas utilizando una `JSONResponse`, poniendo el contenido que devuelves en tu *operación de path* dentro de esa `JSONResponse`. |
|||
|
|||
Utilizará el código de estado por defecto, o el que hayas asignado en tu *operación de path*. |
|||
|
|||
## Códigos de estado adicionales |
|||
|
|||
Si quieres devolver códigos de estado adicionales además del principal, puedes hacerlo devolviendo directamente una `Response`, como una `JSONResponse`, y asignar directamente el código de estado adicional. |
|||
|
|||
Por ejemplo, digamos que quieres tener una *operación de path* que permita actualizar ítems y devolver códigos de estado HTTP 200 "OK" cuando sea exitosa. |
|||
|
|||
Pero también quieres que acepte nuevos ítems. Cuando los ítems no existan anteriormente, serán creados y devolverá un código de estado HTTP 201 "Created". |
|||
|
|||
Para conseguir esto importa `JSONResponse` y devuelve ahí directamente tu contenido, asignando el `status_code` que quieras: |
|||
|
|||
```Python hl_lines="2 19" |
|||
{!../../../docs_src/additional_status_codes/tutorial001.py!} |
|||
``` |
|||
|
|||
!!! warning "Advertencia" |
|||
Cuando devuelves directamente una `Response`, como en los ejemplos anteriores, será devuelta directamente. |
|||
|
|||
No será serializado con el modelo, etc. |
|||
|
|||
Asegurate de que la respuesta tenga los datos que quieras, y que los valores sean JSON válidos (si estás usando `JSONResponse`). |
|||
|
|||
!!! note "Detalles Técnicos" |
|||
También podrías utilizar `from starlette.responses import JSONResponse`. |
|||
|
|||
**FastAPI** provee las mismas `starlette.responses` que `fastapi.responses` simplemente como una convención para ti, el desarrollador. Pero la mayoría de las respuestas disponibles vienen directamente de Starlette. Lo mismo con `status`. |
|||
|
|||
## OpenAPI y documentación de API |
|||
|
|||
Si quieres devolver códigos de estado y respuestas adicionales directamente, estas no estarán incluidas en el schema de OpenAPI (documentación de API), porque FastAPI no tiene una manera de conocer de antemano lo que vas a devolver. |
|||
|
|||
Pero puedes documentar eso en tu código usando [Respuestas Adicionales](additional-responses.md){.internal-link target=_blank}. |
Loading…
Reference in new issue