Este software é uma API para encurtar links (como o bit.ly ou o tiny url). Foi feito como um desafio e teve um período limitado de tempo para desenvolvimento. Ao invés de investir em funcionalidades, dei prioridade para implementar alguns recursos úteis, de modo a demonstrar conhecimento técnico.
Ainda assim, os campos extras do banco de dados foram mantidos, para uma possível implementação a curto prazo.
A documentação do programa é feita pelo Swagger.
Ao executar a aplicação, o caminho swagger-ui/index.html encaminhará para a versão
web. Você pode clicar aqui se estiver executando localmente
ou importar esse arquivo
(doc/api-docs.json) neste site.
POST /url {"url":"string"}
GET /url/{shortUrl}
- Pelo endereço na nuvem
- Com Docker
docker pull spinnerz/encurtador e/ou
docker run -p <PORTA>:8080 --name <NOME_LOCAL> -e APP_PROFILE=<test OU prod> -e DB_URL=<ENDEREÇO_DO_BANCO_DE_DADOS>:<PORTA_DO_BD>/<NOME_DO_BD> -e DB_USERNAME=postgres -e DB_PASSWORD=<SENHA> spinnerz/encurtador:<VERSÃO_MAIS_RECENTE>- Sem Docker
git clone https://github.com/SpinnerZ/encurtadorURL.git
cd encurtadorURL
mvn clean package
cd target
java -jar encurtador_url-0.0.1-SNAPSHOT.jarO arquivo application.properties deve ser mudado para apontar corretamente para o banco de dados
Os testes dos endpoints (Controllers) foram feitos como integração.
A lógica da organização dos arquivos de teste foi: Uma pasta para cada classe e uma classe para cada método ao invés de classes aninhadas (@Nested). O objetivo é um código bem mais legível, mesmo que algumas duplicações ocorram.
De forma intencional, como pedido pelo desafio, foi utilizado o mínimo de bibliotecas complementares. Sendo assim, optei por não usar o Lombok , Model Mapper e SLF4J.
Devido ao pequeno escopo e classes também muito pequenas, também não foi necessário até o momento utilizar o padrão factory (nem Builders) para testes, paginação de resultados nem o GitFlow.
