Prévia do material em texto
30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 1/25 Consumindo uma API de pokemon com Javascript 01/03/2018 | 17 minutos de leitura Javascript Essa semana eu estava dando uma olhada em algumas vagas no Front End Brasil e notei que muitas vagas pediam experiência com o uso de API’s. Fui correndo pro fórum do Front End Brasil e perguntei: “Como saber se tenho Experiência com API’s?” Com a contribuição do pessoal eu consegui entender um pouco mais sobre API’s e resolvi compartilhar um pouco do meu aprendizado. Esse artigo foi inspirado em How to connect to an api with javascript e nele vou mostrar como consumir e manipular os dados de uma API com informações sobre pokemons. Caso queira já pode dar uma olhada no que será construído nesse artigo. Demonstração Códigos Voltar Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/tags/Javascript/ https://github.com/frontendbr/ https://www.taniarascia.com/how-to-connect-to-an-api-with-javascript/ https://crisgon.github.io/pokeinfo https://github.com/crisgon/pokeinfo https://crisgon.github.io/index.html https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 2/25 O que é uma API? Se dermos uma “googlada” vamos dar de cara com a seguinte descrição no wikipedia: “Interface de Programação de Aplicações (português europeu) ou Interface de Programação de Aplicação (português brasileiro)), cujo acrônimo API provém do Inglês Application Programming Interface, é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao utilizador tradicional.” De forma mais crua, uma API provê uma interface que permite que um software se comunique com outro software sem que seja necessário ter conhecimento do que acontece por de baixo dos panos. Ou seja, uma API pode permitir que tenhamos acesso a geolocalização sem que Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 3/25 precisemos saber que blocos de códigos são executadas para que essa geolocalização seja fornecida, pode permitir que seja possível criar contas utilizando o facebook, google ou twitter, ou pode simplismente nos fornecer informações sobre livros. Vale ressaltar que as API’s não se limitam apenas a WEB, elas estão presentes em diversos outros cenários, como o dos SO’s, dos embarcados e vários outros. Porém se tratando do cenário WEB as API’s se baseiam em requisições e respostas HTTP (requests e responses), que na maioria das vezes seguem o padrão XML ou JSON. Para entender sobre API’s de forma mais clara faça a leitura desses artigos: O que é API Nobody introduced me to the API. Interface de programação de aplicações Hey! Oh!, let’s go! Antes de iniciar quero deixar claro que essa aplicação foi totalmente desenvolvida por mim, então é capaz de conter pequenos bugs e também pode ser que as técnicas que utilizei não tenham sido as melhores, porém senti a Cristiano Gonçalves Home Sobre Projetos Experimentos https://canaltech.com.br/software/o-que-e-api/ https://www.robinwieruch.de/what-is-an-api-javascript/ https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5es https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 4/25 necessidade de compartilhar o conhecimento sobre API’s que consegui até agora. Vamos construir uma pequena aplicação que recebe o nome ou o número de um pokemon e retorna algumas informações sobre o mesmo. Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 5/25 Aplicação utilizando dados de pokemons. Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 6/25 Vamos utilizar os dados da pokeapi, toda informação adicional necessária se encontra na documentação da API. O HTML e o CSS O foco desse artigo é o javascript, então não vou explicar sobre o HTML e CSS, mas basicamente temos o seguinte HTML: Além do form, temos uma section que irá receber os dados dos pokemons e um span que irá aparecer quando uma busca não for bem sucedida. Caso queira pode fazer o download do HTML e do CSS O Javascript <main class="container"> <img src="https://upload.wikimedia.org/wikipedia/commons/9/98/International_P <form action="" class="search"> <input type="search" class="search-input" placeholder="Search about a pokem <button class="search-button">Search</button> </form> <section class="pokemon"> </section> <span class="error">Not Found!</span> </main> Cristiano Gonçalves Home Sobre Projetos Experimentos https://pokeapi.co/ https://github.com/crisgon/pokeinfo/blob/gh-pages/index.html https://github.com/crisgon/pokeinfo/blob/gh-pages/pokemons.css https://upload.wikimedia.org/wikipedia/commons/9/98/International_Pok%C3%A9mon_logo.svg https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 7/25 A primeiracoisa que iremos fazer é de�nir uma constante(também pode ser uma variável) com o URL da API, que também é chamada de endpoint. // API endpoint const baseUrl = 'https://pokeapi.co/api/v2/pokemon/'; Agora iremos criar uma pequena função para diminuir a escrita na hora de pegar os elementos HTML. function getElement(element) { return document.querySelector(element); } Logo em seguida iremos capturar os elementos HTML e criar 3 variáveis globais que usaremos futuramente. // Get Elements const searchInput = getElement('.search-input'), searchButton = getElement('.search-button'), container = getElement('.pokemon'), erroMessage = getElement('.error'); var pokeName, // Nome ou numero passado na caixa de busca pokemon, // Responsavel por guardar os dados recebidos da API card; // Responsavel por receber o HTML Cristiano Gonçalves Home Sobre Projetos Experimentos http://pokeapi.co/api/v2/pokemon/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 8/25 Você pode dar um console.log() em cada uma das constantes para veri�car se a captura foi feita corretamente. Agora vamos estabelecer nossa primeira conexão com a API. Existem diversas maneiras de fazer isso, uma bem usual é utilizando o XMLHttpRequest(), porém utilizaremos o fetch por sua praticidade. fetch('https://pokeapi.co/api/v2/pokemon/pikachu') .then(response => response.json()) .then(data => console.log(data)) .catch(err => console.log(err)); Abra o console do seu navegador e veja que agora temos um objeto com informações sobre o pokemon pikachu. Uma explicação rápida sobre o fetch: Ele é composto por promisses javascript, e basicamente o primeiro .then() recebe a resposta da requisição e por meio de uma função transformamos essa resposta em um json, logo depois o segundo .then() recebe essa resposta, e a imprime no console. Por �m temos o catch que só é executado caso aconteça algum erro na operação e a imprime uma mensagem de erro console. Cristiano Gonçalves Home Sobre Projetos Experimentos https://pokeapi.co/api/v2/pokemon/pikachu https://braziljs.org/blog/promises-no-javascript/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 9/25 Agora já sabemos como fazer uma requisição! Se você se atentou, precisamos apenas mudar a URL para conseguir informações sobre outro pokemon. Faça o teste substituindo pikachu por outro nome ou algum número. Vamos fazer algumas alterações no nosso código e ele deve �car assim: // API endpoint -------------------------------------------- const baseUrl = 'https://pokeapi.co/api/v2/pokemon/'; // Get Elements -------------------------------------------- const searchInput = getElement('.search-input'), searchButton = getElement('.search-button'), container = getElement('.pokemon'), erroMessage = getElement('.error'); var pokeName, // Nome ou numero passado na caixa de busca pokemon, // Responsavel por guardar os dados recebidos da API card; // Responsavel por receber o HTML // Build Functions -------------------------------------------- // Função para reduzir a escrita na captura de elementos HTML function getElement(element) { return document.querySelector(element); } // Função responsavel por fazer requisições para a API e inserir as respostas na function requestPokeInfo(url, name) { fetch(url + name) .then(response => response.json()) .then(data => { pokemon = data; Cristiano Gonçalves Home Sobre Projetos Experimentos https://pokeapi.co/api/v2/pokemon/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 10/25 Já sabemos como receber os dados de um pokemon, porém ainda não temos nada dinâmico… Então vamos pegar o valor da caixa de pesquisa e utiliza-lo para pesquisar por um pokemon. Para isso vamos adicionar um evento de click ao botão e atribuir o valor do input para a variável pokeName, que será passada como argumento para nossa função que faz a requisição para a API. Agora podemos escrever o nome de um pokemon e receber dados sobre ele no console do navegador. Faça o teste!! Eai, funcionou? Agora vamos trazer os dados que estão no console para o nosso documento HTML, pois ninguém quer �car abrindo o console pra �car visualizando informações. 😃 }) .catch(err => console.log(err)); } console.log(pokemon); // Execute o console para verificar os dados no console searchButton.addEventListener('click', event => { event.preventDefault(); pokeName = searchInput.value.toLowerCase(); /* A api só aceita nomes minusculos, então vamos usar a função toLowerCase para requestPokeInfo(baseUrl, pokeName) }); Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 11/25 A nossa resposta é um objeto, então podemos acessar suas propriedades como em qualquer objeto javascript. Para recuperarmos o nome do pokemon podemos executar pokemon.name, para o número usamos o pokemon.id e todas as outras informações seguem a mesma lógica. Vamos criar uma função que irá montar um HTML. Recomendo que pesquise por template strings caso ache a sintaxe ${} estranha. O weight e o height (peso e altura) eles vem multiplicados por 10, descobri isso comparando as informações com as do site o�cial do Pokemon. Por isso estou dividindo ambos por 10. function createCard () { card = ` <div class="pokemon-picture"> <img src="${pokemon.sprites.front_default}" alt="Sprite of ${pokemon.name}" </div> <div class="pokemon-info"> <h1 class="name">Name: ${pokemon.name}</h1> <h2 class="number">Nº ${pokemon.id}</h2> <h3 class="type">Type: ${pokemon.types.map(item => ' ' + item.type.name) <h3 class="skill">Skills: ${pokemon.moves.map(item => ' ' + item.move.nam <h3 class="weight">Weight: ${pokemon.weight / 10}kg</h3> <h3 class="height">Height: ${pokemon.height / 10}m</h3> </div>`; return card; } Cristiano Gonçalves Home Sobre Projetos Experimentos https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/template_strings https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projectshttps://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 12/25 Outra coisa importante são as informações type e skills (tipo e habilidades). Ambas podem conter um valor ou vários, sendo retornadas como um array. Então utilizei o map para criar um novo array com espaços e logo em seguida converti tudo em string. Logo em seguida adicione esse pequeno trecho container.innerHTML = createCard(); na função do addEventListener do botão, atualize a página e pesquise por um pokemon. Ocorreu algum erro? Certo, vamos corrigir! O erro acontece porque a função que cria o HTML foi executada antes da requisição terminar, logo temos a mensagem de que não podemos acessar propriedades de unde�ned. Para resolver isso precisamos fazer com que nossa função que cria o HTML espere um pouco antes de ser executada, vamos utilizar o setTimeout, porém recomendo que pesquise sobre javascript assíncrono. Criaremos uma função principal que será responsável por fazer a chamada de todas as outras funções existentes. // Função que faz a chamada das principais funções e inicia o app function startApp(pokeName) { Cristiano Gonçalves Home Sobre Projetos Experimentos https://braziljs.org/blog/tag/javascript-assincrono/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 13/25 Faça uma mudança na função de click do botão, faça com que a única função a ser executada seja a startApp. Com as alterações feitas nosso código deve �car assim requestPokeInfo(baseUrl, pokeName); // A função que cria o HTML só será executada 2 segundos depois que a função st setTimeout(function () { container.innerHTML = createCard(); }, 2000); } // API endpoint -------------------------------------------- const baseUrl = 'https://pokeapi.co/api/v2/pokemon/'; // Get Elements -------------------------------------------- const searchInput = getElement('.search-input'), searchButton = getElement('.search-button'), container = getElement('.pokemon'), erroMessage = getElement('.error'); var pokeName, // Nome ou numero passado na caixa de busca pokemon, // Responsavel por guardar os dados recebidos da API card; // Responsavel por receber o HTML // Build Functions -------------------------------------------- // Função para reduzir a escrita na captura de elementos HTML function getElement(element) { return document.querySelector(element); } Cristiano Gonçalves Home Sobre Projetos Experimentos https://pokeapi.co/api/v2/pokemon/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 14/25 // Função responsavel por fazer requisições para a API e inserir as respostas na function requestPokeInfo(url, name) { fetch(url + name) .then(response => response.json()) .then(data => { pokemon = data; }) .catch(err => console.log(err)); } // Função responsavel por montar o HTML exibido na pagina function createCard () { card = ` <div class="pokemon-picture"> <img src="${pokemon.sprites.front_default}" alt="Sprite of ${pokemon.name}" </div> <div class="pokemon-info"> <h1 class="name">Name: ${pokemon.name}</h1> <h2 class="number">Nº ${pokemon.id}</h2> <h3 class="type">Type: ${pokemon.types.map(item => item.type.name).toStri <h3 class="skill">Skills: ${pokemon.moves.map(item => ' ' + item.move.nam <h3 class="weight">Weight: ${pokemon.weight / 10}kg</h3> <h3 class="height">Height: ${pokemon.height / 10}m</h3> </div>`; return card; } // Função que faz a chamada das principais funções e inicia o app function startApp(pokeName) { requestPokeInfo(baseUrl, pokeName); setTimeout(function () { container.innerHTML = createCard(); }, 2000); } Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 15/25 Já podemos dar o nosso APP como �nalizado, então o que vem a seguir é opcional. A primeira grande mudança que iremos fazer é na função principal function startApp(pokeName) { requestPokeInfo(baseUrl, pokeName); setTimeout(function () { //Exibe uma mensagem caso o pokemon pesquisado não exista if(pokemon.detail) { erroMessage.style.display = 'block'; container.style.display = 'none'; }else{ erroMessage.style.display = 'none'; container.style.display = 'flex'; container.innerHTML = createCard(); } }, 2000); } Quando uma pesquisa é mal sucedida o retorno é a informação detail. Então veri�camos se existe o detail no objeto pokemon, caso exista nós mudamos o display // Add Events -------------------------------------------- searchButton.addEventListener('click', event => { event.preventDefault(); pokeName = searchInput.value.toLowerCase(); startApp(pokeName); }); Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 16/25 da tag que contém a mensagem de erro para block e mudamos o display da section com as informações do pokemon para none. Se a propriedade detail não existir, signi�ca que a busca foi bem sucedida, então escondemos a mensagem de erro, mostramos a section com as informações e chamamos a função que monta o html. A próxima grande mudança é no evento de click // Add Events -------------------------------------------- searchButton.addEventListener('click', event => { event.preventDefault(); pokeName = searchInput.value.toLowerCase(); startApp(pokeName); container.classList.add('fade'); // Reseta o efeito fade removendo a classe fade setTimeout(() => { container.classList.remove('fade'); }, 3000); }); Aqui estamos adicionando a classe ‘fade’ ao nosso container, essa classe é responsável por fazer um efeito de transição suave. Logo depois utilizamos o setTimeout() para remover a classe fade depois de 3 segundos para que ela possa seradicionada novamente no próximo evento de click. Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 17/25 No �m de tudo o código deve �car assim // API endpoint -------------------------------------------- const baseUrl = 'https://pokeapi.co/api/v2/pokemon/'; // Get Elements -------------------------------------------- const searchInput = getElement('.search-input'), searchButton = getElement('.search-button'), container = getElement('.pokemon'), erroMessage = getElement('.error'); var pokeName, // Nome ou numero passado na caixa de busca pokemon, // Responsavel por guardar os dados recebidos da API card; // Responsavel por receber o HTML // Build Functions -------------------------------------------- // Função para reduzir a escrita na captura de elementos HTML function getElement(element) { return document.querySelector(element); } // Função responsavel por fazer requisições para a API e inserir as respostas na function requestPokeInfo(url, name) { fetch(url + name) .then(response => response.json()) .then(data => { pokemon = data; }) .catch(err => console.log(err)); } // Função responsavel por montar o HTML exibido na pagina function createCard () { Cristiano Gonçalves Home Sobre Projetos Experimentos https://pokeapi.co/api/v2/pokemon/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 18/25 card = ` <div class="pokemon-picture"> <img src="${pokemon.sprites.front_default}" alt="Sprite of ${pokemon.name}" </div> <div class="pokemon-info"> <h1 class="name">Name: ${pokemon.name}</h1> <h2 class="number">Nº ${pokemon.id}</h2> <h3 class="type">Type: ${pokemon.types.map(item => item.type.name).toStri <h3 class="skill">Skills: ${pokemon.moves.map(item => ' ' + item.move.nam <h3 class="weight">Weight: ${pokemon.weight / 10}kg</h3> <h3 class="height">Height: ${pokemon.height / 10}m</h3> </div>`; return card; } // Função que faz a chamada das principais funções e inicia o app function startApp(pokeName) { requestPokeInfo(baseUrl, pokeName); setTimeout(function () { //Exibe uma mensagem caso o pokemon pesquisado não exista if(pokemon.detail) { erroMessage.style.display = 'block'; container.style.display = 'none'; }else{ erroMessage.style.display = 'none'; container.style.display = 'flex'; container.innerHTML = createCard(); } }, 2000); } // Add Events -------------------------------------------- searchButton.addEventListener('click', event => { event.preventDefault(); pokeName = searchInput.value.toLowerCase(); startApp(pokeName); Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 19/25 Isso é tudo, pessoal!! Esse artigo foi um pouco mais extenso que o normal, mas foi muito enriquecedor para mim, espero que tenha acrescentado algo nos seus estudos. Provavelmente eu devo ter me equivocado em algum momento ou deixado alguma informação confusa, caso tenha visto algo do tipo é só me avisar, isso vai ajudar muito na minha caminhada para ser um Front End Developer! Todo esse conteúdo foi feito com base nos seguintes links: How to connect to an api with javascript O que é API Nobody introduced me to the API. Interface de programação de aplicações Front End Brasil container.classList.add('fade'); // Reseta o efeito fade removendo a classe fade setTimeout(() => { container.classList.remove('fade'); }, 3000); }); Cristiano Gonçalves Home Sobre Projetos Experimentos https://www.taniarascia.com/how-to-connect-to-an-api-with-javascript/ https://canaltech.com.br/software/o-que-e-api/ https://www.robinwieruch.de/what-is-an-api-javascript/ https://pt.wikipedia.org/wiki/Interface_de_programa%C3%A7%C3%A3o_de_aplica%C3%A7%C3%B5es https://github.com/frontendbr/forum/issues https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 20/25 Obrigado por ler até aqui!! Se curtiu esse post compartilha com seus amigos e deixa um comentário caso tenha alguma sugestão do que posso melhorar. TAMBÉM NO CRISTIANO GONÇALVES há 4 anos 19 COMENTÁRI… Sabe aquela vaga maneira que você pensou em se candidatar, mas desistiu … Minha jornada criandoMinha jornada criando 30 sites em 30 dias30 sites em 30 dias • há 4 anos 2 COMENTÁRIOS O uso de arrays no javascript é algo bastante comum devido a sua … Usando Arrays comUsando Arrays com JavaScriptJavaScript • há 4 anos 2 COMENTÁRIOS No momento em que vivemos, não é tão difícil encontrar artigos sobre … Todo dia um blogTodo dia um blog diferentediferente • há 4 anos 4 C Sempre me d uma ou outra css e meus p DesenhandDesenhand shadowshadow • Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 21/25 Cristiano Gonçalves Home Sobre Projetos Experimentos https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 22/25 Sponsored Dr. Rafael Freitas Cash Roadster Game Of Glam Arti Up Brasil Dr. Rafael Freitas - Especialista em saúde masculina Ci-Active H dá l à d 2 d i l it d b há d t Médico Brasileiro: Eu imploro aos Brasileiros que abandonem esses três alimentosAcredite, este é o valor que Silvio Santos tem em sua conta bancária Acredite, este é o salário de Paolla Oliveira Dores constantes nas juntas: Basta uma dose disto 1x ao dia Médico ensina homens acima dos 40 a urinar como jovem em 30 dias, com um simples ritual caseiro. Dor nas costas, ciático ou coluna? Faça isso todos os dias Comentários Comunidade 🔒 Política de privacidade Ima t Tweet f Partilhar Favorite 2 Cristiano Gonçalves Home Sobre Projetos Experimentos https://info.doutornature.com/sfunnel/2081/?tb_campanha=Vital-3.1&tb_publisher=disqus-widget-safetylevel20longtail09&tb_ad=M%C3%A9dico+Brasileiro%3A+Eu+imploro+aos+Brasileiros+que+abandonem+esses+tr%C3%AAs+alimentos&tb_creative=http%3A%2F%2Fcdn.taboola.com%2Flibtrc%2Fstatic%2Fthumbnails%2F1b0c70e52a40f8449f5410ed51d86901.png&tb_campaign_name=%5BVital-3.1%5D%5BDesktop%5D%5BF2%5D%5BDesc%5D%5BWL%5D%5BAdv35%5D%5B14-10%5D%5Bsfunnel%3D2081%5D&utm_source=Taboola&utm_medium=cpc&utm_content=vital_adv35&utm_term=vital_3alimentos&tblci=GiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCCdwUMopr33p4_SlfNm#tblciGiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCCdwUMopr33p4_SlfNm https://cashroadster.com/trending/as-celebridades-sao-donas-de-verdadeiras-fortunas-voce-tem-ideia-quanto-elas-ganham-entao-vamos-embarcar-nessa-e-descobrir-quanto-elas-ganham-mh?utm_source=taboola&utm_medium=disqus-widget-safetylevel20longtail09&utm_campaign=13091368&utm_term=Acredite%2C+este+%C3%A9+o+valor+que+Silvio+Santos+tem+em+sua+conta+banc%C3%A1ria&utm_content=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fb%2Fb8%2F15_12_2020_Lan%25C3%25A7amento_de_selo_alusivo_ao_anivers%25C3%25A1rio_de_90_anos_do_comunicador_Silvio_Santos_%252850724490531%2529_%2528cropped%2529.jpg&ts=2021-10-30+18%3A30%3A42&tbv=3frAtV-5ndUPFroiVF0Fy3oXjmtuoyj2Ji5VS7P0TxU=&pcl=1&br=1 https://gameofglam.com/veja-qual-e-o-salario-dessas-celebridades-2-mh/?utm_source=taboola&utm_medium=disqus-widget-safetylevel20longtail09&utm_campaign=13114743&utm_term=Acredite%2C+este+%C3%A9+o+sal%C3%A1rio+de+Paolla+Oliveira&utm_content=https%3A%2F%2Ftititi.perfil.com%2Fwp-content%2Fuploads%2F2021%2F04%2Fpaolla-oliveira-de-biquini.jpg&ts=2021-10-30+18%3A30%3A42&tbv=SyCSYFYxxbZYJSQubeXuXnoXjmtuoyj2Ji5VS7P0TxU=&pcl=1&br=1 https://gonext.me/at1709-2mb?tblci=GiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCDv3kIot67qu9KarPa8AQ#tblciGiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCDv3kIot67qu9KarPa8AQ https://info.doutornature.com/sfunnel/4515/?tb_campanha=Prosta-6.1&tb_publisher=disqus-widget-safetylevel20longtail09&tb_ad=M%C3%A9dico+ensina+homens+acima+dos+40+a+urinar+como+jovem+em+30+dias%2C+com+um+simples+ritual+caseiro.&tb_creative=http%3A%2F%2Fcdn.taboola.com%2Flibtrc%2Fstatic%2Fthumbnails%2F58a5ab1766b2819ef40449243c0d3a0e.jpg&tb_campaign_name=%5BProsta-6.1%5D%5BDesktop%5D%5BWL%5D%5BAdv3%5D%5BF1%5D%5B18-08%5D%5Bsfunnel%3D4515%5D&utm_source=Taboola&utm_medium=cp&tb_tipo_funil=vsl&utm_content=prosta_adv3&utm_term=prosta_jovem&tblci=GiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCDTkVUoouKK7srM-fwr#tblciGiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCDTkVUoouKK7srM-fwr https://belyrists-homisted.icu/b3060465-6dd0-4820-83e6-0fbaf4182c1d?site=disqus-widget-safetylevel20longtail09&site_id=1042962&title=Dor+nas+costas%2C+ci%C3%A1tico+ou+coluna%3F+Fa%C3%A7a+isso+todos+os+dias&platform=Desktop&campaign_id=12846880&campaign_item_id=3036106412&thumbnail=http%3A%2F%2Fcdn.taboola.com%2Flibtrc%2Fstatic%2Fthumbnails%2Fc3649e5ec0f2ae20690986d88f4f9ff1.jpg&click_id=GiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCCKq1UonZbF4sagy4B6&utm_source=taboola&utm_medium=referral&tblci=GiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCCKq1UonZbF4sagy4B6#tblciGiD924aEPC1Io-yqqvNIFKiDw5KF_JJJRqrL2oLT4lw3QCCKq1UonZbF4sagy4B6 https://rfvtgb.history10.com/worldwide/mulher-segredo-colar-pr?utm_medium=taboola&utm_source=taboola&utm_campaign=ta-hy-gurmet-f-des-bz-wl-yk-27101&utm_term=disqus-widget-safetylevel20longtail09&utm_bid=DD0eD90JNMOrvcduUL5OM3P4iMt17yz7WUX7WcrNcO0=&utm_geo=pr https://disqus.com/home/forums/cristiano-goncalves/ https://help.disqus.com/customer/portal/articles/466259-privacy-policy https://disqus.com/home/inbox/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 23/25 Mostrar primeiro os mais votados Escreva o seu comentário... Tyago Machado • há 2 anos • Responder • Cara, parabéns, muito bom o conteudo e a forma que explicou ele. Me ajudou muito. Obrigado. 3△ ▽ Breno Silva • há 7 meses • Responder • Parabéns, muito bem explicado, muito bom mesmo, muito conhecimento em um post tão simples, conhecimento para qualquer profissional tanto de front quanto back end. Muito obrigado irmão. 2△ ▽ Partilhar › Partilhar › Cristiano Gonçalves Home Sobre Projetos Experimentos https://disqus.com/by/tyago_machado/ https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/#comment-4840606694 https://disqus.com/by/disqus_O4AkooCY4c/ https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/#comment-5335684090 https://disqus.com/by/tyago_machado/ https://disqus.com/by/disqus_O4AkooCY4c/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 24/25 Sponsored Dr. Rafael Freitas History 10 Chip da Beleza Comfort Shoes Nail Cure Oferta premium Médico Brasileiro: Eu imploro aos Brasileiros que abandonem esses três alimentos [Fotos] Famosos falidos trabalhando em empregos comuns As exclusivas selecionadas com desconto e frete grátis Saiba mais Sapatênis masculino de couro legítimo Virtus. Comprar agora Novo método para tratar fungos nas unhas vira febre em Bom Jesus Do Amparo Coleção de camisas com frete grátis e desconto Saiba mais Cristiano Gonçalves Home Sobre Projetos Experimentos https://info.doutornature.com/sfunnel/2081/?tb_campanha=Vital-3.1&tb_publisher=disqus-widget-safetylevel20longtail09&tb_ad=M%C3%A9dico+Brasileiro%3A+Eu+imploro+aos+Brasileiros+que+abandonem+esses+tr%C3%AAs+alimentos&tb_creative=http%3A%2F%2Fcdn.taboola.com%2Flibtrc%2Fstatic%2Fthumbnails%2F1b0c70e52a40f8449f5410ed51d86901.png&tb_campaign_name=%5BVital-3.1%5D%5BDesktop%5D%5BF2%5D%5BDesc%5D%5BWL%5D%5BAdv35%5D%5B14-10%5D%5Bsfunnel%3D2081%5D&utm_source=Taboola&utm_medium=cpc&utm_content=vital_adv35&utm_term=vital_3alimentos&tblci=GiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iCdwUMo_aD207CV8siLAQ#tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iCdwUMo_aD207CV8siLAQ https://rfvtgb.history10.com/worldwide/artistas-brasileiros-famosos-charlie-ta-pr?utm_medium=taboola&utm_source=taboola&utm_campaign=ta-hy-poorcel-s-des-bz-ns-13081d&utm_term=disqus-widget-safetylevel20longtail09&utm_bid=adLHmpWlBU6YZeFqFMB4n71hcbcn8js3ZA3KJ6q6w1Q=&utm_geo=pr https://www.dexcubras.com/products/dz2?utm_source=taboola&utm_medium=referral&tblci=GiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDQrVYo6JjBy-HInLJI#tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDQrVYo6JjBy-HInLJI https://www.comfortshoes.com.br/Sapatenis-Masculino-De-Couro-Legitimo-Virtus-Preto-44706?utm_source=taboola&utm_medium=[44706][DESK]#tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iD72Eoo6_Hq9vOmn42aAQ https://go.nailcureoficial.com/?flux_fts=tzqaitczoictzxapitcecxoxoictclolzqiqoz3e926&utm_source=taboola&utm_campaign=NC0915D1&utm_medium=disqus-widget-safetylevel20longtail09&utm_content=3031954565&site=disqus-widget-safetylevel20longtail09&site_id=1042962&campaign_id=12531371&campaign_item_id=3031954565&tb_click_id=GiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDXk1EoiovdtJvt6fR9&title=Novo+m%C3%A9todo+para+tratar+fungos+nas+unhas+vira+febre+em+Bom+Jesus+Do+Amparo&thumbnail=http%3A%2F%2Fcdn.taboola.com%2Flibtrc%2Fstatic%2Fthumbnails%2F5a6b05872bfeb197f980372f8587a879.png&platform=Desktop×tamp=2021-10-30+18%3A30%3A42&tblci=GiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDXk1EoiovdtJvt6fR9#tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDXk1EoiovdtJvt6fR9https://www.dexcubras.com/products/combo6premium?utm_source=taboola&utm_medium=referral&tblci=GiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDhvlUozc3L997dld7iAQ#tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDhvlUozc3L997dld7iAQ https://trc.taboola.com/disqus-widget-safetylevel20longtail09/log/3/click?pi=%2Fposts%2Fconsumindo-uma-api-de-pokemon-com-javascript&ri=133a7c09b3d1d130e2bf7fbf211c7ca7&sd=v2_872ad85f7f3bd5540bdde8d012c16a74_364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2_1635618642_1635618642_CIi3jgYQktQ_GNWp35PNLyABKAEwHzjb1AdA8YcQSI6h4QNQ5tEEWABgAGiq1e69zq2_yFNwAQ&ui=364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2&it=text&ii=~~V1~~-1586377841999056914~~oVXTm_bnbzZ_wUYG589c0e6RSGEpAu6lmfuZ5QyMYhMndpXq_nTToVci-tV_1bYyPVPbFHdycXfyr1VxmozLcWANN93_dhGoNVU93HODOAawecwlYupV-ADLiqSJCBxnkF2brjDLkjXtE0mWjyPKoFnFXeb-uloOOUnZR6JMi7sTg-_9RYbLFsJaIWAlQOQFP8Mj0SpiSYWwDT9FkUszAJ6UGFyM2__RSqMPQoGPLAm-zLncZrQpCnl9J2eoiLP6RBG5oa8K5ymyZoQEYhZoTD57lt7KjKx7radfjBemEiGSChHagW0o0KT2k8fyn3_CmUt5dQdKHDSD-IROEG5rKQ&pt=text&li=rbox-t2m&sig=8aeb4f9b310f0fef4e446fcd12b91259172c36717c24&redir=https%3A%2F%2Fwww.dexcubras.com%2Fproducts%2Fdz2%3Futm_source%3Dtaboola%26utm_medium%3Dreferral%26tblci%3DGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDQrVYo6JjBy-HInLJI%23tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDQrVYo6JjBy-HInLJI&vi=1635618641109&p=johnlucas-br-c2-sc&r=19<i=deflated&ppb=CEU&cpb=EhIyMDIxMTAyOC0yLVJFTEVBU0UYzpodIAAqGXVzLnRhYm9vbGFzeW5kaWNhdGlvbi5jb20yCndhdGVyMTAxMjU4gJav7wJA29QHSPGHEFCOoeEDWObRBGMI1xYQ1R8YI2RjCNz__________wEQ3P__________ARgkZGMI0gMQ4AYYCGRjCJYUEJ8cGBhkYwjn__________8BEOf__________wEYGWRjCPQUEJ4dGB9keAGAAQKIAam6mcQB&cta=true https://trc.taboola.com/disqus-widget-safetylevel20longtail09/log/3/click?pi=%2Fposts%2Fconsumindo-uma-api-de-pokemon-com-javascript&ri=133a7c09b3d1d130e2bf7fbf211c7ca7&sd=v2_872ad85f7f3bd5540bdde8d012c16a74_364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2_1635618642_1635618642_CIi3jgYQktQ_GNWp35PNLyABKAEwHzjb1AdA8YcQSI6h4QNQ5tEEWABgAGiq1e69zq2_yFNwAQ&ui=364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2&it=text&ii=~~V1~~1802802830147828684~~6kibd9wTYgB5vNgL1Almma0DVoF7vuk91srqNeaOU3RFiu7t5aMeQv_OvQ_xsFedK8Bm7FKD2NW1M1BCiW1-kuMDMqg65-jJbi04eURsbtqeHe1S9jo_X4timp5pCZhQ1qPnz8TIp56FGMwGW1REdGP6mCOrMydSrc5toiHgFWDXWC7fMmXKFK3QKp3Ct8jnlILWlLG9BAl1qIKEbVJE0_5ntbk2zYiLjCF2vU1R4fVIgoh9LgevFw_S7lTgZsfl335JyUpoDQWuuLi1-DNuCjUngz45m_xqzOz1Bq1Qy7I&pt=text&li=rbox-t2m&sig=2f2c4b327c4800ade8c670c5969f151a302c1e648bbb&redir=https%3A%2F%2Fwww.comfortshoes.com.br%2FSapatenis-Masculino-De-Couro-Legitimo-Virtus-Preto-44706%3Futm_source%3Dtaboola%26utm_medium%3D%5B44706%5D%5BDESK%5D%23tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iD72Eoo6_Hq9vOmn42aAQ&vi=1635618641109&p=taboolaaccount-contatocomfortshoesgmailcom&r=57<i=deflated&ppb=CEU&cpb=EhIyMDIxMTAyOC0yLVJFTEVBU0UYzpodIAAqGXVzLnRhYm9vbGFzeW5kaWNhdGlvbi5jb20yCndhdGVyMTAxMjU4gJav7wJA29QHSPGHEFCOoeEDWObRBGMI1xYQ1R8YI2RjCNz__________wEQ3P__________ARgkZGMI0gMQ4AYYCGRjCJYUEJ8cGBhkYwjn__________8BEOf__________wEYGWRjCPQUEJ4dGB9keAGAAQKIAam6mcQB&cta=true https://trc.taboola.com/disqus-widget-safetylevel20longtail09/log/3/click?pi=%2Fposts%2Fconsumindo-uma-api-de-pokemon-com-javascript&ri=133a7c09b3d1d130e2bf7fbf211c7ca7&sd=v2_872ad85f7f3bd5540bdde8d012c16a74_364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2_1635618642_1635618642_CIi3jgYQktQ_GNWp35PNLyABKAEwHzjb1AdA8YcQSI6h4QNQ5tEEWABgAGiq1e69zq2_yFNwAQ&ui=364f6b38-bf58-424b-92c8-118b0c3b719c-tuct87714d2&it=text&ii=~~V1~~-6393319293191170596~~iTGIP2ydVMmBjgM-ZnArw1BFElICVThcKGGinVKlGE0ndpXq_nTToVci-tV_1bYyPVPbFHdycXfyr1VxmozLcV7JbGFbjtizQN29Zpin8p1JlawpbYFtoRw_FVSAoDPy8yoVX_ZV1DUzrU9mgEqIxVpt34vkyVLCqQj-j_6Ik-WFwt9_72reDSrMsTKuuUo5hyXF24OjjFNPNPUkxZiwjkBWEJeUrf8VvEb8BcmNrNfUWhyuk-YstCHlUaN1s4zgpth6HksYgdxbGNX4O-kCPH2_ebAJesQ19_WjFWVI0Jm1W6GTjKSJ-fYMK4bIe9ZIRMiMsWt_J59zH-ihmwYd_g&pt=text&li=rbox-t2m&sig=7c168e659e05acb1c87584753f291f193e78c7394fdd&redir=https%3A%2F%2Fwww.dexcubras.com%2Fproducts%2Fcombo6premium%3Futm_source%3Dtaboola%26utm_medium%3Dreferral%26tblci%3DGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDhvlUozc3L997dld7iAQ%23tblciGiD39flgupKDuUAA01sLQ7J1ahnIVx_6-Sy2jtI94sng7iDhvlUozc3L997dld7iAQ&vi=1635618641109&p=johnlucas-reserva2-br-sc&r=31<i=deflated&ppb=CEU&cpb=EhIyMDIxMTAyOC0yLVJFTEVBU0UYzpodIAAqGXVzLnRhYm9vbGFzeW5kaWNhdGlvbi5jb20yCndhdGVyMTAxMjU4gJav7wJA29QHSPGHEFCOoeEDWObRBGMI1xYQ1R8YI2RjCNz__________wEQ3P__________ARgkZGMI0gMQ4AYYCGRjCJYUEJ8cGBhkYwjn__________8BEOf__________wEYGWRjCPQUEJ4dGB9keAGAAQKIAam6mcQB&cta=true https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/ 30/10/2021 15:47 Consumindo uma API de pokemon com Javascript https://crisgon.github.io/posts/Consumindo-uma-API-de-pokemon-com-Javascript/ 25/25 © 2018 Cristiano Gonçalves. Desenvolvido com Hexo. Inspirado no blog do Gabriel Ferreira. Cristiano Gonçalves Home Sobre Projetos Experimentos https://hexo.io/ http://gabsferreira.com/ https://crisgon.github.io/ https://crisgon.github.io/ https://crisgon.github.io/about https://crisgon.github.io/projects https://crisgon.github.io/experiments https://www.facebook.com/cris.gonn https://twitter.com/Gonkristiano https://www.linkedin.com/in/cristiano-gon%C3%A7alves-12a395105/ https://github.com/crisgon/ https://codepen.io/crisgon/