Olá, 😉
Sou iniciante no mundo da programação e esse é o meu primeiro projeto realizado em Java. 🌟🚀
Aula 01 - Consumindo uma API de Filmes com Java
Consumir uma API do site IMDb e separar em conteúdos:
- Título do Filme;
- Link da Imagem;
- Notas dos Usuários.
Aula 02 - Gerando Figurinhas para o WhatsApp
Gerar figurinhas a partir de uma imagem do diretório local ou de uma url;
- Criar uma imagem com leitura no terminal;
- Enviar imagem no WhatsApp;
- Conseguir centralizar o texto criado.
Aula 03 - Aula com foco em Orientação a Objetos, Refatoração e Encapsulamento
Gerar figurinhas a partir de uma imagem de uma url, do site da NASA e do IMDb;
- Consumir API do site da IMBd e da Nasa ou os demais links que os instrutores criaram;
- Criação de figurinhas para o WhatsApp com imagens incríveis da Nasa
Aula 04 - Criando nossa própria API com Spring
Criar nossa própria API e Web Service, podendo ser consumida com todo o código que já escrevemos e gerar mais figurinhas baseado neste novo Web Service.
- Criação de própria API e WEB Service
- Acesso ao Spring
- Acesso ao MongoDB
- Acesso ao PostMan
Aula 05 - Publicando nossa API no Cloud
Em construção** 🔨 👩💻 🖱 ⌨ Em breve estará finalizado! 🥰
- Jacqueline Oliveira
- Alexandre Aquiles
- Paulo Silveira
Os 250 melhores filmes de acordo com a classificação do IMDB https://www.imdb.com/chart/top/
Para início, nos cadastramos no site https://imdb-api.com/api , para em seguida, termos a chave de acesso.
Para achar sua API Key:
- Após se registrar e confirmer o registro pelo recebimento do e-mail
- Clicar no nome do usuário
- Abrir o Profile
- Abrir API Tester
- Pronto, sua API Key estará visível
Porém, no primeiro dia da imersão, o site da IMDB ficou instável e os intrutores criaram outros meios para se-guirmos com a aula.
Escolhi o link de API criado pela instrutora Jacqueline: https://alura-filmes.herokuapp.com/conteudos
Tarefa realizada em conjunto com os intrutores da Alura:
Tarefas extras: decorar o terminal.
- Terminal - título do filme sublinhado: System.out.println("\u001b[4m" + filme.get("title") + "\u001b[0m")
- Terminal - link do filme na cor Ciano: System.out.println("\u001b[36m" + filme.get("image") + "\u001b[37m");
- Terminal - nota do usuário na cor Amarela: System.out.println("\u001b[33m" + filme.get("imDbRating") + "\u001b[37m");
Resultado no terminal: 🥰
Base: \u001b[nºm
Realce | Código SGR |
---|---|
Negrito | 1 |
Itálico | 3 |
Sublinhado | 4 |
Piscando | 5 |
Invertido | 7 |
Riscado | 9 |
Cor | Código SGR cor do texto | Código SGR cor de fundo |
---|---|---|
Preta | 30 | 40 |
Vermelha | 31 | 41 |
Verde | 32 | 42 |
Amarelo | 33 | 43 |
Azul | 34 | 44 |
Magenta | 35 | 45 |
Ciano | 36 | 46 |
Branca | 37 | 47 |
https://www.alura.com.br/artigos/decorando-terminal-cores-emojis
Aula para gerarmos figurinhas a partir de uma imagem do diretório local ou de uma url.
Link utilizado: https://raw.githubusercontent.com/alura-cursos/imersao-java/api/TopMovies.json
A imagem no terminal não foi gerada como no exemplo do instrutor e também não gerava erro no código após o RUN.
😱😱😱
**imagem da tela do instrutor Alexandre Aquiles.
Fiquei por algum tempo tentando localizar este "erro", sem sucesso 😥
Continuei acompanhando a aula e codando junto com o professor e chegamos a um resultado positivo! 😁😀
Imagem sendo utilizada no WhatsApp: 😍
-
Criada uma classe para gerarmos as figurinhas: GeradoradFigurinhas.java
-
Na url das informações dos filmes, localizei o link da imagem e salvei em formato filme.jpg, criando no repositório:
- Um diretório de entrada: para salvar arquivos - formato filme.jpg
- Um diretório de saida: para obter o resultado após o RUN no código - formato figurinha.png
Ler imagem a partir de um diretório, dois formatos:
Ler imagem a partir de uma url, neste caso, não é necessário criar os diretórios de entrada e saída.
Na atividade, para gerar várias imagens a partir da url, utilizei o arquivo App.Java com as seguintes modificações:
Complicado sim, mas tudo bem rsrs... É o primeiro projeto!
A partir de um diretório da rede local, com o arquivo salvo em formato .png
-
Este vai controlar onde a imagem vai permanecer acima da parede em transparência.
-
Este vai controlar a largura (x) e altura (y) acima da parede em transparência.
- Exemplo com (x:500) e (y: 0)
- Este vai controlar: fonte, formato, tamanho e cor.
Fonte | Formato | Tamanho | Cor |
---|---|---|---|
Font.SANS-SERIF | (Negrito) Font.ITALIC | size:100 | graphics.setColor(Color.YELLOW) |
- Este vai controlar: texto e redirecionamento do texto, sendo (x: esquerda, centro ou direita) e (-150: altura desejada)
Texto | direção | altura |
---|---|---|
"Um Clássico Perfeito" | x:150 | novaAltura -150 |
- Exemplo com (x:-50 esquerda) e (y:-500 cima)
- Exemplo com (x:300 direita) e (-10: baixo)
Vamos iniciar com essa dica da Alura - APIs públicas: https://github.com/public-apis/public-apis
Refatorar: melhorar o código sem alterar o que ele faz!
Nesta aula, que está S.E.N.S.A.C.I.O.N.A.L, vamos mesclar o conhecimento adquirido da Aula01 e Aula02:
- Consumo de API do site da IMBd, ou os demais links que os instrutores criaram;
- Criação de figurinhas para o WhatsApp.
A ideia é ter um código que consuma com facilidade uma nova API, e a API escolhida foi da NASA!!
API da NASA, com imagens incríveis do James Webb: https://api.mocki.io/v2/549a5d8b/NASA-APOD-JamesWebbSpaceTelescope
Seguiremos a atividade no arquivo GeradoradFigurinhas.java e App.java com o código que faz leitura da uma url [https://github.com/PamelaRondina/Imersao-Alura-Java/tree/main/aula02/src]
- Leitura das 10 primeiras imagens (para não gerarmos erros nas APIs; (Pois essa imersão derrubou algumas APIs 😮).
- Excluir os caracteres após o @ para gerarmos imagens grandes, para as url's da IMDb;
- Arquivo salvos no diretório de saida. No anterior, os arquivos estavam salvos no início, gerando diversos documentos na raiz do projeto.
- listaDeFilmes alterado para ListaDeConteudos.
- filme alterado para conteúdo.
- Manipulação de dados não será a partir de uma imagem, e sim de uma url.
Necessária para gerarmos os atributos titulo e a urlImagem, deixaremos em private, pois quando incluímos apenas public todos os outros arquivos podem chamar.
Private: restringir o acesso para que só o código desta classe acesse diretamente o atributo.
Necessário para expor os atributos para os outros arquivos.
- Botão direito do mouse;
- Source Action;
- Generate Getters;
- Selecionar as lacunas apresentadas.
Código com atalho para expor os arquivos:
Criar um construtor, junto com o final para representar estes conteudos.
- Botão direito do mouse;
- Source Action;
- Generate Constructors;
- Selecionar as lacunas apresentadas.
Receberá uma url. No arquivo App.java o conteúdo abaixo foi removido, e incluso na Classe ClienteHttp.
Nota: para realizar todos os imports utilizar o atalho Alt+Shift+O
E também, teremos que tratar as possíveis exceções geradas para que sejam embrulhadas, criando um try e catch, e, incluir um return body, conforme abaixo:
No arquivo App.java, onde removemos parte do código, vamos criar (como demostrado abaixo) e alterar o buscaDAdos para json:
A lista de Maps será transformada em Lista de Conteudos. No arquivo App.java o conteúdo abaixo foi removido, e incluso na Classe ExtratorDeConteudosDaNasa, onde a listaDeConteudos foi alterada para listadeAtributos.
Criamos um foreach em // popular lista de conteúdos.
Serão quase os mesmos dados da classe da Nasa, com pequenas alterações:
- Em url --> será image;
- E do App.java será adicionado .replaceAll("(@+)(.).jpg$","$1.jpg")*.
Continuando as alterações, seguiremos para o App.java, na seção // exibir e manipular os dados, para incluir e excluir informações, conforme abaixo:
E é isso mesmo!! Podemos optar pela análise da API da NASA ou do IMDb. Vamos compreender como será feito:
Para selecionar qual API devemos analisar, basta incluir // nas linhas de String e ExtratorDeConteudos no qual NÃO for utilizar:
Fizemos o RUN em ambas as API's e o resultado foi positivo! 🤩🤩
Por último, criamos uma interface, para dizer o que um objeto deve fazer.
Interface: o que um objeto deve fazer sem dizer como ele deve ser feito. Quem vai dizer o que deve ser feito são as várias implementações da interface. Na interface, tudo é público.
No Extrator de cada conteúdo devemos incluir: implements ExtratorDeConteudo.
Novamente no App.java, alterar de:
Para:
voilà! Finalizamos nossa aula! 😍😍
Nesta aula, criaremos nossa própria API e Web Service, podendo ser consumida com todo o código que já escrevemos, além disso, vamos gerar mais figurinhas baseado neste novo Web Service! Que maneiro não?! 😁
Vamos misturar diversos Frameworks e bibliotecas, como Spring, Spring Boot, Maven, PostMan e MongoDB.
- Spring
- MongoDB (Banco de Dados)
- PostMan
Afinal, o que são Springs? São Frameworks Open Source, utilizados para agilizar o processo de codificação.
Acessar Star.Spring e seguir os passos abaixo:
- Project: Mavem Project
- Language: Java
- Spring Boot: 3.0.0 (M4)
- Group: br.com.alura
- Artifact: nome-do-projeto
- Description: descrição-do-projeto
- Packaging: Jar
- Java: 17
- Em ADD DEPENDENCIES adicionar Spring Web
- Clicar em Generate
Na pasta de Downloads teremos o arquivo relacionado em .zip, em seguida, devemos extrair o conteúdo do diretório e iniciá-lo no Visual Studio Code [VSC] (abrir com botão direito do mouse!), charemos de Projeto: Linguagens-API.
Iniciaremos um novo projeto e mais tarde vamos mesclar com os códigos das aulas anteriores.
De início, precisamos realizar o registro no MongoDB Atlas, após clicar em Create.
- Escolher a forma de autenticação: senha ou certificado.
- Escolher a origem de onde você gostaria de se conectar:
- My Local Environment: conectar do computador pessoal;
- Cloud Environment: conectar de um data center ou de Cloud pública, por exemplo, AWS.
Optando pelo My Local Environment:
- Descobrir o nº do IP;
- Incluir a descrição, opcional
- Clicar em Add Entry e Finish and Close
PostMan: algumas das possibilidades desta aplicação são navegar e explorar diversas API’s
Realizar o registro em PostMan, e baixar o PostMan Desktop (pois nossa aplicação está no localhost)
Após baixar o PostMan Desktop:
- Clicar My Workspace
- Clicar +
Não faremos um GET e sim um POST, mas no final desta aula
- Apenas para visualizar o resultado! Em GET adicionar o link do localhost: http://localhost:8080/linguagens
- Clicar Send
E PostMan retorna exatamente o que estava no navegador
Faremos uma API das linguagens mais populares das empresas que contratam a Alura. Vamos ranquear por uso, incluir imagem e popularidade.
Voltar ao VSC, abrir o projeto Linguagens-API:
- Criar uma classe LinguagemController
- Incluir a anotação
@RestController
e@GetMapping
- Incluir
return “Oi, Java!”
- Atentar-se aos
import
- Alterar
“path”
para“/linguagem-preferida”
- Alterar
SomeData
paraString
- Alterar
getMethodName
paraprocessaLinguagemPreferida
- Deletar
*@RequestParam String param*
- Deletar
import org.springframework.web.bind.annotation.RequestParam
;
@GetMapping(value="/linguagem-preferida")
public String processaLinguagemPreferida() {
return "Oi, Java!";
}
Após o RUN, no navegador escrever: localhot:8080/linguagem-prefereida e o resultado será Oi, Java! 😄
- Criar um nova Classe Linguagem
- Criar atributos privados
String title
eString image
- Criar
private int ranking
Conforme a aula03 criar os atalhos
- Criar atalho: Generate Getters
- Criar atalho: Generate Contructors
Voltaremos no arquivo LinguagemController.java para adicionar as linhas: 10, 11, 12 e 13.
Fazer o
import java.util.List;
Vamos para o repositório no GitHub com imagens das linguagens de programação.
- Escolher uma linguagem
- Selecionar o arquivo 256x256.png
- Abrir a imagem
- Clicar na imagem para gerar a url em outra janela
- Copiar nova url
Retornando ao código em LinguagemController.java colar a url na lista/image
. Incluímos uma nova linha e repetimos os passos anteriores, neste exemplo, fiz a cópia da url da imagem de Java e Python
Voltando para o arquivo LinguagemController
- Comentar ou deletar as linhas 16, 17, 18 ou 19,
Não serão mais úteis, utilizamos apenas para compreender o primeiro RUN da atividade.
- Adicionar as linhas 21 até 24.
Após o RUN, no navegador escrever: localhot:8080/linguagens e o resultado será um json
Vamos abrir no terminal o projeto anterior, no arquivo App.java vamos adicionar as linhas 17 e 18 para analisarmos uma nova API.
Após o RUN, os arquivos estarão na pasta de saída, conforme na aula anterior e o resultado será:
No repositório a partir do MongoDB (Banco de Dados):
- Clicar em Project: 0
- Clicar em View All Projects
- Clicar em Project0
- Clicar em Browse Collections
- Clicar em Add My Own Data e na próxima janela adicionar os nomes que preferir, e clicar Create
Dentro de uma coleção temos documentos e o MongoDB é um banco que armazena documentos
- Clicar em Insert Document
Em Insert to Collection, vamos uadicionar a url de uma imagens das linguagens de programação Repositório GitHub
- Clicar nas {} (chaves)
- Adicionar atributos: title, image e ranking
- Na imagem, em formato 256x256.png, incluir a url
- Clicar em Insert
Note que temos 01 (um) documento criado
Vamos criar mais 2 (dois) documentos, passaremos as informações criadas no início desta aula para o MongoDB
Atenção no momento de copiar o código não incluir as {}.
Com isso, teremos 3 (três) documentos dentro deste banco de dados, note que em cada item possui um id.
Vamos criar a String de conexão, clicar em:
- Overview
- Connect
- Connect your application
Precisaremos adicionar uma dependência no projeto.
- No VSC
- No projeto Linguagens-api
- Arquivo pom.xml
- Adicionar as linhas 25 até 28
- Clicar em Always (no canto inferior direito da tela)
No arquivo application.properties dentro do main/resources vamos colar nosso link bem legal, que é o valor da propriedade!
Resources são os demais arquivos estáticos, e outros, que não são Java
- Incluir:
spring.data.mongodb.uri
- Incluir o Link bem legal
- Senha (criado no site do MongoDb), deletar as <>
- aluraDb (que é o banco de dados)
No arquivo Linguagem.java incluir as linhas 6, 9, 10, 15, 16 e 17.
Fazer o
import org.springframework.data.annotation.Id;
Fazer oimport org.springframework.data.mongodb.core.mapping.Document;
- Criar uma classe LinguagemRepository para buscar os dados
- Alterar para interface
Apenas para visualizar o código! em MongoRepository, clicar com Ctrl+Clique
(botão esquerdo do mouse)
No arquivo LinguagemController.java
- Deletar ou comentar as linhas 11 até 15
- Adicionar as linhas 22 até 30
lembrete: as linhas 17 até 20 foram desconsideradas em um momento anterior desta aula
Após o RUN, o resultado será 😊
Faremos um POST
- Clicar +
- Em GET alterar para POST
- Em POST adicionar o link do localhost [http://localhost:8080/linguagens]
- Em Body selecionar raw, e em Text alterar para JSON
Faremos o mesmo que no início da atividade, incluir: title, image e ranking. Repositório do GitHub com imagens das linguagens de programação
Voltaremos no VSC, no arquivo LinguagemController.java para adicionar as linhas 32 até 35, criando uma variável para save
= LinguagemSalva
Fazer o
import org.springframework.web.bind.annotation.PostMapping;
Após a variável adicionar return LinguagemSalva
na linha 35
Após o RUN, voltaremos no PostMan, clicar em Send. Tendo a resposta 200 OK o resultado foi positivo 😄
Voltaremos no MongoDB, clicar em Refresh e teremos 04 resultados! 😄
E, por último, um detalhe sobre o MongoDB para conseguirmos acessar de qualquer lugar:
- Em Network Acces
- Em Edit
- Editar para o IP Geral: o acesso para o Ip Geral 0.0.0.0/0
Isso é tudo pessoal! 😊
Stickers Dev: Aluraverso no WhatsApp e Telegram
Em breve estará finalizado! 🥰