Uma API RESTful para encurtar URLs longas, permitindo a criação, consulta, atualização, exclusão e visualização de estatísticas de acesso.
- 🔧 Criar uma URL encurtada
- 🔍 Recuperar a URL original a partir de um short code
- ♻️ Atualizar a URL original
- ❌ Deletar uma URL encurtada
- 📊 Consultar estatísticas de acesso
POST /shorten
Content-Type: application/json
{
"url": "https://www.example.com/some/long/url"
}
📤 Resposta:
{
"id": "1",
"url": "https://www.example.com/some/long/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
}
GET /shorten/abc123
PUT /shorten/abc123
Content-Type: application/json
{
"url": "https://www.example.com/some/updated/url"
}
DELETE /shorten/abc123
GET /shorten/abc123/stats
📤 Resposta:
{
"id": "1",
"url": "https://www.example.com/some/long/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z",
"accessCount": 10
}
- Java 17
- Spring Boot
- Spring Data JPA
- Jakarta Validation
- H2 Database (ou outro, configurável)
- UUID para geração de short codes
- RESTful Controllers com tratamento global de erros
A API retorna respostas amigáveis em caso de erro:
400 Bad Request
para erros de validação404 Not Found
se o short code não existir500 Internal Server Error
para exceções inesperadas
controller
: endpoints da APIservice
: lógica de negóciorepository
: conexão com o bancodomain
: entidadeURLEntity
DTO
: objetos de transferência e respostaexceptions
: exceções customizadasGlobalErrorHandler
: tratamento global de erros
- Autenticação e autorização
- Frontend simples com redirecionamento
- Cache para URLs mais acessadas
- Tempo de expiração para short codes (Pensei em fazer com Redis)
Este projeto foi desenvolvido com base no desafio da comunidade: