Cara membatalkan permintaan API dengan Axios

Pelajari cara membatalkan permintaan API aplikasi web dengan Axios. Panduan lengkap tentang pembatalan permintaan axios.

Ardianto Nugroho

Ardianto Nugroho

6 July 2025

Cara membatalkan permintaan API dengan Axios

Dalam dunia pengembangan web yang serba cepat, mengelola permintaan API secara efisien sangat penting. Terkadang, Anda perlu membatalkan permintaan ini untuk menghemat sumber daya atau mencegah hasil yang tidak diinginkan. Axios, sebuah pustaka JavaScript populer, menyediakan cara yang mudah untuk menangani skenario seperti itu. Dalam posting blog ini, kita akan menjelajahi seluk-beluk pembatalan permintaan API dengan Axios dan memperkenalkan Anda pada Apidog, sebuah alat yang menyederhanakan pengujian dan pengelolaan API. Dan bagian terbaiknya? Anda dapat mengunduh Apidog secara gratis!

button

Mengapa Anda Mungkin Perlu Membatalkan Permintaan

Mari kita mulai dengan skenario yang mudah dipahami. Bayangkan Anda sedang membangun fitur pencarian untuk aplikasi web Anda. Saat pengguna mengetik di kotak pencarian, Anda ingin mengambil saran dari API. Namun, jika pengguna terus mengetik dengan cepat, Anda tidak ingin membombardir server dengan permintaan yang tidak perlu untuk setiap penekanan tombol. Sebaliknya, Anda ingin membatalkan permintaan yang tertunda dan hanya mengirimkan yang terbaru. Di situlah pembatalan permintaan axios berperan!

Bagaimana Cara Kerja Pembatalan Permintaan Axios

Jadi, bagaimana cara kerja pembatalan ini? Nah, kuncinya terletak pada CancelToken yang disediakan oleh Axios. Token ini memungkinkan Anda untuk membuat "operasi yang dapat dibatalkan" dan mengaitkannya dengan permintaan tertentu. Jika Anda memutuskan untuk membatalkan operasi, Axios akan secara otomatis menghentikan permintaan yang sesuai.

Membuat CancelToken

Untuk memulai, Anda perlu mengimpor CancelToken dari Axios:

import axios from 'axios';

const source = axios.CancelToken.source();

Objek source memiliki dua properti: token dan cancel. Properti token adalah yang akan Anda teruskan bersama dengan permintaan Axios Anda, sedangkan fungsi cancel digunakan untuk, ya, membatalkan permintaan.

Membuat Permintaan yang Dapat Dibatalkan

Sekarang setelah Anda memiliki CancelToken, Anda dapat melampirkannya ke permintaan Axios Anda seperti ini:

axios.get('/api/suggestions', {
  cancelToken: source.token
})
  .then(response => {
    // Handle the successful response
  })
  .catch(thrown => {
    if (axios.isCancel(thrown)) {
      // Handle the cancellation
    } else {
      // Handle other errors
    }
  });

Dengan meneruskan source.token sebagai opsi cancelToken, Anda memberi tahu Axios bahwa permintaan ini dapat dibatalkan. Jika permintaan berhasil dibatalkan, Promise akan ditolak dengan objek Cancel, yang dapat Anda tangani di blok catch.

Membatalkan Permintaan

Untuk benar-benar membatalkan permintaan, Anda cukup memanggil fungsi cancel yang disediakan oleh objek source:

source.cancel('Operation canceled by the user.');

Anda dapat meneruskan alasan opsional untuk membatalkan permintaan, yang akan tersedia dalam objek Cancel yang dilemparkan oleh Promise yang ditolak.

Contoh Dunia Nyata: Saran Pencarian dengan Pembatalan Permintaan Axios

Sekarang setelah Anda memahami dasar-dasarnya, mari kita lihat bagaimana Anda dapat menerapkan pembatalan permintaan axios dalam skenario dunia nyata. Kita akan membangun fitur saran pencarian sederhana menggunakan React dan API apidog (API dummy untuk tujuan pengujian).

Pertama, mari kita siapkan komponen React kita:

import React, { useState, useEffect } from 'react';
import axios from 'axios';

