url-shortener
O URL Shortener é um projeto que oferece um serviço de encurtamento de URLs. Destaca-se pela funcionalidade de redirect eficiente, persistência de dados confiável, testes abrangentes (unidade e integração), hospedagem em nuvem pública e documentação.
Configuração
Essas instruções fornecerão aos usuários as etapas necessárias para clonar o repositório e iniciar a aplicação em diferentes ambientes (Unix e Windows) com o perfil de desenvolvimento ativado.
- Clone o repositório: git clone https://github.com/cami-la/url-shortener.git
- Inicie a aplicação no ambiente Unix:
./gradlew bootrun --args='--spring.profiles.active=dev'
- Inicie a aplicação no ambiente Windows:
gradle.bat bootrun --args='--spring.profiles.active=dev'
Uso da API
Request da requisição
Criar uma URL curta
POST /
- Descrição: Cria uma URL curta a partir de uma URL original.
- Parâmetros da solicitação:
originalUrl
(obrigatório): A URL original a ser encurtada.
- Exemplo de solicitação:
POST /?originalUrl=https://www.example.com
Redirecionar para a URL original
GET /{shortUrl}
- Descrição: Redireciona para a URL original com base no código de URL encurtada.
- Exemplo de solicitação:
GET /abc123
Response da requisição
Exemplos de Respostas
- Resposta bem-sucedida para criação de URL curta (POST):
HTTP/1.1 201 Created Content-Type: application/json
{ "id": "12345", "originalUrl": "https://www.example.com", "shortUrl": "abc123" }
- Resposta bem-sucedida para redirecionamento (GET):
HTTP/1.1 301 Moved Permanently Location: https://www.example.com
- Resposta mal-sucedida para redirecionamento (GET):
HTTP/1.1 404 Not Found Content-Type: application/json
{ "message": "URL Not Found", "timestamp": "2023-05-18T10:30:00", "status": 404, "error": "class dev.camila.url.shortener.exception.BusinessException", "details": { "Cause": "'abc123' not found" } }
Documentação do Swagger
A documentação da API pode ser encontrada no Swagger. Para visualizá-la, acesse: Documentação do Swagger.
Hospedagem no Railway.app
Este projeto está hospedado no Railway.app. Para acessar a aplicação, acesse: URL da Aplicação.
https://railway.app/ devido a questões financeiras. No entanto, a aplicação e o banco de dados estão prontos para serem hospedados no Railway.app. Se você estiver interessado em vê-los hospedados, por favor, me avise e farei a implantação rapidamente para você. (:
Nota: Este projeto não está mais hospedado noPossíveis Melhorias
- Utilizar Migrations com Flyway para gerenciar as alterações no banco de dados de forma controlada e versionada.
- Trocar o Banco de Dados PostgreSQL pelo MongoDB, aproveitando as características e benefícios oferecidos pelo MongoDB.
- Criar um Dockerfile e docker-compose para facilitar o processo de implantação e execução do aplicativo em um ambiente de contêiner.
- Configurar CI/CD no GitHub Actions ou no próprio Railway.app para automatizar o processo de construção, testes e implantação do aplicativo.
Contribuição
Contribuições são bem-vindas! Se você encontrar algum problema ou tiver sugestões de melhoria, fique à vontade para abrir uma issue ou enviar um pull request.
Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo (LICENSE) para obter.
Autor
Camila Cavalcante
Feito com ❤️ por Cami-la 👋🏽 Entre em contato!