Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..
Gracias.
La Administración de phpBB España.
ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)
ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)
Buenas tardes, como están?
La idea del post es que me ayuden a definir un proceso de devolución de errores y poder manejarlos de manera agradable del lado del cliente.
Actualmente estoy desarrollando una app en la que desacople el front del back: por un lado tengo los html (sin código php en su interior) y casi por regla, cada html tiene un controller javascript que este es el que hace, por medio de ajax, la llamada a un .php con los parámetros que se necesita para el proceso.
Una vez terminado el proceso en el back, devuelvo un json y este lo tomo en el javascript y hago lo que se necesite:
if (this.readyState == 4 && this.status == 200) {
callbackSuccess(this.responseText);
}
Ahora bien, hay veces que desde el back quiero forzar un error/advertencia, por ejemplo, en el login, que la contraseña es incorrecta, actualmente esa regla la devuelvo normalmente con un json y en el front ingresa por el código antes mencionado (obviamente en el json que envío desde el back genero un objeto con un estado en particular distinto a las peticiones OK y el mensaje que deseo mostrarle al cliente), pero entre en una disyuntiva de si conceptualmente lo que estoy haciendo esta bien encarado (de mas esta decir que el desarrollo funciona y hace lo esperado), que quiero decir con esto, mi duda es si desde el back tanto las reglas de negocio que no pasaron con éxito (password incorrecto, clave caducada, etc) como una excepción lanzada (throw new ...) deben volver al cliente como readyState == 4 y this.status == 200 o esta bien provocar en el back un http_response_code(500) y devolver el json y en el cliente capturarlo como:
if (this.readyState == 4 && this.status == 500) {
callbackError(this.responseText);
}
Espero se entienda, la duda es mas que nada conceptual ya que la app funciona bien. en estos momentos le estoy dando mucha importancia a la arquitectura y a tener un desarrollo con una buena base.
Saludos.-
-
- Mensajes: 1435
- Registrado: 04 Mar 2009, 16:17
- Género:
- Edad: 50
Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)

Antes de pedir ayuda, recuerda poner tus datos de soporte.
Lee las: Normas de Soporte en phpBB España
- Mis datos para Soporte: | Mostrar
Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)
No es un error o un problema el que tengo, es una consulta conceptual.
Si desde el back de php devolver los errores con throw new exception y en el ajax llegaría como (readyState == 4 y status == 200) o desde el back esta bien hacer uso de la funcionalidad http_response_code(500) y que al front le llegue (readyState == 4 y status == 500).
Gracias.
- AlfredoRamos
- Mensajes: 1235
- Registrado: 14 Ene 2017, 22:18
- Género:
Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)
A mi parecer en ambos casos (contraseña correcta e incorrecta) la petición debería regresar código de estado HTTP 200 y con un
try
/catch
mostrar el JSON con el contenido o el mensaje de error según la validación.Un ejemplo medio cutre:
Código: Seleccionar todo
header('Content-Type: application/json');
$json_data = [];
try {
if ($db_password !== $input_password) {
throw new ErrorException('Contraseña incorrecta');
}
$json_data = [
'msg' => 'Contraseña correcta'
];
} catch (ErrorException $ex) {
$json_data = [
'error' => $ex->getMessage()
];
}
echo json_encode($json_data);
uruguayito solo sigue el protocolo, publicaste el tema en el foro de soporte para phpBB (3.0.x), este tema entra mejor en Recursos Webmaster.GAH.1988 escribió:Que datos de soporte?
No es un error o un problema el que tengo, es una consulta conceptual.
[...]
Algunas de mis extensiones:
Imgur |
SEO Metadata |
Markdown |
Simple Spoiler BBCode |
hCaptcha
Checa todas mi extensiones aprobadas
Usuario de Arch Linux