Skip to main content

Contoh Ajax Menggunakan Fetch

Seperti yang sudah kita ketahui, fetch memanfaatkan promise dalam melakukan tugasnya, sehingga network request yang dibuat menggunakan fetch akan selalu berjalan asynchronous.

Penggunaan dasar dari fetch tampak seperti ini:
20200313194951a9ddbc715b419aa9f5c19cfd5cb5ffae.png
Network request dilakukan pada saat fungsi fetch() tereksekusi.

  1. fetch("https://web-server-book-dicoding.appspot.com/list")


Jika request berhasil diproses oleh server, fungsi fetch() akan mengembalikan promise resolve dan membawa response object di dalamnya. Namun nilai response yang dibawa resolve belum sebagai data JSON yang kita butuhkan, melainkan informasi mengenai response itu sendiri, seperti status codetarget urlheaders, dsb. Maka dari itu, untuk mendapatkan data JSON yang dibutuhkan, kita perlu mengubah response object ke dalam bentuk JSON dengan memanggil method .json().

  1. fetch("https://web-server-book-dicoding.appspot.com/list")

  2.  .then(response => {

  3.    return response.json();

  4.  })


Method .json() juga mengembalikan nilai Promise, sehingga kita membutuhkan chaining promise dengan menambahkan .then() untuk mendapatkan data JSON yang sesungguhnya.

  1. fetch("https://web-server-book-dicoding.appspot.com/list")

  2.  .then(response => {

  3.    return response.json();

  4.  })

  5.  .then(responseJson => {

  6.    console.log(responseJson);

  7.  })


Lalu jangan lupa juga untuk menambahkan block catch() pada akhir chaining promise untuk menangani apabila rejected promise terjadi baik karena fungsi fetch() atau json().

  1. fetch("https://web-server-book-dicoding.appspot.com/list")

  2.  .then(response => {

  3.    return response.json();

  4.  })

  5.  .then(responseJson => {

  6.    console.log(responseJson);

  7.  })

  8.  .catch(error => {

  9.    console.log(error);

  10.  });


Karena fetch memanfaatkan promise, kita bisa memanfaatkan async/await jika Anda lebih suka dengan gaya penulisan synchronous.

  1. fetch("https://web-server-book-dicoding.appspot.com/list")

  2.  .then(response => {

  3.    return response.json();

  4.  })

  5.  .then(responseJson => {

  6.    console.log(responseJson);

  7.  })

  8.  .catch(error => {

  9.    console.log(error);

  10.  });




  1. async function getBooks() {

  2.  try {

  3.    const response = await fetch("https://web-server-book-dicoding.appspot.com/list");

  4.    const responseJson = await response.json();

  5.    console.log(responseJson);

  6.  } catch (error) {

  7.    console.log(error);

  8.  }

  9. }

  10.  

  11. getBooks();


Advanced Fetch Usage

Fungsi fetch() dapat menerima dua buah parameter di dalamnya. Selain menetapkan target URL, kita juga dapat memberikan options untuk menetapkan methodheaderbody, dsb pada request yang akan dijalankan. Namun penerapan options ini bersifat pilihan. Tidak wajib.
2020031320004200d4bfb205c4a5469bb6063092d38d30.png
Penggunaan fetch() tanpa menerapkan options akan membuat GET request sederhana yang ditujukkan pada targetUrl. Hal tersebut sama seperti yang sudah kita lakukan sebelumnya. Lantas kapan kita perlu menerapkan options pada penggunaan fetch? Berikut beberapa kasus saat kita memerlukannya.

Changing Request Method

Untuk membuat POST request ataupun method request lainnya kita perlu menerapkan options dengan properti method di dalamnya.

  1. fetch("https://web-server-book-dicoding.appspot.com/add", {

  2.  method: "POST"

  3. })


Nilai dari properti method dituliskan dalam bentuk string, contohnya “POST”“PUT”“DELETE”, dsb. Nilai default dari properti ini adalah “GET”, sehingga jika kita membuat GET Request, kita tidak perlu menetapkan nilai method secara eksplisit.

Set Header Property

Untuk menambahkan request header dengan fetch kita gunakan properti headers pada options. Contohnya, untuk menambahkan properti Content-Type dengan nilai application/json pada headers kita dapat melakukannya dengan seperti ini:

  1. fetch("https://web-server-book-dicoding.appspot.com/add", {

  2.  method: "POST",

  3.  headers: {

  4.    "Content-Type": "application/json"

  5.  }

  6. })


Tentu kita juga dapat menetapkan lebih dari satu properti pada headers. Contohnya kita tambahkan lagi properti X-Auth-Token dengan nilai 12345.

  1. fetch("https://web-server-book-dicoding.appspot.com/add", {

  2.  method: "POST",

  3.  headers: {

  4.    "Content-Type": "application/json",

  5.    "X-Auth-Token": "12345"

  6.  }

  7. })


Set Data to Body Request

