Do not speak Portuguese? Translate this site with Google or Bing Translator
Axios vs Fetch

Posted on: July 08, 2024 11:21 PM

Posted by: Renato

Categories: Axios Fetch

Views: 123

Imagem de capa para Axios vs Fetch

Axios vs Fetch

Introdução

No desenvolvimento web moderno, fazer solicitações HTTP é uma tarefa fundamental. Não importa se você está buscando dados de um servidor, enviando formulários ou interagindo com APIs, você precisa de ferramentas confiáveis ​​para lidar com essas operações. Enquanto o JavaScript fornece uma API de busca integrada para fazer solicitações HTTP, muitos desenvolvedores optam por bibliotecas de terceiros como Axios para funcionalidade e conveniência adicionais.

Por que precisamos de ferramentas de solicitação HTTP?

Lidar com solicitações e respostas HTTP pode ser complexo, especialmente quando se considera o tratamento de erros, análise de resposta e configuração de solicitação. Ferramentas como Axios e Fetch simplificam essas tarefas fornecendo abstrações e utilitários que agilizam o processo. Elas ajudam a resolver problemas comuns, como:

Boilerplate Code: Simplificando tarefas repetitivas como definir cabeçalhos e manipular respostas JSON.
Error Handling: Fornecendo mecanismos de manipulação de erros mais consistentes e gerenciáveis.
Interceptors: Permitindo pré-processamento de solicitações ou respostas, como adicionar tokens de autenticação.

Fetch API

A Fetch API é um método JavaScript moderno e integrado para fazer solicitações HTTP. Ela é baseada em promessas, fornecendo uma maneira mais direta de trabalhar com operações assíncronas em comparação a métodos mais antigos, como XMLHttpRequest.

Exemplo

// Making a GET request using Fetch
fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('There was a problem with the fetch operation:', error));

Enter fullscreen mode Exit fullscreen mode

Axios

Axios é uma biblioteca popular de terceiros para fazer solicitações HTTP. Ela é baseada em promessas como Fetch, mas inclui muitos recursos adicionais que a tornam mais conveniente e poderosa.

Exemplo

// Making a GET request using Axios
axios.get('https://api.example.com/data')
  .then(response => console.log(response.data))
  .catch(error => console.error('There was a problem with the axios request:', error));

Enter fullscreen mode Exit fullscreen mode

Principais diferenças

1. Tratamento padrão de JSON

- Fetch:
requer conversão manual de dados de resposta para JSON.

fetch('https://api.example.com/data')
  .then(response => response.json()) // Manual conversion
  .then(data => console.log(data));

Enter fullscreen mode Exit fullscreen mode

- Axios:
analisa automaticamente respostas JSON.

axios.get('https://api.example.com/data')
  .then(response => console.log(response.data)); // Automatic conversion

Enter fullscreen mode Exit fullscreen mode

2. Tratamento de erros

- Fetch:
rejeita uma promessa somente para erros de rede, não para erros de HTTP (por exemplo, códigos de status 404 ou 500).

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .catch(error => console.error('Fetch error:', error));

Enter fullscreen mode Exit fullscreen mode

- Axios:
rejeita uma promessa para erros de rede e erros de HTTP.

axios.get('https://api.example.com/data')
  .catch(error => console.error('Axios error:', error));

Enter fullscreen mode Exit fullscreen mode

3. Solicitar configuração

- Fetch:
requer configuração manual de opções como cabeçalhos e métodos

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ key: 'value' })
});

Enter fullscreen mode Exit fullscreen mode

- Axios:
Fornece uma sintaxe mais concisa e legível para configuração.

axios.post('https://api.example.com/data', { key: 'value' }, {
  headers: {
    'Content-Type': 'application/json'
  }
});

Enter fullscreen mode Exit fullscreen mode

Interceptadores

Interceptors são um recurso poderoso no Axios que permite interceptar solicitações ou respostas antes que elas sejam manipuladas por eles ou capturadas. Eles são úteis para tarefas como adicionar tokens de autenticação a cada solicitação ou manipular erros globalmente.

Exemplo de interceptadores Axios

// Adding a request interceptor
axios.interceptors.request.use(config => {
  // Add an authorization header to every request
  const token = 'your_token';
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
}, error => {
  // Handle request error
  return Promise.reject(error);
});

// Adding a response interceptor
axios.interceptors.response.use(response => {
  // Handle successful response
  return response;
}, error => {
  // Handle response error
  if (error.response.status === 401) {
    // Handle unauthorized error
    console.error('Unauthorized');
  }
  return Promise.reject(error);
});

Enter fullscreen mode Exit fullscreen mode

Conclusão

Tanto o Fetch quanto o Axios são ferramentas capazes de fazer solicitações HTTP, mas oferecem diferentes níveis de conveniência e funcionalidade. O Fetch é uma opção nativa e moderna que funciona bem para casos de uso simples, enquanto o Axios fornece um conjunto de recursos mais rico, incluindo tratamento automático de JSON, melhor gerenciamento de erros e interceptores para manipulação de solicitações e respostas. A escolha entre eles depende das necessidades específicas do seu projeto e da sua preferência por simplicidade versus funcionalidade.

Ao entender os pontos fortes e as diferenças de cada ferramenta, você pode tomar decisões mais informadas e escrever um código mais eficiente e sustentável.

Fonte: - https://dev.to/wafa_bergaoui/axios-vs-fetch-543c

1

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email