Giter Site home page Giter Site logo

diegojunio / url-shortener-preview Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cami-la/url-shortener-preview

0.0 0.0 0.0 100 KB

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

License: MIT License

Java 99.62% Procfile 0.38%

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

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.