Axios: o que é, requisições HTTP e fundamentos do trabalho com API

Autor: IT Sectr Publicado: 2026-03-07 Tempo de leitura: 8 min

Axios é um cliente HTTP de código aberto para JavaScript e TypeScript, que funciona tanto no navegador quanto no ambiente Node.js. A biblioteca fornece uma interface conveniente baseada em Promises para enviar requisições HTTP com suporte a interceptadores, serialização automática JSON e cancelamento de requisições. De acordo com o repositório oficial no GitHub, o projeto tem mais de 100 mil estrelas. Axios é uma das bibliotecas mais populares para trabalhar com REST API no ecossistema JavaScript.

Principais pontos

  • Axios — cliente HTTP baseado em Promise API para navegador e Node.js com suporte TypeScript
  • Interceptadores — permitem modificar requisições e respostas antes do processamento no código
  • Transformação automática — a biblioteca analisa JSON automaticamente nas respostas e serializa dados nas requisições
  • Cancelamento de requisições — mecanismo embutido AbortController para cancelar requisições travadas ou desnecessárias
  • Upload de arquivos — suporte a progresso de upload via onUploadProgress e onDownloadProgress

O que é Axios?

Axios é uma biblioteca JavaScript projetada para fazer requisições HTTP a partir do navegador e do ambiente Node.js. Ela é construída sobre XMLHttpRequest no navegador e o módulo http no Node.js, fornecendo uma API unificada para ambas as plataformas.

A principal vantagem do Axios sobre o fetch nativo é o tratamento automático de JSON, suporte a interceptadores e tratamento de erros mais conveniente. Ao contrário do fetch, o Axios não requer duas chamadas .then para obter o corpo JSON da resposta e lança exceções automaticamente em erros HTTP (4xx, 5xx).

A biblioteca suporta todos os principais métodos HTTP: GET, POST, PUT, DELETE, PATCH e HEAD. Pode ser usada tanto em projetos simples quanto em grandes aplicações empresariais com centenas de milhares de requisições diárias.

Características principais do Axios

  • Promise API — todas as operações retornam uma Promise, simplificando o código assíncrono
  • Suporte TypeScript — tipagem completa para todos os métodos e configurações
  • Interceptadores — middleware para processar requisições e respostas
  • Transformação — transformação automática de dados na entrada e saída

Arquitetura do Axios e princípio de funcionamento

A arquitetura do Axios é baseada no conceito de adaptadores. A biblioteca abstrai a camada de transporte: usa XMLHttpRequest no navegador e o módulo http ou https no Node.js. Isso fornece uma interface única independentemente do ambiente de execução.

Cada requisição passa por uma cadeia de interceptadores que podem modificar a configuração da requisição ou resposta. Após os interceptadores, a requisição é passada para o adaptador, que realiza a chamada HTTP real. A resposta então passa pelos interceptadores de resposta antes de chegar ao código da aplicação.

Ciclo de vida de uma requisição Axios

  1. Criação de configuração — método, URL, cabeçalhos, corpo da requisição
  2. Interceptador de requisição — modificação da configuração, adição de tokens
  3. Chamada HTTP — execução através do adaptador do navegador ou Node.js
  4. Interceptador de resposta — transformação da resposta, tratamento de erros
  5. Retorno do resultado — Promise é resolvida com dados ou rejeitada

Principais recursos do Axios

Axios inclui muitos recursos embutidos que o tornam uma escolha conveniente para trabalhar com HTTP em aplicativos móveis e web. Vamos explorar os principais.

Transformação automática de dados

Ao enviar uma requisição, o Axios transforma automaticamente um objeto JavaScript em uma string JSON usando JSON.stringify. Ao receber uma resposta, a biblioteca converte JSON de volta em um objeto. Isso poupa o desenvolvedor da serialização e desserialização manual de dados.

Proteção CSRF

