Como Consumir API com React e Axios

Aprenda de forma prática como consumir qualquer API com React e Axios com este tutorial completo.

Para consumir uma API com React e Axios, instale o Axios (npm install axios), crie um estado com useState para guardar os dados e faça a requisição dentro de um useEffect com axios.get(url). Ao receber a resposta, atualize o estado e renderize os dados na tela — o Axios simplifica as requisições HTTP e o tratamento do JSON.

Introdução

Fala, impressionador!

Você já criou sua primeira aplicação em React mas não sabe como conectar ela com uma API? Se sua resposta foi sim este guia foi feito para você.

Consumir APIs é uma das habilidades mais importantes para qualquer desenvolvedor front-end. É através dela que buscamos dados de servidores, exibimos informações de forma dinâmica e criamos aplicações interativas.

Neste artigo, você vai aprender de forma prática e direta como fazer requisições HTTP usando React e Axios. Vamos criar um projeto do zero, fazer uma requisição real para uma API e exibir os dados na tela.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Bora começar?

Entendendo a API de Teste

Para este tutorial, vamos usar a JSONPlaceholder, uma API fake perfeita para testes.

Ao acessar essa URL, ela retorna uma lista de posts em formato JSON. É exatamente isso que vamos consumir e exibir no nosso frontend.

Resposta em formato JSON exibida no navegador com uma lista de objetos contendo userId, id, title e body, representando dados de posts retornados por uma API

Criando o Projeto React

Para este projeto usaremos como editor de código o VS Code e criaremos a estrutura do projeto com o Vite por ser mais rápido e eficiente.  Para isso precisamos do Node instalado, para gerenciar os pacotes de instalação que usaremos, incluindo o próprio Vite.

O primeiro passo é criar uma pasta na área de trabalho ou em qualquer local que desejar com o nome "consumindo-api". É nela que guardaremos as dependências do projeto.

Em seguida, com o editor de código aberto, use o atalho CTRL + O e selecione a pasta. Depois, use o atalho CTRL + J para abrir o terminal integrado do VS Code e digite o comando:

Codigo
npm create vite@latest

Preencha as perguntas que forem feitas da seguinte maneira:

  • Ok to proceed: y
  • Project name: consumir-api
  • Select a framework: React
  • Select a variant: JavaScript
  • Use a rolldown-vite (Experimental): no
  • Install with npm and start now?: Yes
Terminal do VS Code exibindo a criação de um projeto React com Vite via npm, com seleção de framework React, variante JavaScript e instalação concluída com servidor de desenvolvimento iniciado

Abra o projeto no link "http://localhost:5173/" e pronto! Seu projeto React já está rodando com o template que o Vite traz por padrão.

O próximo passo é apagar informações que não vamos utilizar:

  • Pasta public;
  • Pasta de assets localizada dentro da pasta src
  • Arquivo README.md;
Explorador de arquivos do VS Code mostrando a estrutura de um projeto React com Vite, destacando as pastas public e src/assets (com react.svg), além dos arquivos App.jsx, main.jsx, README.md e configurações do projeto

Ao apagar o arquivo no projeto aberto no navegador você receberá o seguinte erro: "Failed to resolve import "./assets/react.svg" from "src/App.jsx". Does the file exist?". Isto acontece, pois o arquivo App.jsx está buscando uma imagem SVG dentro da pasta assets que apagamos.

ela de erro do Vite no navegador informando falha ao resolver o import ./assets/react.svg no arquivo src/App.jsx, indicando que o arquivo não foi encontrado ou o caminho está incorreto

Para resolver esse erro, precisamos fazer uma alteração no código do arquivo App.jsx que está localizado dentro da pasta src:

HTML
import './App.css'
function App() {
  return (
    <>
      <h1>Olá, mundo!</h1>
    </>
  )
}
export default App

Agora sim podemos começar a preparar o projeto para fazer requisições para a API.

Instalando o Axios

Para fazer as requisições usaremos a biblioteca Axios que tem inúmeras vantagens, como:

  • Menos código para escrever (menos verboso);
  • Tratamento de erros mais simples;
  • Sintaxe mais limpa e intuitiva;
  • Funcionalidades extras que facilitam o desenvolvimento.

Caso queira ver saber mais sobre o Axios e ver um comparativo com a biblioteca nativa que faz requisições (Fetch), você pode conferir o vídeo AXIOS vs FETCH: Qual a melhor forma de consumir APIs.

Como essa biblioteca não é nativa, ela precisa ser instalada, portanto, abra um novo terminal no VS Code dentro da pasta do projeto, clicando com o botão direito do mouse em cima da pasta "consumir-api" e selecione a opção Open in integrated Terminal.

Menu de contexto do VS Code aberto sobre a pasta do projeto, com a opção “Open in Integrated Terminal” destacada

Em seguida digite o comando:

Codigo
npm install axios

O próximo passo é importar a biblioteca para dentro do arquivo App.jsx com o código:

Python
import axios from "axios"
Ícone Full StackFull Stack Impressionador

Essa é uma trilha de especialização que vai te tornar um verdadeiro Desenvolvedor Web Full Stack, dominando todas as principais tecnologias usadas tanto para o Front End quanto para o Backend e ainda para Mobile, construindo projetos práticos e exercícios aplicados à realidade das empresas. Tudo o que você precisa para se tornar um Desenvolvedor Full Stack em um único lugar.