const SearchSuggestions = () => {
  const [query, setQuery] = useState('');
  const [suggestions, setSuggestions] = useState([]);
  const [cancelToken, setCancelToken] = useState(null);

  // ... (Component logic goes here)

  return (
    <div>
      <input
        type="text"
        value={query}
        onChange={handleInputChange}
        placeholder="Search..."
      />
      <ul>
        {suggestions.map(suggestion => (
          <li key={suggestion}>{suggestion}</li>
        ))}
      </ul>
    </div>
  );
};

Selanjutnya, mari kita implementasikan fungsi handleInputChange, yang akan mengambil saran dari API apidog:

const handleInputChange = (event) => {
  const newQuery = event.target.value;
  setQuery(newQuery);

  // Cancel the previous request if it exists
  if (cancelToken) {
    cancelToken.cancel('Canceling previous request');
  }

  // Create a new CancelToken for the current request
  const source = axios.CancelToken.source();
  setCancelToken(source);

  // Make the API request with the new CancelToken
  axios.get(`https://api.apidog.com/suggestions?query=${newQuery}`, {
    cancelToken: source.token
  })
    .then(response => {
      setSuggestions(response.data.suggestions);
    })
    .catch(thrown => {
      if (axios.isCancel(thrown)) {
        console.log('Request canceled:', thrown.message);
      } else {
        console.error('Error fetching suggestions:', thrown);
      }
    });
};

Dalam contoh ini, kita membatalkan permintaan sebelumnya sebelum membuat yang baru. Kita membuat CancelToken baru untuk setiap permintaan dan menyimpannya dalam status komponen menggunakan fungsi setCancelToken. Saat pengguna mengetik di kotak pencarian, kita membatalkan permintaan sebelumnya (jika ada) dan membuat permintaan baru dengan kueri yang diperbarui dan CancelToken yang baru.

Jika permintaan berhasil dibatalkan, blok catch akan menangani pembatalan dan mencatat alasannya. Jika ada kesalahan lain, itu juga akan ditangkap dan dicatat.

Teknik Tingkat Lanjut

Sekarang setelah Anda menguasai dasar-dasar pembatalan permintaan axios, mari kita lihat beberapa teknik tingkat lanjut yang dapat lebih meningkatkan keterampilan Anda.

Instans Axios yang Dapat Digunakan Kembali dengan Pembatalan Permintaan Otomatis

Alih-alih membuat CancelToken baru untuk setiap permintaan, Anda dapat membuat instans Axios yang dapat digunakan kembali yang secara otomatis membatalkan permintaan sebelumnya saat permintaan baru dibuat. Pendekatan ini sangat berguna saat bekerja dengan aplikasi kompleks yang memiliki banyak komponen yang membuat permintaan API.

Berikut adalah contoh bagaimana Anda dapat membuat instans seperti itu:

import axios from 'axios';

const axiosInstance = axios.create();
let cancelToken;

axiosInstance.interceptors.request.use(
  config => {
    if (cancelToken) {
      cancelToken.cancel('Canceling previous request');
    }

    config.cancelToken = new axios.CancelToken(c => {
      cancelToken = c;
    });

    return config;
  },
  error => Promise.reject(error)
);

export default axiosInstance;

Dalam contoh ini, kita membuat instans Axios baru menggunakan axios.create(). Kita kemudian menyiapkan interceptor untuk permintaan, yang secara otomatis membatalkan permintaan sebelumnya sebelum membuat yang baru. cancelToken disimpan secara global dan ditetapkan ke opsi cancelToken setiap permintaan baru.

Anda kemudian dapat menggunakan axiosInstance ini di seluruh aplikasi Anda untuk membuat permintaan API, dan itu akan secara otomatis menangani pembatalan permintaan untuk Anda.

Menangani Beberapa Permintaan yang Dapat Dibatalkan

Dalam beberapa kasus, Anda mungkin memiliki beberapa permintaan yang dapat dibatalkan dalam satu komponen atau fungsi. Untuk menangani situasi ini, Anda dapat menggunakan array atau objek untuk menyimpan beberapa instans CancelToken.

Berikut adalah contoh bagaimana Anda dapat mengelola beberapa permintaan pembatalan:

import React, { useState, useEffect } from 'react';
import axios from 'axios';

const MultipleRequests = () => {
  const [cancelTokens, setCancelTokens] = useState({});

  const fetchData = (endpoint) => {
    // Cancel any existing request for the same endpoint
    if (cancelTokens[endpoint]) {
      cancelTokens[endpoint].cancel('Canceling previous request');
    }

    // Create a new CancelToken for the current request
    const source = axios.CancelToken.source();
    setCancelTokens(prevTokens => ({ ...prevTokens, [endpoint]: source }));

    // Make the API request with the new CancelToken
    axios.get(`https://api.apidog.com/${endpoint}`, {
      cancelToken: source.token
    })
      .then(response => {
        // Handle the successful response
      })
      .catch(thrown => {
        if (axios.isCancel(thrown)) {
          console.log('Request canceled:', thrown.message);
        } else {
          console.error('Error fetching data:', thrown);
        }
      });
  };

  return (
    <div>
      <button onClick={() => fetchData('endpoint1')}>Fetch Data 1</button>
      <button onClick={() => fetchData('endpoint2')}>Fetch Data 2</button>
    </div>
  );
};

Dalam contoh ini, kita menggunakan objek cancelTokens untuk menyimpan beberapa instans CancelToken, dengan endpoint sebagai kuncinya. Saat membuat permintaan baru, kita pertama-tama memeriksa apakah ada CancelToken yang ada untuk endpoint itu dan membatalkannya jika perlu. Kemudian, kita membuat CancelToken baru dan menyimpannya dalam objek cancelTokens, menimpa nilai sebelumnya untuk endpoint itu.

Pendekatan ini memungkinkan Anda untuk mengelola beberapa permintaan yang dapat dibatalkan dalam komponen atau fungsi yang sama, memastikan bahwa hanya permintaan terbaru untuk setiap endpoint yang dieksekusi.

Bagaimana cara membatalkan permintaan API dengan Apidog?

Untuk membatalkan permintaan API menggunakan Apidog, Anda biasanya akan mengikuti langkah-langkah ini:

button
  1. Buka Apidog dan buat permintaan baru.
Select new request

2. Atur metode permintaan ke DELETE.

3. Masukkan URL sumber daya yang ingin Anda hapus dan tambahkan header atau parameter tambahan yang Anda butuhkan.

4. Klik tombol "Kirim" untuk mengirim permintaan dan menganalisis respons

Ini akan mengirimkan permintaan DELETE ke URL yang ditentukan, yang merupakan cara standar untuk menghapus sumber daya melalui API. Namun, jika Anda ingin membatalkan permintaan yang sedang berlangsung, ini mungkin tidak didukung secara langsung oleh Apidog karena akan bergantung pada fungsionalitas API dan apakah itu mendukung pembatalan permintaan yang sedang berlangsung.

Untuk API yang tidak mendukung pembatalan, Anda perlu menerapkan fungsionalitas ini di sisi server, di mana server dapat memeriksa sinyal pembatalan dan menghentikan pemrosesan permintaan yang sesuai.

Kesimpulan

Menguasai seni pembatalan permintaan API dengan Axios dapat secara signifikan meningkatkan kinerja dan keandalan aplikasi Anda. Seperti yang telah kita lihat, Axios menawarkan metode yang mudah dan efektif untuk membatalkan permintaan kapan pun diperlukan. Untuk mempraktikkan pengetahuan ini dan menyederhanakan proses pengujian API Anda, jangan lupa untuk mengunduh Apidog. Ini adalah sekutu yang kuat dalam toolkit pengembangan Anda, dan tersedia tanpa biaya. Rangkullah kekuatan Axios dan Apidog, dan bawa manajemen API Anda ke tingkat berikutnya!

button

Explore more

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Pelajari cara buat web apa pun dgn Lovable. Panduan lengkap, fitur inovatif, & integrasi Apidog (API gratis).

15 April 2025

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Tutorial ini memandu Anda menyiapkan & mengelola API key khusus di Cursor: OpenAI, Anthropic, Google, & Azure.

11 April 2025

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Pelajari API NVIDIA Llama Nemotron utk buat agen AI canggih.

11 April 2025

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.