No ambiente do navegador, o Axios adiciona automaticamente os cabeçalhos XSRF-TOKEN dos cookies, protegendo a aplicação contra falsificação de requisição entre sites. Para isso, basta configurar o servidor para enviar o token em um cookie chamado XSRF-TOKEN.

Timeouts e cancelamento de requisições

A biblioteca suporta definir um timeout através do parâmetro timeout e cancelamento de requisição via AbortController. Isso é especialmente importante em aplicativos móveis com conexões instáveis, onde requisições travadas consomem bateria e dados.

Instalação e configuração do Axios

A instalação do Axios é feita através de qualquer gerenciador de pacotes. A biblioteca está disponível no registro npm e pode ser usada tanto em projetos Node.js quanto em projetos de navegador. Para TypeScript, os tipos estão incluídos no pacote principal — dependências adicionais não são necessárias.

Após a instalação, você pode criar uma instância com uma configuração básica: URL base, timeout padrão, cabeçalhos comuns. Isso evita repetir os mesmos parâmetros em cada requisição e gerencia as configurações do cliente HTTP de forma centralizada.

bash
# Instalar via npm
npm install axios

# Instalar via yarn
yarn add axios

# Instalar via pnpm
pnpm add axios

Criando uma instância com configuração

É recomendado criar uma instância separada de Axios para cada serviço API. Isso permite definir uma URL base, cabeçalhos padrão e timeout que serão aplicados a todas as requisições desta instância sem repeti-los em cada chamada.

typescript
import axios from 'axios';

const api = axios.create({
  baseURL: 'https://api.example.com/v1',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});

Exemplos de código com Axios

Os exemplos de requisições mostram os principais padrões de uso do Axios. Todos os exemplos usam a sintaxe async/await, que torna o código assíncrono mais legível em comparação com cadeias de .then().

Requisição GET com parâmetros

Para obter dados do servidor, utiliza-se o método axios.get. Os parâmetros da requisição são passados através do objeto params, que é automaticamente transformado em uma query string. A resposta contém os dados no campo data, o status em status e os cabeçalhos em headers.

typescript
interface User {
  id: number;
  name: string;
  email: string;
}

async function getUsers() {
  try {
    const response = await api.get<User[]>('/users', {
      params: { page: 1, limit: 10 }
    });
    return response.data;
  } catch (error) {
    console.error('Erro ao carregar usuários', error);
    throw error;
  }
}

Requisição POST com corpo

Para enviar dados ao servidor, utiliza-se axios.post. O segundo argumento é um objeto com dados, que o Axios serializa automaticamente para JSON. O Content-Type é definido como application/json por padrão.

typescript
interface CreateUserDto {
  name: string;
  email: string;
  role: string;
}

async function createUser(data: CreateUserDto) {
  const response = await api.post<User>('/users', data);
  return response.data;
}

Interceptadores

Os interceptadores são funções middleware que executam para cada requisição ou resposta. Eles permitem adicionar tokens de autorização, registrar requisições e tratar erros centralizadamente. Um interceptador de requisição adiciona o cabeçalho Authorization com um token obtido do armazenamento.

typescript
// Interceptador de requisição — adiciona token de autorização
api.interceptors.request.use(
  (config) => {
    const token = getToken();
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => Promise.reject(error)
);

// Interceptador de resposta — lida com erros 401
api.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response?.status === 401) {
      redirectToLogin();
    }
    return Promise.reject(error);
  }
);

Tratamento de erros no Axios

O tratamento de erros no Axios é baseado no mecanismo de exceções. Ao contrário do fetch, o Axios captura automaticamente erros HTTP (4xx, 5xx) e os passa para o bloco catch. O objeto de erro contém informações sobre a resposta do servidor, a requisição e o contexto de execução.

É importante distinguir três tipos de erros: erro de resposta do servidor (response), erro de requisição (request) e erro de configuração (config). O primeiro ocorre quando a chamada HTTP é executada com sucesso mas retorna um código de erro, o segundo quando não há resposta do servidor, e o terceiro quando a configuração da requisição está incorreta.

