Giter VIP home page Giter VIP logo

url-shortener-preview's Introduction

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

url-shortener-preview's People

Contributors

cami-la avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.