⊗jsrxPmSDCl 44 of 57 menu

Klien untuk Aplikasi di Redux

Pada pertemuan sebelumnya, kita hampir menyelesaikan bagian server untuk aplikasi kita, kita akan melengkapinya sedikit lagi sesuai kebutuhan pada pelajaran berikutnya. Sekarang kita perlu membuat klien untuk aplikasi, yang akan mengirimkan permintaan HTTP ke server.

Mari buka aplikasi produk kita dan pada folder api buatlah file client.js. Pertama-tama kita akan menulis fungsi client itu sendiri, yang akan bekerja untuk permintaan GET maupun POST. Parameternya akan menerima path, jenis, dan body permintaan (dalam kasus POST), jika ada:

export async function client(url, method, body = {}) {}

Selanjutnya kita perlu membentuk objek options, di mana kita akan meneruskan berbagai informasi untuk permintaan. Ini akan menjadi jenis permintaan dan header:

export async function client(url, method, body = {}) { const options = { method: method, headers: { 'Content-Type': 'application/json', }, } }

Properti body bersifat opsional bagi kita, kita harus menyertakannya jika kita memiliki permintaan POST. Untuk itu, di dalam client setelah kode untuk objek options tambahkan ke dalam options dengan body permintaan dalam format JSON, jika metode POST dipilih:

if (method === 'POST') { options.body = JSON.stringify(body) }

Kemudian di bawah kode client, atur blok try, pada baris pertama di dalamnya dengan menggunakan fetch dapatkan respons dari server. Dalam kasus kegagalan, kita secara tradisional akan mengembalikan promise dengan kesalahan:

let data try { const response = await window.fetch(url, options) } catch (err) { return Promise.reject(err.message ? err.message : data) }

Sekarang mari kita lengkapi kode di dalam blok try. Setelah mendapatkan response, kita perlu memprosesnya. Ekstrak data darinya dalam JSON dan jika status respons memberi sinyal bahwa semuanya baik-baik saja, maka kembalikan objek dengan data dan informasi: status, header, dan alamat. Jika status bukan 'ok', maka lemparkan pengecualian dengan teks status:

try { const response = await window.fetch(url, options) data = await response.json() if (response.ok) { return { status: response.status, headers: response.headers, url: response.url, data, } } throw new Error(response.statusText) }

Kode untuk fungsi client sudah siap, tinggal menulis bagaimana metode GET dan POST kita akan bekerja saat dipanggil. Mari tulis kode untuk mereka setelah fungsi client. Metode client.get akan menerima parameter path dan memanggil fungsi client, menyampaikan path tersebut dan jenis permintaan GET:

client.get = (url) => client(url, 'GET')

Dan client.post harus menyampaikan untuk client path, jenis permintaan POST, dan body permintaan:

client.post = (url, body) => client(url, 'POST', body)

Selesai, klien kecil kita sudah siap untuk bekerja dengan server.

Buka aplikasi Anda dengan data mahasiswa, buatlah di dalamnya pada folder api file client.js. Setelah mempelajari materi pelajaran, tulis (salin) kode fungsi client dan kedua metodenya client.get dan client.post.

hutrhyuzsv