Mauricio hace 6 años
Manejo de errores en end-points de node-js
Muy buenas! :smile:
Estoy siguiendo el curso "[Curso Profesional de Angular para Tiempo Real con Node.js](https://webtraining.zone/cursos/curso-profesional-de-angular-para-tiempo-real-con-nodejs "Curso Profesional de Angular para Tiempo Real con Node.js")" más que nada para aprender sobre Node.js.
Me recomendarían que tipo de respuesta enviar desde un end-point a la hora de que ocurra algún error? En el curso (y en muchos otros tutoriales) se trata enviando **JSON** con un mensaje:
```json
{
error: "Error message"
}
```
Otras opciones que he visto es espcificando el mensaje en el parámetro **response**:
```javascript
itemRouter.get('/item/:id', (request, response) => {
response.statusMessage = "Item not found";
response.status(404).end();
});
```
No se mucho sobre front-end (y casi nada de back-end :joy:) por lo tanto no se de que forma sería más cómodo tratarlo desde allí.
Gracias de antemano!
Saludos :v:
Responder 3 respuestas
Que tal Mauricio ¿cómo estás?
En una aplicación de producción de mayor escala, normalmente los objetos tanto de error y éxito en la respuesta suelen ser más complejos. Mira aquí te dejo algunos de los que usamos en un API:
### Mensaje de éxito
```
{
"type": "success",
"httpStatusCode": 200,
"appCode": 101,
"i18n": {
"en": {
"messageKey": "Success",
"messageDescription": "Success. Operation was executed correctly.",
},
"es": {
"messageKey": "Success",
"messageDescription": "Éxito. La operación ha sido ejecutada exitosamente."
}
},
"data": {}
}
```
### Mensaje de error
```
{
"type": "error",
"httpStatusCode": 401,
"appCode": 102,
"i18n": {
"en": {
"messageKey": "Unauthorized",
"messageDescription": "Unauthorized. The page you were trying to access cannot be loaded until you first log in with a valid user ID and password.",
},
"es": {
"messageKey": "Unauthorized",
"messageDescription": "No autorizado. La página a la que intentaba acceder no se puede cargar hasta que inicie sesión con un usuario y contraseña válidos."
}
},
"data": {}
}
```
### Explicación de campos:
**type** describe si fue una respuesta de éxito o error
**httpStatusCode** es el mismo que el código de respuesta HTTP
**appCode** un código personalizado propio de tu aplicación y que sólo tiene significado para quien conoce el API
**i18n** un objeto que contiene una key y la descripción del mensaje i18n = internacionalización y te da la posibilidad de describir tus errores en tantos idiomas como lo decidas, en este ejemplo tenemos inglés y español.
Hablando de tecnologías como Angular o Vue, luego podríamos mediante un pipe sacar el mensaje en el idioma que tiene configurado el usuario. **Se me acaba de ocurrir que podríamos hacer un curso de aplicaciones de front-end multi-idioma, jejeje.**
**data** en caso de que la respuesta de éxito necesite traer datos (por ejemplo un arreglo de preguntas, artículos, productos, etc. propios de tu aplicación van aquí). Cuando es mensaje de error normalmente este campo "data" viene vacío.
Saludos.
Mauricio hace 6 años...
Hola Alex!
Excelente!, me sirve de base para hacer una implementación del estilo en mi proyecto.
Gracias!
Por favor inicia sesión para participar en esta pregunta