Emanuelly Leoncio. Fala, dev! Tudo certo? Para quem desenvolve aplicações, pode ocorrer a necessidade de consumir uma API externa. Neste artigo, iremos criar uma página em React que irá consumir a API chamada HP-API, a qual traz diversas informações dos personagens do filme Harry Potter, suas casas e feitiços.
Nosso projeto irá conter cards com o nome e foto de alguns alunos de Hogwarts. Também iremos implementar um modal, que irá exibir mais dados do aluno selecionado, como ano de nascimento, casa e patrono. Para conectar nosso projeto com a API, usaremos a biblioteca axios.
Nosso resultado final será o seguinte:
Mãos à obra!
Configurações iniciais do projeto
Vamos iniciar o projeto. Crie uma pasta onde ele será armazenado. Aqui iremos nomear como react-api. Em seu terminal, rode o seguinte código:
npx create-react-app react-api
Em seguida:
cd react-api
npm start
Uma nova janela irá se abrir em seu navegador, como mostrado na figura abaixo.
Agora iremos fazer a organização das nossas pastas e arquivos. Neste ponto, você deve estar com a seguinte estrutura de pastas:
Podemos deletar os seguintes arquivos:
Na pasta public:
logo192.png e logo512.png;
manifest.json;
robots.txt.
Na pasta src iremos apagar todos exceto o index.js e o App.css;
Mais alguns ajustes precisam ser feitos:
Na pasta public, em index.html: retire os comentários e referências das imagens que apagamos. Você também pode adicionar um título na tag <title>. Aqui, colocamos Hogwarts.
Com isso, não teremos mais nenhum erro no terminal:
Suas pastas e arquivos estão com esta estrutura agora:
E sua página estará com esta cara inicial:
Ajustando a Main
Iniciamos o ajuste da página Main adicionando as fontes do nosso projeto. Aqui usaremos Montserrat e MedievalSharp. Você pode escolher essas ou outras fontes utilizando o Google Fonts. O link da formatação foi adicionado em index.html.
Agora, vamos adicionar algumas informações para visualizar melhor a estilização. Em index.js, colocaremos o título principal da nossa página, e um container de informações.
Crie uma pasta chamada assets dentro de src. Nela iremos adicionar as imagens do brasão de cada uma das quatro casas de Hogwarts e também um ícone “X” para fechar o modal que vamos construir. Você pode encontrar imagens como essas facilmente na web. Escolha os de sua preferência e salve na pasta.
A estrutura das pasta ficou assim:
Configurando o axios
Para adicionar a biblioteca axios, rode no terminal de seu projeto:
npm install axios
Dentro de src, crie uma pasta chamada services, e dentro dela, adicione um arquivo chamado api.js. Neste novo arquivo, coloque o seguinte trecho de configuração da api.
Para deixar o projeto mais organizado, vamos construir dois componentes: o Person, por onde será passado as informações de cada aluno da escola Hogwarts vindos da API; e o Modal.
Crie uma pasta chamada components, e dentro dela mais duas pastas: Person e Modal. Dentro de cada uma, adicione um arquivo index.js e um style.css. Ficará assim:
Componente Person
Vamos construir o componente Person, que irá receber informações do arquivo Main por meio da prop item.
No arquivo Main, vamos trabalhar com dois hooks: useState e useEffect. O useState irá criar e gerenciar o estado das informações vindas da API que queremos manipular, que serão os estudantes e suas casas, e também a ação de abrir/fechar modal e populá-lo com dados do estudante selecionado. Já o useEffect será responsável por executar a função async/await assim que o componente for renderizado.
Será na Main que iremos adicionar nossa função async/await, que irá resgatar as informações da API. Utilizaremos a rota "/api/characters/students", a qual retornará um array de objetos. Cada objeto contém dados diversos de um aluno, e iremos popular nosso modal com as chaves name,house, dateOfBirthday e patronus.
Abaixo segue imagem do objeto obtido da API e as chaves destacadas que serão utilizadas.
Para darmos seguimento no consumo da api externa, inclua o código abaixo no arquivo Main:
Observe que os cards dos estudantes ficaram centralizados, porém estão formando uma coluna única. Para ajustar isso e deixá-los enfileirados na horizontal, precisamos ajustar nosso css do arquivo Main:
Dentro da pasta services, crie um arquivo chamado data.js. Nele, vamos adicionar um array de objetos contendo id, nome da casa e sua respectiva imagem (anteriormente adicionada na pasta assets), os quais iremos utilizar em nosso Modal.
Observe que já adicionamos nosso componente Modal, e passamos como props o showModal, handleClose, currentPerson e houseImage, para serem manipulados no componente.
Por fim, vamos adicionar os códigos finais para nosso componente Modal.
Neste tutorial, vimos como consumir uma API externa em um projeto React, utilizando a biblioteca axios. Diversas API’s públicas podem ser encontradas na web, com as mais diferentes temáticas. Segue aqui um repositório do GitHub com uma listagem bem diversificada. Agora é só colocar a criatividade em prática!
💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.