Terdapat banyak cara untuk membuat permintaan HTTP dalam JavaScript, tetapi dua daripada yang paling popular ialah Axios dan native fetch() API. Dalam siaran ini, kami akan membandingkan dan membezakan kedua-dua kaedah ini untuk menentukan yang mana satu lebih sesuai untuk senario yang berbeza.
Permintaan HTTP adalah asas untuk berkomunikasi dengan pelayan dan API dalam aplikasi web. Kedua-dua Axios dan fetch() digunakan secara meluas untuk memudahkan permintaan ini dengan berkesan. Mari selami ciri-ciri mereka dan lihat bagaimana ia disusun.
Axios ialah perpustakaan pihak ketiga yang menyediakan klien HTTP berasaskan janji untuk membuat permintaan HTTP. Ia terkenal dengan kesederhanaan dan fleksibilitinya serta digunakan secara meluas dalam komuniti JavaScript.
axios(config) .then(response => console.log(response.data)) .catch(error => console.error('Error:', error));
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); } });
fetch() ialah API terbina dalam dalam JavaScript moden, disokong oleh semua penyemak imbas moden. Ia ialah API web tak segerak yang mengembalikan data dalam bentuk janji.
Mula-mula, pasang Axios menggunakan npm atau benang:
axios(config) .then(response => console.log(response.data)) .catch(error => console.error('Error:', error));
Anda juga boleh memasukkan Axios melalui CDN:
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); } });
Berikut ialah cara menggunakan Axios untuk membuat permintaan GET:
npm install axios # or yarn add axios # or pnpm install axios
Memandangkan fetch() terbina dalam, anda tidak perlu memasang apa-apa. Begini cara membuat permintaan GET dengan fetch():
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
import axios from 'axios'; axios.get('https://example.com/api') .then(response => console.log(response.data)) .catch(error => console.error(error));
fetch('https://example.com/api') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));
Axios:
fetch(url, options) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));
Ambil:
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:
axios.get('/api/data', { params: { name: 'Alice', age: 25 } }) .then(response => { /* handle response */ }) .catch(error => { /* handle error */ });
Ambil:
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:
axios.post('/api/data', { name: 'Bob', age: 30 }) .then(response => { /* handle response */ }) .catch(error => { /* handle error */ });
Ambil:
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:
axios.get('/api/data', { timeout: 5000 }) // 5 seconds .then(response => { /* handle response */ }) .catch(error => { /* handle error */ });
Ambil:
const controller = new AbortController(); const signal = controller.signal; setTimeout(() => controller.abort(), 5000); // abort after 5 seconds fetch('/api/data', { signal }) .then(response => response.json()) .then(data => { /* handle data */ }) .catch(error => { /* handle error */ });
Axios:
Ambil:
Axios:
Mengendalikan ralat dalam blok tangkapan dan menganggap sebarang kod status di luar 2xx sebagai ralat:
async function getData() { try { const response = await axios.get('/api/data'); // handle response } catch (error) { // handle error } }
Ambil:
Memerlukan semakan status manual:
async function getData() { try { const response = await fetch('/api/data'); const data = await response.json(); // handle data } catch (error) { // handle error } }
Tiada jawapan yang pasti kerana ia bergantung pada keperluan anda:
EchoAPI ialah platform pembangunan API kolaboratif semua-dalam-satu yang menawarkan alatan untuk mereka bentuk, nyahpepijat, menguji dan mengejek API. EchoAPI boleh menjana kod Axios secara automatik untuk membuat permintaan HTTP.
Kedua-dua Axios dan fetch() ialah kaedah yang berkuasa untuk membuat permintaan HTTP dalam JavaScript. Pilih yang paling sesuai dengan keperluan dan keutamaan projek anda. Menggunakan alatan seperti EchoAPI boleh meningkatkan aliran kerja pembangunan anda, memastikan kod anda tepat dan cekap. Selamat mengekod!
Atas ialah kandungan terperinci Axios vs Fetch: Mana yang Terbaik untuk Permintaan HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!