API REST con Error Handling
Patron robusto de manejo de errores en un API REST con errores tipados y middleware centralizado.
class AppError extends Error {
constructor(message, statusCode, code) {
super(message);
this.statusCode = statusCode;
this.code = code;
}
}
class NotFoundError extends AppError {
constructor(resource, id) {
super(`${resource} con id '${id}' no encontrado`, 404, 'RESOURCE_NOT_FOUND');
}
}
function errorHandler(err, req, res, next) {
if (err instanceof AppError) {
return res.status(err.statusCode).json({
success: false,
error: { code: err.code, message: err.message },
});
}
return res.status(500).json({
success: false,
error: { code: 'INTERNAL_ERROR', message: 'Error interno del servidor' },
});