Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cami-la/url-shortener-preview
Esta é uma API para encurtar URLs e redirecionar para a URL original.
https://github.com/cami-la/url-shortener-preview
google-guava h2-database java17 junit5 mockito postgresql-database railway-app shortener-url spring-boot spring-boot-3
Last synced: 4 days ago
JSON representation
Esta é uma API para encurtar URLs e redirecionar para a URL original.
- Host: GitHub
- URL: https://github.com/cami-la/url-shortener-preview
- Owner: cami-la
- License: mit
- Created: 2023-05-09T13:02:34.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-06-26T22:10:20.000Z (over 1 year ago)
- Last Synced: 2024-12-12T01:35:40.598Z (11 days ago)
- Topics: google-guava, h2-database, java17, junit5, mockito, postgresql-database, railway-app, shortener-url, spring-boot, spring-boot-3
- Language: Java
- Homepage:
- Size: 97.7 KB
- Stars: 299
- Watchers: 2
- Forks: 35
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
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](http://localhost:8080/swagger-ui/index.html#/).## Hospedagem no Railway.app
Este projeto está hospedado no Railway.app. Para acessar a aplicação,
acesse: [URL da Aplicação](https://sua-url-de-hospedagem-aqui).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
Feito com ❤️ por Cami-la 👋🏽 Entre em contato!
[![Linkedin Badge](https://img.shields.io/badge/-Camila-blue?style=flat-square&logo=Linkedin&logoColor=white&link=https://www.linkedin.com/in/cami-la/)](https://www.linkedin.com/in/cami-la/)
[![Gmail Badge](https://img.shields.io/badge/[email protected]?style=flat-square&logo=Gmail&logoColor=white&link=mailto:[email protected])](mailto:[email protected])