u/gbrochacabral

▲ 65 r/brdev

Descobri os interceptors do axios e reduzi umas 30 linhas repetidas do meu código, pra quem tá começando, isso salva demais

Gente, queria compartilhar uma descoberta que provavelmente pra muita gente aqui é básico, mas pra mim foi uma descoberta muito boa.

Eu tava construindo um helpdesk em React e em toda requisição autenticada eu repetia essa belezinha:

const token = localStorage.getItem("token"); axios.get("http://localhost:3000/called/", {   headers: { Authorization: `Bearer ${token}` }, });

Aí descobri os interceptors do axios. Centralizei tudo em um arquivo só:

import axios from "axios";

const api = axios.create({
  baseURL: "http://localhost:3000",
});

// Injeta o token automaticamente em toda requisição
api.interceptors.request.use((config) => {
  const token = localStorage.getItem("token");
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// Token expirou? Desloga e manda pro login
api.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response?.status === 401) {
      localStorage.removeItem("token");
      localStorage.removeItem("user");
      window.location.href = "/";
    }
    return Promise.reject(error);
  }
);

export default api;

Agora qualquer componente fica assim:

import api from "./services/api";

const res = await api.get("/called/");

Só isso. Sem Authorization,e sem Bearer, sem http://localhost:3000 repetido, sem tratar 401 em cada tela. Se alguém tiver dicas de outras coisas "óbvias" que iniciantes costumam não saber (tipo isso), manda aí. Tô no modo absorver tudo. 🙏

reddit.com
u/gbrochacabral — 11 days ago

Finished the backend of a helpdesk

Finished the backend of a helpdesk/ticketing system I've been building to practice: Node.js + Express + PostgreSQL, no ORM (raw SQL by hand).

What's done:

- Full auth: register, login, JWT, password hashing with bcrypt

- Two user roles (client/agent), each with different permissions, always validated on the backend

- Ticket CRUD: create, list (filtered by who's asking), claim, change status

- Layered architecture: models (raw SQL only) → controllers (business logic) → routes

- Parameterized queries everywhere, to prevent SQL injection

Repo: https://github.com/GabrielRochaCab/Sistema-de-Abertura-de-Chamados-Helpdesk-

Would appreciate any feedback, especially on whether the layered structure makes sense the way I did it, or if I overengineered something for a project this size.

Next step is the React frontend.

u/gbrochacabral — 24 days ago
▲ 2 r/u_gbrochacabral+1 crossposts

Começando um sistema de chamados (helpdesk) fullstack — React + Node.js + PostgreSQL

Tô desenvolvendo um sistema de abertura de chamados, projeto pequeno pra fechar no mesmo dia. Stack: React no front, Node.js no back e PostgreSQL como banco.

Vai ter dois papéis de usuário — cliente e atendente — com login e autenticação completos.

Por enquanto é isso, ainda no início. Bora ver como fica.

reddit.com
u/gbrochacabral — 1 month ago