Este projeto é uma API para encurtamento de links, permitindo criar links curtos, redirecionar para os URLs originais e coletar métricas de uso. Ele utiliza PostgreSQL para armazenar os links e Redis para contabilizar as métricas.
- Criação de links curtos: Adicione URLs longas e receba links curtos correspondentes.
- Redirecionamento: Use o link curto para ser redirecionado ao URL original.
- Métricas: Visualize o número de acessos por link curto.
- Go 1.20+
- PostgreSQL
- Redis
-
Clone o repositório:
git clone https://github.com/imatheus-lucas/short-links.git cd short-links -
Instale as dependências:
go mod tidy
-
Configure o banco de dados PostgreSQL:
- **Crie um banco de dados chamado short_links.
- **Certifique-se de que as credenciais do banco estão configuradas no arquivo de inicialização (database.Init()).
-
Inicie o Redis localmente ou configure um endpoint Redis remoto.
Para iniciar o servidor, execute:
go run main.goO servidor será iniciado em http://localhost:3333.
POST /links
Body (JSON):
{
"long_url": "https://exemplo.com/artigo",
"short_url": "meu-link-curto"
}Resposta”
{
"id": "1"
}GET /{short_url}
Resposta:
- 302 Found: Redireciona para o URL longo associado ao
short_url. -
- 400 Bad Request: Se o
short_urlnão for fornecido.
- 400 Bad Request: Se o
-
- 404 Not Found: Se o
short_urlnão existir.
- 404 Not Found: Se o
GET /metrics/{link_id}
Resposta (200 OK):
[ { "linkId": "1", "score": 10 }, { "linkId": "2", "score": 5 } ]
“Erro:
- 400 Bad Request: Se o
link_idnão for fornecido.”
Estrutura do Projeto
short-links/
├── database/
│ └── database.go # Configuração do banco de dados PostgreSQL.
├── redisClient/
│ └── redisClient.go # Configuração do Redis.
├── main.go # Código principal do servidor HTTP.
├── go.mod # Dependências do projeto.
└── go.sum # Lockfile de dependências.