Skip to content

Esta é uma API para encurtar URLs e redirecionar para a URL original.

License

Notifications You must be signed in to change notification settings

cami-la/url-shortener-preview

Repository files navigation

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.

  1. Clone o repositório: git clone https://github.com/cami-la/url-shortener.git
  2. Inicie a aplicação no ambiente Unix: ./gradlew bootrun --args='--spring.profiles.active=dev'
  3. 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.

Nota: Este projeto não está mais hospedado no 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ê. (:

Possí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!

Linkedin Badge Gmail Badge