- Descrição do Projeto
- Tecnologias utilizadas
- Funcionalidades e Demonstração da Aplicação
- Tecnologias Utilizadas
- Aula 01
- Aula 02
- Aula 03
- Aula 04
- Aula 05
- Desenvolvido Por
- Pessoas Contribuidoras
O projeto tem como ojetivo de desenvolver uma aplicação do zero em Java visando teoria por meio da prática amplição de portifólios e da carreira de dev.
| Java 17 | |
| VsCode | |
| Coding Pack para Java | |
![]() |
Proton VPN |
![]() |
IMDb-API(*obs: VPN ligada) |
| NASA-API | |
| Spring Initializr | |
| MongoDB | |
| Postman | |
| Docker | |
![]() |
Fly.io |
A inversão são de 5 dias de códificação em java criação de classes, conceitos de herença, polimorfismo, a utilização do framework spring com a criação de uma API para ser consumida pelo próprio gerador de stickers, implementação de desafios.
Na primeira aula ideia iniciamente é consumir microserviços de uma API dos top 250 filmes, no qual será utilizada a IMDb-API. Foi realizado cadatro no site da IMDb-API para conseguir buscar o dados dos Top250Movies, o site não funcionava dizendo estar fora do ar como o status 403, para resolução do problema, foi passado pelo time da alura um link pra buscar os dados e um segunda que encontrei foi utilizar uma VPN que no qual foi possível acessar a o link do site IMDb-API. Na classe main foi criado a conexão com o http para buscar o top 250 filmes. Foi criado uma JsonParser para fazer o processo de separação dos dados. Criado um for para trazer a lista com manipulação do dados titulo , poster, classificação.
- Consumir o endpoint de filmes mais populares da API do IMDB. Procure também, na documentação da API do IMDB, o endpoint que retorna as melhores séries e o que retorna as séries mais populares.
- Usar sua criatividade para deixar a saída dos dados mais bonitinha: usar emojis com código UTF-8, mostrar a nota do filme como estrelinhas, decorar o terminal com cores, negrito e itálico usando códigos ANSI, e mais!
- Colocar a chave da API do IMDB em algum lugar fora do código como um arquivo de configuração (p. ex, um arquivo .properties) ou uma variável de ambiente.
Para aprimoarar os stickers foi implementado uma saudação ja enviar a messagem de bom dia, boa tarde, boa noite de acordo com a hora que for gerada.
LocalTime horaAtual = LocalTime.now();
String textoSaudacao;
if(horaAtual.isBefore(LocalTime.of(12, 0))){
textoSaudacao = "Bom dia!";
}else if(horaAtual.isBefore(LocalTime.of(18,0))){
textoSaudacao = "Boa tarde!";
}else{
textoSaudacao = "Boa Noite!";
}Aula de Manipulação de imagem para gerar stickers pra whatsapp, com a utilização de bibliotecas Java para modificar tamanho da imagem , buscando as imagens da API dos filmes passadno textos dentro dessas imagens
- Redimencionar as imagens para ter um maior resolução.
- Criar diretório de saída das imagens, se ainda não existir.
- Centralizar o texto na figurinha.
- Colocar outra fonte como a Comic Sans ou a Impact, a fonte usada em memes.
- Colocar contorno (outline) no texto da imagem.
- Colocar uma imagem de você que está fazendo esse curso sorrindo, fazendo joinha e fazer com que o texto da figurinha seja personalizado de acordo com as classificações do IMDB.
Aula de refatoração do código com foco em orientação obejtos para deixar mais seguro, manutenivel e organizado para gerar facilidade para outros desenvolvedores conseguir entender o código, foi separado as seguintes classes:
Com essa refatoração sendo possível utilização de outras API pra gerar outros stickers como foi utilizado a API da NASA.
- Transformar a classe que representa os conteúdos em um Record, disponível a partir do Java 16.
- Criar as suas próprias exceções e usá-las na classe que implementa o cliente HTTP.
- Usar recursos do Java 8 e posterior, como Streams e Lambdas, para mapear uma lista em uma outra.
- Criar uma Enum que une, como configurações, a URL da API e o extrator utilizado.
No desafio de transformar a class para record, foi necessário criar outro construtor para ter somente dois atribudos pois na record que foi criado tinha três atributos.
public record Content(String title,String urlImage,double classification) {
public Content(String title, String urlImage) {
this(title, urlImage, 0.0); // classificação como padrão 0.0
}
}Realização do teste da exception criada.
No desafio na criação do enum foi implementado uma lógica se caso for NASA_APOD ele consiga pegar as chaves do arquivo de configuração e a data que esta sendo passada para buscar mais imagens e não somente do dia.
if(api.equals(API.NASA_APOD)){
//API Nasa
String apiKeyNasa = properties.getProperty("NASA_API_KEY");
String dateNasa = properties.getProperty("DATA_NASA");
url = api.getUrl() + apiKeyNasa + dateNasa;
}else{
String apiKeyImdb = properties.getProperty("IMDB_API_KEY");
url = api.getUrl() + apiKeyImdb;
}Criação de uma API em spring que seria um projeto que tem como base ser pré configurado, que ao iniciar um projeto não é necesssario configurações como tomcat, gerenciamento de projeto com o maven, é tudo gerenciado por meio de dependências com suas anotações. O projeto tem com objetivo criar uma API local incialmente para ser consumida a partir do primeiro projeto que foi criado para gerar os stickers, sua busca será por linguagens preferidas, sendo utilizando banco de dados mongoDB, para utilização do banco sendo necessário incluir as denpendencias do mongo no aquivo pom.xml do projeto spring e realizado as configurações para buscar o banco de dados em nuvem.
Outra ferramenta muito importante para o desenvolvimento é o postman que é software para realizar busca de dados, inserir, deletar por meio dos endopoints da aplicação, ele possui uma gama de funcionalidades para realizar testes em uma API.
- Finalizar o CRUD (Create, Read, Update e Delete) para que se possa atualizar e excluir uma linguagem cadastrada;
- Devolver a listagem ordenada pelo ranking;
- Retornar o status 201 quando um recurso (linguagem, no nosso caso) for cadastrado através do POST;
O desafio de ordenação é algo realmente muito simples , apenas criando uma linha de código na classe LanguageRepository foi possvel criar um método findByOrderByRanking para ordernada a lista da linguagens.
Desafio do status code para 201 created teve a alteração do metodo post para ter uma ResponseEntity
Publicação da API no cloudCriação de um arquivo docker file publicar a imagem no docker hub
FROM openjdk:17-jdk-alpine
VOLUME /tmp
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS
COPY target/languages-api-0.0.1-SNAPSHOT.jar languagesapi.jar
EXPOSE 8080
ENTRYPOINT exec java $JAVA_OPTS -jar languagesapi.jar
# For Spring-Boot project, use the entrypoint below to reduce Tomcat startup time.
#ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar languagesapi.jar
Criação da conta no Fly.oi para fazer o deploy do projeto para rodar em cloud.
Realizado set para a senha do banco de dados
Deploy finalizado com sucesso!
link para acesso 👇
➡️ ➡️ ➡️ languages-api ⬅️ ⬅️ ⬅️
Tuane 💙














