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/abc123PUT /shorten/abc123
Content-Type: application/json
{
"url": "https://www.example.com/some/updated/url"
}DELETE /shorten/abc123GET /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 Requestpara erros de validação404 Not Foundse o short code não existir500 Internal Server Errorpara exceções inesperadas
controller: endpoints da APIservice: lógica de negóciorepository: conexão com o bancodomain: entidadeURLEntityDTO: 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:
