Skip to content

kaioid/link-shortner-api

Repository files navigation

Link Shortener API

API REST para encurtamento de URLs, estatísticas de acesso e limitação de uso. Desenvolvida com Node.js, Express e MongoDB.

Funcionalidades

  • 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

Endpoints

1. Criar link encurtado

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"
}

2. Redirecionar link

GET /:code

Redireciona para a URL original. Se o link estiver expirado ou exceder o limite de cliques, retorna erro 410.

3. Estatísticas do link

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 }]
}

Instalação e Execução

  1. Instale dependências:
npm install
  1. Configure variáveis de ambiente (opcional):
  • PORT: porta do servidor (padrão 3000)
  • MONGO_URI: string de conexão MongoDB
  • BASE_URL: URL base para geração dos links
  1. Execute em modo desenvolvimento:
npm run dev

Ou em produção:

npm run build
npm start

Requisitos

  • Node.js >= 18
  • MongoDB

Observações

  • 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

Autor

Kaio Diniz

About

API para encurtador de links

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published