Skip to content

imatheus-lucas/short-links

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Short Links API

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.


Recursos

  • 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.

Requisitos

  • Go 1.20+
  • PostgreSQL
  • Redis

Configuração

  1. Clone o repositório:

    git clone https://github.com/imatheus-lucas/short-links.git
    cd short-links
  2. Instale as dependências:

      go mod tidy
  3. 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()).
  4. Inicie o Redis localmente ou configure um endpoint Redis remoto.

Execução

Para iniciar o servidor, execute:

  go run main.go

O servidor será iniciado em http://localhost:3333.

Rotas

1. Criar um link curto

POST /links Body (JSON):

{
  "long_url": "https://exemplo.com/artigo",
  "short_url": "meu-link-curto"
}

Resposta

{
  "id": "1"
}

2. Redirecionar para o link original

GET /{short_url} Resposta:

  • 302 Found: Redireciona para o URL longo associado ao short_url.
    • 400 Bad Request: Se o short_url não for fornecido.
    • 404 Not Found: Se o short_url não existir.

3. Ver métricas de um link curto

GET /metrics/{link_id} Resposta (200 OK): [ { "linkId": "1", "score": 10 }, { "linkId": "2", "score": 5 } ]

Erro:

  • 400 Bad Request: Se o link_id nã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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages