Axios vs. Fetch: HTTP İstekleri için Hangisi En İyisi?

JavaScript'te HTTP istekleri için Axios ve fetch() popüler. Bu yazıda, bu iki yöntemi karşılaştırıp farklı senaryolar için hangisinin daha iyi olduğunu göreceğiz.

Efe Demir

Efe Demir

5 June 2025

Axios vs. Fetch: HTTP İstekleri için Hangisi En İyisi?

```html

HTTP istekleri, web uygulamalarında sunucular ve API'lerle iletişim kurmak için gereklidir. JavaScript'te HTTP istekleri yapmanın birçok yolu vardır, ancak en popülerlerinden ikisi Axios ve fetch() 'dir. Bu yazıda, Axios ve Fetch()'i karşılaştırıp farklı senaryolar için hangisinin en iyi olduğunu göreceğiz.

button

Axios Nedir?

Axios, HTTP istekleri yapmak için promise tabanlı bir HTTP istemcisi sağlayan üçüncü taraf bir kütüphanedir. Axios, JavaScript topluluğunda yaygın olarak kullanılır ve basitliği ve esnekliği ile bilinir

Axios'un Temel Sözdizimi

Axios kütüphanesinin temel sözdizimi aşağıdaki gibidir:

axios(config)
  .then(response => console.log(response.data))
  .catch(error => console.error('Error:', error));

Temel özellikler:

  1. Hem URL'yi hem de yapılandırmayı bir parametre olarak veya ayrı URL ve yapılandırma nesnesi olarak kabul edebilir.
  2. Sunucuya veri göndermek için data özelliğini kullanır ve JSON dönüşümünü otomatik olarak işler.
  3. Sunucu verilerini doğrudan yanıt nesnesinin data özelliğinde döndürür.
  4. HTTP hata durum kodlarını otomatik olarak işler ve bunları catch bloğuna geçirir.
  5. Daha düzenli bir hata işleme mekanizması sağlar.

Örnek:

axios({
  method: 'post',
  url: 'https://api.example.com/data',
  data: {
    key: 'value'
  }
})
  .then(response => console.log(response.data))
  .catch(error => {
    if (error.response) {
      console.error('Server responded with:', error.response.status);
    } else if (error.request) {
      console.error('No response received');
    } else {
      console.error('Error:', error.message);
    }
  });

Neden Axios Kullanmalısınız?

Şu gibi kullanımı kolay ve kullanışlı hale getiren birçok özelliği vardır:

Fetch() Nedir?

fetch(), yerel JavaScript ile birlikte gelen yerleşik bir API'dir. Promise'lar biçiminde veri döndüren eşzamansız bir web API'sidir. fetch(), tüm modern tarayıcılar tarafından desteklenir, bu nedenle kullanmak için herhangi bir harici kütüphane içe aktarmanıza gerek yoktur. fetch() 'in bazı özellikleri şunlardır:

HTTP İstekleri Yapmak İçin Axios Nasıl Kullanılır?

Axios'u kullanmak için, npm veya yarn kullanarak yüklemeniz gerekir:

npm install axios

Ve işte Axios'u yarn kullanarak nasıl yükleyeceğiniz:

yarn add axios

Pnpm kullanmayı tercih ediyorsanız, Axios'u aşağıdaki komutu kullanarak yükleyebilirsiniz:

pnpm install axios

Alternatif olarak, projenize Axios'u dahil etmek için bir içerik dağıtım ağı (CDN) kullanabilirsiniz. İşte bir CDN kullanarak Axios'u nasıl dahil edeceğiniz:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

Ardından, JavaScript dosyanıza içe aktarabilir ve HTTP istekleri yapmak için kullanabilirsiniz. Örneğin, bir URL'ye GET isteği yapmak için axios.get() kullanabilirsiniz:

import axios from 'axios';

axios.get('https://example.com/api')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

Fetch ile HTTP İstekleri Yapma

fetch() kullanmak için, tarayıcıda zaten mevcut olduğu için hiçbir şey yüklemenize gerek yoktur. HTTP istekleri yapmak için fetch() işlevini kullanabilirsiniz. Örneğin, bir URL'ye GET isteği yapmak için fetch() 'i şu şekilde kullanabilirsiniz:

fetch('https://example.com/api')
  .then(response => {
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

Şunu unutmayın:

Fetch'in Temel Sözdizimi

Elbette. İsteğiniz üzerine, içeriği iki ayrı parça halinde İngilizce olarak sağlayacağım.

Fetch API'sinin temel sözdizimi aşağıdaki gibidir:

fetch(url, options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

Temel özellikler:

  1. İlk argüman olarak URL, ikinci argüman olarak isteğe bağlı yapılandırma nesnesi.
  2. Sunucuya veri göndermek için body özelliğini kullanır ve verilerin dizeye manuel olarak dönüştürülmesini gerektirir.
  3. Tam yanıt bilgilerini içeren bir Response nesnesi döndürür.
  4. Yalnızca ağ hatalarında catch bloğuna girer, HTTP hata durum kodlarında girmez.
  5. HTTP hatalarını işlemek için yanıt durum kodlarının manuel olarak kontrol edilmesini gerektirir.

Örnek:

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ key: 'value' })
})
  .then(response => {
    if (!response.ok) {
      throw new Error('HTTP error ' + response.status);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

Axios vs Fetch: Sorgu Parametreleri ile GET İsteği Gönderme:

// Axios
axios.get('/api/data', {
  params: {
    name: 'Alice',
    age: 25
  }
})
.then(response => {
  // handle response
})
.catch(error => {
  // handle error
});

// Fetch
const url = new URL('/api/data');
url.searchParams.append('name', 'Alice');
url.searchParams.append('age', 25);

fetch(url)
.then(response => response.json())
.then(data => {
  // handle data
})
.catch(error => {
  // handle error
});

Axios vs Fetch: JSON Gövdesi ile POST İsteği Gönderme:

// Axios
axios.post('/api/data', {
  name: 'Bob',
  age: 30
})
.then(response => {
  // handle response
})
.catch(error => {
  // handle error
});

// Fetch
fetch('/api/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Bob',
    age: 30
  })
})
.then(response => response.json())
.then(data => {
  // handle data
})
.catch(error => {
  // handle error
});

Axios vs Fetch: İstek İçin Zaman Aşımı Ayarlama:

// Axios
axios.get('/api/data', {
  timeout: 5000 // 5 seconds
})
.then(response => {
  // handle response
})
.catch(error => {
  // handle error
});

// Fetch
const controller = new AbortController();
const signal = controller.signal;

setTimeout(() => {
  controller.abort(); // abort after 5 seconds
}, 5000);

fetch('/api/data', { signal })
.then(response => response.json())
.then(data => {
  // handle data
})
.catch(error => {
  // handle error
});

Axios vs Fetch: async/await sözdizimini kullanma:

// Axios
async function getData() {
  try {
    const response = await axios.get('/api/data');
    // handle response
  } catch (error) {
    // handle error
  }
}

// Fetch
async function getData() {
  try {
    const response = await fetch('/api/data');
    const data = await response.json();
    // handle data
  } catch (error) {
    // handle error
  }
}

Axios vs Fetch: Geriye Dönük Uyumluluk

Geriye dönük uyumluluk, daha yeni bir sistemin veya uygulamanın, yükseltme sırasında kesintileri veya arızaları önleyerek sorunsuz bir geçiş sağlayarak eski sürümlerle çalışma yeteneğini ifade eder. Yazılım geliştirme, web geliştirme ve teknoloji ekosistemlerinde istikrarı, uyumluluğu ve tutarlı sürümleri ve platformları korumak için çok önemlidir.

Axios:

Fetch:

Axios vs Fetch: Hata İşleme

Hata işleme, ağ hataları, sunucu hataları veya geçersiz yanıtlar gibi farklı senaryoları işlemenize olanak tanıdığı için HTTP istekleri yapmanın önemli bir yönüdür. Fetch ve Axios'un hataları işlemenin farklı yolları vardır, bunları bazı örneklerle karşılaştıracağım.

Axios:

Axios'ta, bir istek hatası varsa, bir hata atar ve hatayı bir try-catch bloğuyla kolayca işleyebilir ve hata verilerini error.response.data'dan alabilirsiniz. Örneğin:

// Axios hata işleme with try-catch
try {
  const response = await axios.get('/api/data');
  // handle response
} catch (error) {
  // handle error
  console.log(error.response.data);
}

Fetch:

Fetch'te, bir istek hatası varsa, bir hata atmaz, ancak ok özelliği false olarak ayarlanmış bir yanıt nesnesi döndürür. Bir try-catch bloğu kullanmak istiyorsanız, ok özelliğini kontrol etmeniz ve manuel olarak bir hata atmanız gerekir.

Alternatif olarak, then yönteminde farklı durumları işlemek için response.ok özelliğini kullanabilirsiniz. Örneğin:

// Fetch hata işleme with try-catch
try {
  const response = await fetch('/api/data');
  // check response status
  if (!response.ok) {
    // throw error if status is not ok
    throw new Error(`HTTP error! status: ${response.status}`);
  }
  // handle response
} catch (error) {
  // handle error
  console.log(error.message);
}

// Fetch hata işleme with response.ok
fetch('/api/data')
  .then(response => {
    // check response status
    if (response.ok) {
      // handle response
    } else {
      // handle error
      console.log(`HTTP error! status: ${response.status}`);
    }
  })
  .catch(error => {
    // handle network error
    console.log(error.message);
  });

Fetch ve Axios arasındaki bir diğer fark, 200 olmayan durum kodlarını nasıl işledikleridir. Axios, 2xx aralığının dışındaki herhangi bir durum kodunu bir hata olarak kabul eder ve promise'ı reddeder. Fetch, herhangi bir geçerli HTTP yanıtını (4xx veya 5xx bile) bir başarı olarak kabul eder ve promise'ı çözer.

Bu, Fetch ve Axios'ta 200 olmayan durum kodlarını farklı şekilde işlemeniz gerektiği anlamına gelir. Örneğin:

// Axios hata işleme for non-200 status codes
axios.get('/api/data')
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
    if (error.response) {
      // server responded with a status code outside 2xx
      console.log(error.response.status);
      console.log(error.response.data);
    } else {
      // network error or request was aborted
      console.log(error.message);
    }
  });

// Fetch hata işleme for non-200 status codes
fetch('/api/data')
  .then(response => {
    // check response status
    if (response.ok) {
      // handle response
    } else {
      // server responded with a status code outside 2xx
      console.log(response.status);
      return response.json();
    }
  })
  .then(data => {
    // handle error data
    console.log(data);
  })
  .catch(error => {
    // handle network error or request was aborted
    console.log(error.message);
  });

Axios vs Fetch: HTTP İstekleri Yapmak İçin Hangisi En İyisi?

Hangisinin daha iyi olduğuna dair kesin bir cevap yoktur, bu, tercihlerinize ve ihtiyaçlarınıza bağlıdır. Ancak, karar vermenize yardımcı olacak bazı genel yönergeler şunlardır:

Apidog ile Axios/Fetch Kodu Oluşturun

Apidog, API'leri tasarlamak, hata ayıklamak, test etmek, yayınlamak ve taklit etmek için kapsamlı bir araç takımı sağlayan hepsi bir arada işbirliğine dayalı bir API geliştirme platformudur. Apidog, HTTP istekleri yapmak için otomatik olarak Axios kodu oluşturmanıza olanak tanır.

button

Axios kodu oluşturmak için Apidog'u kullanma süreci şöyledir:

Adım 1: Apidog'u açın ve yeni istek seçin

Create New Request

Adım 2: Bir istek göndermek istediğiniz API uç noktasının URL'sini girin, isteğe dahil etmek istediğiniz başlıkları veya sorgu dizesi parametrelerini girin, ardından Apidog'un tasarım arayüzüne geçmek için "Tasarım"a tıklayın.

Adım 3: Kodunuzu oluşturmak için "İstemci kodu oluştur"u seçin.

Generate client code

Adım 4: Oluşturulan Axios kodunu kopyalayıp projenize yapıştırın.

Axios code

HTTP İstekleri Göndermek İçin Apidog Kullanma

Apidog, HTTP isteklerini test etme yeteneğini daha da geliştiren çeşitli gelişmiş özellikler sunar. Bu özellikler, isteklerinizi özelleştirmenize ve daha karmaşık senaryoları zahmetsizce işlemenize olanak tanır.

button

Adım 1: Apidog'u açın ve yeni bir istek oluşturun.

Apidog

Adım 2: Yapmak istediğiniz POST isteği için API ayrıntılarını bulun veya manuel olarak girin.

POST request

Adım 3: Gerekli parametreleri ve istek gövdesine dahil etmek istediğiniz verileri doldurun.

Apidog POST parameters and Response

Sonuç

Hem Axios hem de fetch(), JavaScript'te HTTP istekleri yapmak için güçlü ve güvenilir yöntemlerdir. Projenize ve tarzınıza daha uygun olanı seçebilir veya farklı amaçlar için her ikisini de kullanabilirsiniz. Önemli olan, nasıl çalıştıklarını ve bunları nasıl etkili bir şekilde kullanacağınızı anlamaktır.

Apidog'u kullanmak yalnızca değerli zaman ve çabadan tasarruf etmenizi sağlamakla kalmaz, aynı zamanda kodunuzun doğru ve hatasız olmasını da sağlar. Kullanıcı dostu arayüzü ve sezgisel özellikleriyle Apidog, Axios istekleriyle çalışan herhangi bir geliştirici için olmazsa olmaz bir araçtır. İyi kodlamalar!

button

```

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin