API REST para encurtamento de URLs, estatísticas de acesso e limitação de uso. Desenvolvida com Node.js, Express e MongoDB.
- Encurtar URLs com código automático ou alias personalizado
- Redirecionamento rápido via código
- Estatísticas de cliques (total, por país, por dia, por referer)
- Limite de cliques e expiração de links
- Rate limiting por IP
POST /api/shorten
Body JSON:
{
"longUrl": "https://exemplo.com",
"customAlias": "meulink", // opcional
"expireAt": "2025-12-31T23:59:59Z", // opcional
"maxClicks": 100, // opcional
"title": "Exemplo" // opcional
}Resposta:
{
"code": "abc123",
"shortUrl": "http://localhost:3000/abc123",
"longUrl": "https://exemplo.com",
"expireAt": "2025-12-31T23:59:59Z"
}GET /:code
Redireciona para a URL original. Se o link estiver expirado ou exceder o limite de cliques, retorna erro 410.
GET /api/stats/:code
Resposta:
{
"code": "abc123",
"longUrl": "https://exemplo.com",
"createdAt": "2025-10-16T12:00:00Z",
"expireAt": "2025-12-31T23:59:59Z",
"clickCount": 42,
"countries": [{ "_id": "BR", "count": 20 }],
"daily": [{ "_id": "2025-10-15", "count": 5 }],
"referrers": [{ "_id": "https://google.com", "count": 10 }]
}- Instale dependências:
npm install- Configure variáveis de ambiente (opcional):
PORT: porta do servidor (padrão 3000)MONGO_URI: string de conexão MongoDBBASE_URL: URL base para geração dos links
- Execute em modo desenvolvimento:
npm run devOu em produção:
npm run build
npm start- Node.js >= 18
- MongoDB
- Rate limiting: máximo de 30 requisições por minuto por IP
- Links podem expirar por data ou limite de cliques
- Estatísticas detalhadas por país, dia e referer
Kaio Diniz