Untuk mengirimkan data pada body request kita gunakan properti body pada options, contohnya seperti ini:

  1. fetch("https://web-server-book-dicoding.appspot.com/add", {

  2.  method: "POST",

  3.  headers: {

  4.    "Content-Type": "application/json",

  5.    "X-Auth-Token": "12345"

  6.  },

  7.  body: JSON.stringify({

  8.    id: 10,

  9.    title: "Edensor",

  10.    author: "Andrea Hirata"

  11.  })

  12. })


Sama seperti XHR, data yang dikirimkan melalui body request perlu diubah menjadi JSON String terlebih dahulu.

  1. body: JSON.stringify({

  2.    id: 10,

  3.    title: "Edensor",

  4.    author: "Andrea Hirata"

  5. })


Contoh kode di atas dapat Anda temukan pada tautan berikut https://repl.it/@dicodingacademy/163-06-AJAX-Fetch-Advanced?lite=true
Anda bisa coba lakukan POST Request menggunakan Fetch dengan menjalankan potongan kode tersebut.

Comments

Popular posts from this blog

Tip Belanja Belanji di Sydney

Window display di QVB Setahun sekali di Sydney, ada hari khusus untuk berbelanja gila-gilaan, ketika SEMUA toko menawarkan diskon. Mereka menyebutnya Boxing Day . Saya menyebutnya Hari Raya Berbelanja :) Boxing Day dirayakan setiap tanggal 26 Desember, satu hari setelah Natal. Tadinya saya pikir Boxing Day ini berkaitan dengan 'tinju', tapi tinju yang bagaimana? Ternyata bukaaan. Pada awalnya, Boxing Day ini diramaikan dengan memberikan hadiah (natal) untuk orang-orang miskin, yang dikemas dalam kotak (box). Tapi maknanya kemudian bergeser menjadi hari belanja untuk menghabiskan uang lebaran atau angpao :) Biasanya, sebelum datang tanggal ini, orang-orang sudah mengincar apa yang ingin mereka beli pada Boxing Day. Katalog SALE bisa dilihat di internet, website masing-masing toko atau di Lasoo . Pasukan belanja sampai mati ini biasanya mengincar merk-merk terkenal, gaun-gaun disainer yang hanya memberi diskon setahun sekali pada hari tersebut. Nggak heran kalau mereka sampai bel...

Call : 085813134112 Jasa Fogging Nyamuk di Jatiasih Bekasi

Call : 085813134112 Jasa Fogging Nyamuk di Jatiasih Bekasi , Jasa Pembasmi Kecoa di Medan Satria Bekasi, Jasa Pembasmi Cicak di Mustika Jaya Bekasi, Jasa Pembasmi Tawon di Pondok Melati Bekasi, Jasa Pembasmi Tomcat di Rawalumbu Bekasi, Jatisampurna Bekasi, Pondok Gede Bekasi. Garda Pest Control juga hadir diberbagai Kota lainnya seperti Jasa Fogging Nyamuk di Bali, Jasa Pembasmi Tawon di Cirebon, Jasa Pembasmi Kutu Kucing di Kemang, Jasa Pembasmi Tikus di Bogor, Jasa Pembasmi Kutu Anjing di Bandung, Jakarta Barat, Tangerang Selatan, Makassar, Palembang, Surabaya, Solo dll. Penyakit demam berdarah disebabkan oleh virus dengue yang diketahui memiliki empat serotipe virus dengue, di antaranya DEN-1, DEN-2, DEN-3, dan DEN-4. Di Indonesia sendiri, virus ini ditularkan oleh dua jenis nyamuk demam berdarah betina, yaitu Aedes aegypti sebagai vektor utama dan Aedes albopictus sebagai vektor sekunder. Jenis nyamuk demam berdarah ini memiliki sifat anthropofilik, artinya ...

Mengurus Visa Schengen Untuk Keluarga

Impian saya jalan-jalan ke Eropa akhirnya terkabul tahun ini. Alhamdulillah. Senang dan semangat banget bikin rencana dan itinerary. Tapi... tentunya harus mau ribet dikit ngurus visa. Schengen itu apa? Wilayah Schengen meliputi 26 negara di Eropa yang telah menghapuskan pemeriksaan paspor di perbatasannya. Kalau kita memiliki visa Schengen, kita bisa bebas keluar masuk 26 negara tersebut tanpa pemeriksaan paspor lagi. Dengan kata lain, ketika kita mengajukan visa (izin berkunjung) ke salah satu negara yang termasuk di wilayah Schengen, kita mendapat bonus visa ke 25 negara lainnya. Jadi sebenarnya rugi besar kalau visa Schengen cuma digunakan untuk berkunjung ke satu negara saja :) Berikut daftar negara-negara di Eropa yang termasuk di wilayah Schengen: 1. Austria 2. Belgia 3. Czech Republic 4. Denmark 5. Estonia 6. Finlandia 7. France (Perancis) 8. Germany (Jerman) 9. Greece (Yunani) 10. Hungaria 11. Iceland 12. Italia 13. Latvia 14. Liechtenstein 15. Lithuania 16. Luxembourg 17. Mal...