Cuando se maneja una petición del API RESTful, si ocurre un error en la petición del usuario o si algo inesperado ocurre en el servidor, simplemente puedes lanzar una excepción para notificar al usuario que algo erróneo ocurrió.
Cuando se maneja una petición de API RESTful, si ocurre un error en la petición del usuario o si algo inesperado
Si puedes identificar la causa del error (p.e., el recurso pedido no existe), debes considerar lanzar una excepción con el apropiado códig HTTP de estado (p.e., [[yii\web\NotFoundHttpException]] representa un código de estado 404). Yii enviará la respuesta a continuación con el correspondiente código de estado HTTP y el texto. Yii puede incluir también la representación serializada de la excepción en el cuerpo de la respuesta. Por ejemplo:
ocurre en el servidor, simplemente puedes lanzar una excepción para notificar al usuario que algo erróneo ocurrió.
Si puedes identificar la causa del error (p.e., el recurso solicitado no existe), debes considerar lanzar una excepción
con el código HTTP de estado apropiado (p.e., [[yii\web\NotFoundHttpException]] representa un código de estado 404).
Yii enviará la respuesta a continuación con el correspondiente código de estado HTTP y el texto. Yii puede incluir también
la representación serializada de la excepción en el cuerpo de la respuesta. Por ejemplo:
La siguiente lista sumariza los códigos de estado HTTP que son usados por el framework REST:
La siguiente lista sumariza los códigos de estado HTTP que son usados por el framework REST:
*`200`: OK. Todo ha funcionado como se esperaba.
*`200`: OK. Todo ha funcionado como se esperaba.
*`201`: El recurso ha creado con éxito en respuesta a la petición `POST`. La cabecera de situación `Location`contiene la URL apuntando al nuevo recurso creado.
*`201`: El recurso ha creado con éxito en respuesta a la petición `POST`. La cabecera de situación `Location` contiene la URL apuntando al nuevo recurso creado.
*`204`: La petición ha sido manejada con éxito y el cuerpo de la respuesta no tiene contenido (como una petición `DELETE`).
*`204`: La petición ha sido manejada con éxito y el cuerpo de la respuesta no tiene contenido (como una petición `DELETE`).
*`304`: El recurso no ha sido modificado. Puede usar la versión en caché.
*`304`: El recurso no ha sido modificado. Puede usar la versión en caché.
*`400`: Petición errónea. Esto puede estar causado por varias acciones de el usuario, como proveer un JSON no válido en el cuerpo de la petición, proveyendo parámetros de acción no válidos, etc.
*`400`: Petición errónea. Esto puede estar causado por varias acciones de el usuario, como proveer un JSON no válido en el cuerpo de la petición, proveyendo parámetros de acción no válidos, etc.
...
@@ -33,12 +37,14 @@ La siguiente lista sumariza los códigos de estado HTTP que son usados por el fr
...
@@ -33,12 +37,14 @@ La siguiente lista sumariza los códigos de estado HTTP que son usados por el fr
*`415`: Tipo de medio no soportado. El tipo de contenido pedido o el número de versión no es válido.
*`415`: Tipo de medio no soportado. El tipo de contenido pedido o el número de versión no es válido.
*`422`: La validación de datos ha fallado (en respuesta a una petición `POST` , por ejemplo). Por favor, comprobad en el cuerpo de la respuesta el mensaje detallado.
*`422`: La validación de datos ha fallado (en respuesta a una petición `POST` , por ejemplo). Por favor, comprobad en el cuerpo de la respuesta el mensaje detallado.
*`429`: Demasiadas peticiones. La petición ha sido rechazada debido a un limitación de rango.
*`429`: Demasiadas peticiones. La petición ha sido rechazada debido a un limitación de rango.
*`500`: Error interno del servidor. Esto puede estar causado por errores internos del programa.
*`500`: Error interno del servidor. Esto puede estar causado por errores internos del programa.
## Personalizando la Respuesta al Error <a name="customizing-error-response"></a>
## Personalizando la Respuesta al Error <a name="customizing-error-response"></a>
A veces puedes querer personalizar el formato de la respuesta del error por defecto . Por ejemplo, en lugar de depender del uso de diferentes estados HTTP para indicar los diferentes errores, puedes querer usar siempre el estado HTTP 200 y encajonar el código de estado HTTP en la respuesta, tal y como se ve en lo que sigue,
A veces puedes querer personalizar el formato de la respuesta del error por defecto . Por ejemplo, en lugar de depender
del uso de diferentes estados HTTP para indicar los diferentes errores, puedes querer usar siempre el estado HTTP 200
y encapsular el código de estado HTTP real como parte de una estructura JSON en la respuesta, como se muestra a continuación,