Skip to content

Nicolas-Formenton/StickerGenerator-from-APIs

Repository files navigation

Bootcamp Alura - Java

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!


Bootcamp Alura - Java - Bootcamp Alura - Java (7)

Aula 01

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

image

Aula 02

Criarei um gerador de figurinhas explorando outras bibliotecas nativas do Java, para que possamos enviar por Whatsapp os nossos filmes preferidos!

StickerGenerator.java

Aula 03

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.

Aula 04

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;
    }
}

Aula 05

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!

image

Meu link da API no Heroku: https://nicolas-api-linguagens.herokuapp.com/linguagens

About

Experimentação com API's [Criação de Imagens Editáveis a partir de uma API utilizada]

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages