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)

PHP, HTML, CSS, JS, jQuery, etc.
Responder
GAH.1988
Observador/a
Mensajes: 2
Registrado: 02 May 2017, 23:27

ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)

#1

Mensaje por GAH.1988 »

Estimados,
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.-

uruguayito
Ex Staff
Mensajes: 1435
Registrado: 04 Mar 2009, 16:17
Género:
Edad: 50

Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)

#2

Mensaje por uruguayito »

Y los datos de soporte son? :?:

Antes de pedir ayuda, recuerda poner tus datos de soporte.
Lee las: Normas de Soporte en phpBB España


Mis datos para Soporte: | Mostrar
Foro: http://amigosenlaruta.com/foro
Servidor: De pago
Versión phpbb: 3.2
Estilos: Prosilver

Extensiones habilitadas:
24 hour activity stats 1.0.3
Add User 1.0.3
Advanced Active Topics 1.0.2
Ajax Base 2.0.0
AJAX Registration check 1.0.0
Auto database backup (3.2) 2.1.0-rc2
Boardtalk Fixed Menu for Prosilver 0.0.2
Database Optimize & Repair Tool 1.1.1
Delete my registration 1.0.3
Detailed viewonline 1.0.0
E-mail on birthday 3.1.4
External Links Open in New Window 1.0.5
Favicon 0.0.2
File Download 1.0.2
First post on every page 2.0.2
Fixed footer navbar 1.0.3
Font 1.0.2
Forum Icons 1.0.2
Genders 1.1.1
Header Link 1.0.0_RC10
Inactive User Manager 0.9.8
Lightbox 1.0.4
LMDI Autolinks 1.1.0
Local URL To Text 1.1.0-beta1
Member Profile Views 1.0.3
Mobile Device 1.0.1
Multi Ranks 1.0.0
Newest members 1.0.2
News Scroll 1.0.1_RC3
New Topic Button in Topic 1.0.0
No Custom Profile for guests 1.0.2
phpBB.de - Move Message 1.0.0
phpBB 3.2 Advanced Board Announcements 0.9.0
phpBB 3.2 Birthday Control 1.0.2
phpBB Media Embed PlugIn 1.0.0-rc1
phpBB mentions 1.0.0-RC1
Posting Buttons 1.0.1
Post Numbers 1.1.0
Posts merging 2.0.2
Precise Similar Topics 1.4.1
Pretty Topic 1.0.1
Quick Mod Top 1.0.2
Quoted Images as Thumbnails 1.0.1
Read Members PM 1.0.0
Red title for new topic and new reply 1.0.3
ReIMG Image Resizer 3.0.0-b1
Show First Post Only to Guest 1.2.2
Site logo (3.2) 2.1.0-rc6
Smart Subjects 1.0.0-b3
Social Sharing w/Dyanmic Opengraph Tags 1.0.0
Subscribe Topic in footer 1.0.0
Tapatalk Plugin for phpBB 3.1/3.2 2.0.3
Thanks for posts 2.0.3-dev
TinyPic Link 1.0.0
Topic/Post Attachments on Index and View Forum pages 0.0.6-dev
Topic Age Day 1.0.2
Topic Author 1.0.2
Topic Restriction 1.0.1
Topics Hierarchy 2.0.0-RC1
Topic Solved 2.2.0
Topic Title Colour 1.0.0-a1
Upcoming Birthdays 1.0.3
User login redirect 1.1.0
User Recent Activity 2.0.0
VigLink 1.0.0
Who Visited This Topic 1.0.5
XML Sitemap 0.1.4
Встроенные изображения в приложении. Inline images in attachment

GAH.1988
Observador/a
Mensajes: 2
Registrado: 02 May 2017, 23:27

Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)

#3

Mensaje por GAH.1988 »

Que datos de soporte?
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.

Avatar de Usuario
AlfredoRamos
Ex Staff
Mensajes: 1235
Registrado: 14 Ene 2017, 22:18
Género:

Re: ERRORES DE USUARIO: THROW EXCEPTION VS HTTP_RESPONSE_CODE(500)

#4

Mensaje por AlfredoRamos »

No me parece necesario, ni correcto lanzar un error HTTP 500, como sabes obtiene este código de estado cuando se produce un error interno en el servidor, tu ejemplo de validación de contraseñas no entra en esa categoria, porque no es un error del servidor (este ya procesó lo que pediste) sino en la ejecución del script.

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);
GAH.1988 escribió:Que datos de soporte?
No es un error o un problema el que tengo, es una consulta conceptual.
[...]
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.

Algunas de mis extensiones:
Imagen Imgur | :chart_with_upwards_trend: SEO Metadata | Imagen Markdown | :see_no_evil: Simple Spoiler BBCode | :shield: hCaptcha
:trophy: Checa todas mi extensiones aprobadas :trophy:

:penguin: Usuario de Arch Linux :penguin:


Responder

Volver a “🆘 Recursos Webmaster”