Berkenaan dengan pengendalian permintaan HTTP dalam JavaScript, Axios dan Fetch telah lama menjadi alat yang digunakan. Walau bagaimanapun, terdapat alternatif moden yang berkuasa yang harus dipertimbangkan oleh pembangun — Ky. Ringan dan penuh dengan ciri lanjutan, Ky menjadikan pengendalian permintaan HTTP lebih mudah dan cekap. Dalam artikel ini, kami akan menghuraikan sebab Ky menonjol, dengan perbandingan langsung dengan Axios dan Ambil API.
Axios ialah klien HTTP berasaskan janji yang popular untuk JavaScript. Ia memudahkan permintaan HTTP dengan menawarkan ciri seperti penghuraian JSON automatik, pemintas permintaan dan tamat masa tersuai. Walau bagaimanapun, saiz failnya boleh menjadi kelemahan, terutamanya untuk aplikasi ringan.
Fetch ialah API penyemak imbas terbina dalam untuk membuat permintaan HTTP. Walaupun digunakan secara meluas, Fetch mempunyai beberapa had: ia tidak termasuk pengendalian ralat lalai atau percubaan semula terbina dalam, yang memerlukan pembangun menulis kod tambahan untuk kefungsian asas.
Ky ialah alternatif ringan (157~ KB) kepada Axios dan Fetch, dibina di atas Fetch tetapi menawarkan API yang lebih kaya dengan ciri. Dengan percubaan semula terbina dalam, pengendalian ralat yang dipermudahkan dan cangkuk permintaan yang boleh disesuaikan, Ky mencapai keseimbangan antara kesederhanaan dan kuasa.
Kenapa Pilih Ky?
Ini menjadikan Ky pilihan yang bagus untuk aplikasi yang prestasi dan saiz berkas adalah kritikal. Walaupun ringan, Ky tidak mengorbankan ciri penting seperti percubaan semula dan pengendalian ralat.
Sintaks Ky adalah semudah Ambil, namun ia menawarkan lebih kuasa terbina dalam. Contohnya, membuat permintaan GET dengan Ky adalah semudah:
import ky from 'ky'; const data = await ky.get('https://api.example.com/data').json();
Mengapa ini lebih baik daripada Fetch?
Ky dilengkapi dengan sokongan cuba semula terbina dalam, ciri penting untuk mengendalikan keadaan rangkaian yang tidak boleh dipercayai. Axios juga menawarkan fungsi cuba semula, tetapi anda perlu menggunakan pemalam tambahan atau mengkonfigurasinya sendiri. Sebaliknya, Ky menyediakan ciri ini secara lalai dengan konfigurasi sifar.
await ky.get('https://api.example.com/data', { retry: 2 });
Dalam contoh ini, Ky akan mencuba semula permintaan sehingga 2 kali sekiranya berlaku kegagalan, tanpa sebarang persediaan tambahan.
Salah satu ciri Ky yang paling menarik ialah sistem cangkuk, terutamanya beforeRequest dan afterResponse. Cangkuk ini memberi anda kawalan penuh ke atas permintaan dan respons HTTP anda tanpa memerlukan perisian tengah luaran, yang sering diperlukan oleh Axios.
Dengan Ky, anda boleh mengubah suai permintaan keluar dengan mudah menggunakan cangkuk beforeRequest. Sama ada anda perlu menambah token pengesahan atau mengubah suai pengepala, beforeRequest menjadikannya mudah.
Contoh : Menambah token kebenaran pada setiap permintaan.
ky.extend({ hooks: { beforeRequest: [ request => { const token = localStorage.getItem('authToken'); request.headers.set('Authorization', `Bearer ${token}`); } ] } });
Ini mengurangkan kod berulang, menjadikannya lebih mudah untuk mengendalikan pengesahan secara global.
Dengan cangkuk afterResponse, anda boleh memanipulasi respons merentas keseluruhan aplikasi anda. Cangkuk ini amat berguna untuk mengendalikan percubaan semula pada kod status tertentu, seperti menyegarkan semula token yang telah tamat tempoh.
Contoh : Memuat semula token yang telah tamat tempoh secara automatik pada respons 401 Tanpa kebenaran.
ky.extend({ hooks: { afterResponse: [ async (request, options, response) => { if (response.status === 401) { const newToken = await refreshAuthToken(); request.headers.set('Authorization', `Bearer ${newToken}`); return ky(request); } } ] } });
Dengan persediaan ini, anda boleh memuat semula token dengan lancar tanpa menduplikasi logik merentas aplikasi anda.
Axios provides decent error handling via interceptors, but it lacks the simplicity that Ky offers out of the box. Axios often requires custom logic for retries and error status code handling.
Fetch’s error handling is limited by default. It doesn’t throw errors for HTTP status codes like 404 or 500, forcing developers to check response statuses manually.
Ky excels in error handling. It automatically throws errors for non-2xx HTTP responses and provides retry functionality for failed requests without needing additional code. This makes Ky a robust solution for handling errors elegantly.
try { const data = await ky.get('https://api.example.com/data').json(); } catch (error) { console.error('Request failed:', error); }
Ky wraps the entire request in a promise, automatically throwing an error if the response status code indicates a failure, which simplifies debugging.
Let’s put Ky to the test with a few practical examples that showcase its simplicity and power.
const response = await ky.get('https://api.example.com/items').json(); console.log(response);
Ky automatically handles JSON parsing and throws an error for any non-2xx status codes, which Fetch does not.
const response = await ky.post('https://api.example.com/create', { json: { name: 'Ky' }, retry: 3 }).json(); console.log(response);
Ky retries the POST request up to 3 times if it fails, offering better reliability than Fetch or Axios without extra configuration.
If you’re looking for a modern , lightweight , and feature-packed solution for making HTTP requests in JavaScript, Ky is an excellent choice. While Axios and Fetch are still widely used, Ky offers key advantages like automatic retries, hooks for customizing requests and responses, and better default error handling.
For developers who prioritize simplicity , performance , and control over HTTP requests, Ky is definitely worth considering as a primary tool in your JavaScript projects.
For more examples and detailed API information, you can visit https://www.npmjs.com/package/ky.
Atas ialah kandungan terperinci Mengapa Ky ialah Alternatif Terbaik kepada Axios dan Ambil Permintaan HTTP Moden. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!