Começar agoraSeta para a direita
Fundo Full StackTelas Full Stack
Luz Full Stack

Criando a Variável de Estado

Dentro da tela App.jsx crie uma constante com um estado chamado arrayPosts para armazenar a lista de posts. Inicia com um array vazio e usa setArrayPosts para atualizar os dados, geralmente após consumir uma API. Utilize o código abaixo:

HTML
function App() {
  const [arrayPosts, setArrayPosts] = useState([])
   return (
    <div>
      <h1>Consumindo API com React</h1>
    </div>
  )
}

Lembre-se de importar o useState com o comando: import { useState } from 'react'.

No React, quando queremos que uma mudança de dado atualize a tela automaticamente, usamos variáveis de estado. O useState cria uma variável (arrayPosts) e uma função para modificá-la (setArrayPosts).

Fazendo a Requisição com Axios

Agora vem a parte mais importante: criar a função que vai buscar os dados da API.

Codigo
const requisicaoAPI = async () => {
  const respostaAPI = await axios.get('https://jsonplaceholder.typicode.com/posts')
  setArrayPosts(respostaAPI.data)
}

No código acima:

  1. async/await: Como a requisição demora um pouco, usamos JavaScript assíncrono para "esperar" a resposta chegar;
  2. axios.get(): Faz uma requisição do tipo GET para a URL;
  3. respostaAPI.data: O Axios retorna os dados dentro de uma propriedade chamada data;
  4. setArrayPosts(): Atualiza nossa variável de estado com os dados recebidos.

Usando o useEffect

Para garantir que a requisição seja feita apenas uma vez , quando o componente for montado, vamos utilizar o hook do React useEffect. Sem ele, toda vez que uma variável de estado mudar, a requisição seria feita de novo, o que não é ideal.

Codigo
useEffect(() => {
  requisicaoAPI()
}, [])

No código acima:

  1. A função requisicaoAPI() é chamada uma única vez, logo após o componente ser montado;
  2. O array de dependências vazio ([]) indica que o efeito não será executado novamente em re-renderizações.

Lembre-se de importar o useEffect com o código import { useEffect, useState } from 'react'. Você pode colocar o mouse no final do hook e usar o atalho CTRL + techa SPACE para obter sugestões de importação.

Exibindo os Dados na Tela

Agora que temos os dados, vamos exibi-los usando o método map():

HTML
<ul>
        {arrayPosts.map((post) => (
          <li key={post.id}>
            {post.title}
          </li>
        ))}
      </ul>

No código acima, o map() percorre cada item do array e cria um elemento para cada um. Ou seja:

  • Para cada post no arrayPosts;
  • Cria um <li> com o título do post;
  • A propriedade key é obrigatória para o React identificar cada item.

Caso queira saber mais sobre a função map()você pode consultar o vídeo Tudo que você precisa saber de JavaScript antes de aprender React.

Código Completo

Após relaizar todos os passos anteriores, o arquivo App.jsx deve ficar assim:

HTML
import './App.css'
import axios from 'axios'
import { useEffect, useState } from 'react'

function App() {
  const [arrayPosts, setArrayPosts] = useState([])

  const requisicaoAPI = async () => {
    const respostaAPI = await axios.get('https://jsonplaceholder.typicode.com/posts')
    setArrayPosts(respostaAPI.data)
  }

  useEffect(() => {
    requisicaoAPI()
  }, [])


  return (
    <>
      <h1>Consumindo API com React</h1>
      <ul>
        {arrayPosts.map((post) => (
          <li key={post.id}>
            {post.title}
          </li>
        ))}
      </ul>
    </>
  )
}

export default App

Conclusão

Consumir APIs com React e Axios é uma habilidade essencial para qualquer desenvolvedor frontend.

A prática leva à perfeição! Teste com outras APIs, experimente exibir diferentes informações e não tenha medo de errar.

Quer se aprofundar ainda mais? Temos um mini curso gratuito de HTML  e CSS e o curso completo de FullStack.

Além disso, caso prefira esse conteúdo no formato de vídeo-aula, pode acessar o vídeo no nosso canal do Youtube.

Hashtag Treinamentos

Para acessar publicações de Full Stack, clique aqui!


Quer aprender mais sobre JavaScript com um minicurso básico gratuito?








Posts mais recentes de Full Stack

Posts mais recentes da Hashtag Treinamentos

1. O que é o Axios?

É uma biblioteca JavaScript para fazer requisições HTTP de forma simples, tanto no navegador quanto no Node.js. Ela facilita consumir APIs, tratando automaticamente o JSON e oferecendo recursos como interceptadores e timeout.

2. Como instalar o Axios em um projeto React?

No terminal, dentro da pasta do projeto, rode npm install axios (ou yarn add axios). Depois, importe com import axios from 'axios' no componente onde fará as requisições.

3. Qual a diferença entre Axios e Fetch?

Ambos fazem requisições HTTP. O Fetch é nativo do navegador; o Axios é uma biblioteca que já converte o JSON automaticamente, trata erros com mais clareza e oferece recursos extras como interceptadores e cancelamento.

4. Como consumir uma API ao carregar o componente React?

Coloque a chamada do Axios dentro de um useEffect com array de dependências vazio, para rodar uma vez na montagem. Guarde a resposta em um estado com useState e renderize os dados quando eles chegarem.