typescript
import axios, { AxiosError } from 'axios';

async function safeRequest() {
  try {
    return await api.get('/data');
  } catch (error) {
    if (error instanceof AxiosError) {
      if (error.response) {
        console.warn('Erro de resposta', error.response.status);
      } else if (error.request) {
        console.warn('Sem resposta do servidor');
      } else {
        console.warn('Erro de configuração');
      }
    }
  }
}
Método HTTP Método Axios Descrição
GET axios.get(url, config) Obter dados
POST axios.post(url, data, config) Criar recurso
PUT axios.put(url, data, config) Atualizar recurso
DELETE axios.delete(url, config) Excluir recurso
PATCH axios.patch(url, data, config) Atualização parcial

Comparação do Axios com Fetch API

A comparação do Axios com a Fetch API nativa ajuda a entender quando cada tecnologia é adequada. Fetch é uma API embutida no navegador que não requer instalação. Axios é uma biblioteca de terceiros com recursos adicionais. Para requisições simples, fetch é suficiente; para aplicações complexas com interceptadores e tratamento centralizado de erros, Axios é mais conveniente.

Fetch não considera erros HTTP (4xx, 5xx) como exceções — é preciso verificar response.ok. Fetch requer duas chamadas .then() para obter JSON: response.json() então retorna uma Promise com os dados. Axios faz isso automaticamente. Fetch não suporta progresso de upload de arquivos sem polyfills adicionais. Axios tem onUploadProgress e onDownloadProgress embutidos.

No Node.js, Fetch está disponível desde a versão 18 como um recurso experimental, enquanto Axios funciona de forma estável desde o Node.js 10. Para projetos que suportam versões antigas do Node.js, a escolha é claramente a favor do Axios. Para projetos modernos de navegador sem processamento complexo de requisições, fetch pode ser suficiente.

Perguntas frequentes

Como o Axios difere do fetch?

Axios analisa JSON automaticamente, lança exceções em erros HTTP e suporta interceptadores. Fetch requer duas chamadas .then para JSON e não trata 4xx/5xx como erros. Axios também é mais fácil de configurar através de um objeto de configuração.

É necessário instalar o Axios para TypeScript separadamente?

Não, os tipos TypeScript estão incluídos no pacote principal axios. Dependências adicionais como @types/axios não são necessárias — basta importar axios do pacote de mesmo nome.

Como cancelar uma requisição no Axios?

Use AbortController: crie uma instância de AbortController e passe seu signal para a configuração da requisição. Ao chamar controller.abort(), a requisição será cancelada e a Promise será rejeitada com uma mensagem de erro apropriada.

O Axios funciona com React Native?

Sim, o Axios é totalmente compatível com React Native. A biblioteca usa o XMLHttpRequest embutido, que está disponível no ambiente React Native. Todos os recursos, incluindo interceptadores e cancelamento de requisições, funcionam sem configuração adicional.

Como adicionar cabeçalhos de autorização a todas as requisições?

Use um interceptador de requisição para adicionar centralizadamente o cabeçalho Authorization. Isso elimina a necessidade de especificar o token em cada requisição individualmente e permite lidar uniformemente com a expiração do token.

Resumo

  • Axios é um cliente HTTP para JavaScript e TypeScript com Promise API e suporte para navegador e Node.js
  • Os interceptadores permitem modificar requisições centralizadamente, tratar erros e adicionar autorização
  • A transformação automática JSON simplifica o trabalho com REST API sem serialização manual
  • O cancelamento de requisições via AbortController previne vazamentos de memória em aplicativos móveis e web
  • A configuração de instância permite definir parâmetros base para todas as requisições à API
  • O suporte TypeScript está embutido no pacote — tipos adicionais não são necessários
  • Axios continua sendo o padrão de fato para clientes HTTP no ecossistema JavaScript

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também