Para rodar o projeto em sua máquina, vá ate o diretório src dentro de Top250MoviesAPI's usando cd Top250MoviesAPI's/src em seu terminal.
Assim que estiver dentro da pasta, digite Javac *.java para compilar o projeto e, em seguida, digite Java App para rodar!
Vamos construir uma aplicação do zero para consumir a API do IMDb e exibir os filmes mais populares, destacando seus pôsteres e visualizando sua classificação...
Primeiro fizemos o request da conexão HTTP da API do IMDB
String url = "https://api.mocki.io/v2/549a5d8Top250TVs";
URI endereço = URI.create(url);
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder(endereço).GET(build();
HttpResponse<String> response = client.send(requestBodyHandlers.ofString());
String body = response.body();Depois, extraí apenas os dados que interessam para nós no aplicativo utilizando um Parser, também utilizando um List<Map<String, String>>, sendo o Map uma Estrutura de Dados Associativa.
Um dos desafios foi associar o imdbRanking a estrelas por nota
String imdbRating = serie.get("imDbRating");
Double imdbRatingDouble = Double.parseDouble(imdbRating);
long roundedRating = Math.round(imdbRatingDouble);
System.out.print("\u001b[48;2;42;122;228mNota: \u001b[m");
System.out.println(serie.get("imDbRating"));
//Estrelas para cada nota
for(int i=0; i < roundedRating; i++){
System.out.print("\u2b50");
}Resultado
Criarei um gerador de figurinhas explorando outras bibliotecas nativas do Java, para que possamos enviar por Whatsapp os nossos filmes preferidos!
StickerGenerator.java
Pegaremos os filmes do IMDb e gerar figurinhas com os pôsteres, aproveitando para melhorar nosso código com as refatorações necessárias para torná-lo mais flexível e fácil de entender.
Vamos construir uma API REST para expor nosso próprio conteúdo, utilizando ferramentas profissionais como o Spring Framework e um banco de dados NoSQL.
Utilizei o MongoDB para armazenar nossa API, também utilizei o Postman(Desktop Version, pois a API ainda está em localhost) para conseguir ver (@GetMapping) as informações contidas na API como também atualiza-las(@PostMapping) diretamente por lá.
Removi o request do HTTP do código principal para ficar mais enxuto e prático de se mexer, criando uma propria class ClientHttp
Também atribui todas as API's para uma class própria enum API, ficando mais fácil para modificar elas, caso necessário...
public enum API {
IMDB("https://api.mocki.io/v2/549a5d8b/Top250Movies", new ExtratorConteudoIMDB()),
NASA("https://api.mocki.io/v2/549a5d8b/NASA-APOD", new ExtratorConteudoNASA()),
MongoDB("http://localhost:8080/linguagens", new ExtratorConteudoMongoDB());
private String url;
private ExtratorDeConteudo extrator;
API(String url, ExtratorDeConteudo extrator){
this.url = url;
this.extrator = extrator;
}
public String url(){
return url;
}
public ExtratorDeConteudo extrator(){
return extrator;
}
}Vamos tornar nossa aplicação acessível por qualquer pessoa, fazendo o deploy na nuvem.
Primeiro, instalei o Maven (https://maven.apache.org/download.cgi) e em seguida, dentro da pasta linguagens-api usei o comando ./mvnw package para gerar o arquivo .jar dentro da pasta target com todas as bibliotecas utilizadas dentro.
Assim, conseguimos rodar o aplicativo a partir do .jar, digitando java -jar .\linguagens-api-0.0.1-SNAPSHOT.jar
Iremos fazer o deploy no Heroku, mas antes temos que definir a versão do Java a ser compilada, criando um arquvio system.properties com a informação da versão dentro, que seria java.runtime.version = 18 (18 é a minha versão, coloque a que estiver usando!).
Para atualizar o deploy no Heroku, utilizar heroku git:remote -a nicolas-linguagens-api com os commits feitos para indicar que é para ir para o git do heroku, e assim que indicar que está no remote do heroku, utilizar git push heroku main para atualizar!
Meu link da API no Heroku: https://nicolas-api-linguagens.herokuapp.com/linguagens


