uget-errors
v1.0.2
Published
Biblioteca padronizada de erros para as APIs da uGet
Readme
uget-errors
uget-errors é uma biblioteca leve para padronização de respostas de
erro em APIs Node.js e TypeScript.
Ela ajuda a criar respostas de erro HTTP consistentes, sem repetição de código e com suporte nativo a middlewares de erro --- facilitando a vida do backend e do frontend.
✨ Recursos
✔️ Erros HTTP semânticos
✔️ Middleware de captura global
✔️ Tipado em TypeScript
✔️ Padronização automática do JSON de erro
✔️ Fácil de integrar com Express, Fastify e outros frameworks
🚀 Instalação
npm install uget-errors📌 Como Usar
A biblioteca funciona em duas etapas principais:
- Disparar erros semânticos onde você quiser (controllers, services, etc.)
- Capturar tudo com um middleware global de erro
1️⃣ Disparando Erros
Em vez de criar manualmente JSONs de erro, basta lançar (throw) uma
das classes de erro da biblioteca.
Exemplo usando Express:
// src/controllers/user.controller.ts
import { NotFoundError, BadRequestError } from "uget-errors";
import { Request, Response } from "express";
export class UserController {
public findUser(req: Request, res: Response) {
const { id } = req.params;
if (!isValidUUID(id)) {
throw new BadRequestError("O ID do usuário é inválido");
}
const user = db.users.find(id);
if (!user) {
throw new NotFoundError("Usuário não encontrado");
}
return res.json(user);
}
}2️⃣ Middleware Global de Erro
// src/middlewares/globalErrorHandler.ts
import { AppError } from "uget-errors";
import { Request, Response, NextFunction } from "express";
export function globalErrorHandler(
err: Error,
req: Request,
res: Response,
next: NextFunction,
) {
if (err instanceof AppError) {
return res.status(err.statusCode).json({
status: "error",
message: err.message,
});
}
console.error("ERRO INESPERADO:", err);
return res.status(500).json({
status: "fail",
message: "Erro interno do servidor",
});
}🔌 Registro do Middleware
// src/server.ts
import express from "express";
import { globalErrorHandler } from "./middlewares/globalErrorHandler";
import { userRoutes } from "./routes";
const app = express();
app.use(express.json());
app.use("/api", userRoutes);
app.use(globalErrorHandler);
app.listen(3333, () => console.log("Server running..."));📤 Formato da Resposta
Exemplo 1 --- NotFoundError
Status: 404
{
"status": "error",
"message": "Usuário não encontrado"
}Exemplo 2 --- UnauthorizedError
Status: 401
{
"status": "error",
"message": "Token inválido ou expirado"
}📚 Erros Disponíveis
| Classe | Código HTTP | Descrição |
| :------------------ | :---------- | :--------------------- |
| AppError | custom | Classe base para erros |
| BadRequestError | 400 | Requisição inválida |
| UnauthorizedError | 401 | Sem autenticação |
| ForbiddenError | 403 | Acesso negado |
| NotFoundError | 404 | Recurso não encontrado |
🛠️ Criando Erros Customizados
import { AppError } from "uget-errors";
export class ConflictError extends AppError {
constructor(message: string = "O recurso já existe") {
super(message, 409);
}
}
// ...e então, em seu service:
// throw new ConflictError('Este e-mail já está em uso');📄 Licença
Este projeto está licenciado sob a licença ISC. Veja o arquivo LICENSE para mais detalhes.
