Mengirim Data ke Perkhidmatan dalam Axios
Masalah: Anda ingin melampirkan "_sempadan" pada pengepala panggilan API Axios, tetapi data tidak boleh diakses dalam perkhidmatan Axios.
Penyelesaian: Axios secara automatik mengendalikan jenis kandungan untuk format badan permintaan tertentu, termasuk FormData. Meluluskan contoh FormData sebagai argumen data akan menetapkan sempadan Jenis Kandungan dan mime yang sesuai tanpa konfigurasi manual.
Penjelasan Terperinci:
Pengendalian Jenis Kandungan Automatik :
Apabila menghantar contoh FormData, masa jalan secara automatik menetapkan Content-Type kepada "multipart/form-data" dan termasuk token sempadan mime yang betul. Tingkah laku ini memastikan bahawa data disiri dengan betul dan dihantar ke pelayan.
Contoh:
Berikut ialah contoh menghantar contoh FormData dengan Axios:
<code class="javascript">const form = new FormData(); // Attach files and other fields to the formData instance form.append('file', fileInput.files[0]); form.append('foo', 'foo'); axios.post(url, form);</code>
Mengendalikan Jenis Kandungan Tersuai:
Anda hanya perlu menetapkan Jenis Kandungan secara manual jika anda ingin menghantar data rentetan dalam format tertentu (cth., teks/xml, application/json).
Contoh:
<code class="javascript">const data = JSON.stringify({ foo: 'foo', bar: 'bar' }); axios.post(url, data, { headers: { 'content-type': 'application/json' }, });</code>
Mengelakkan Axios v0.27.1 dan v1.0.0 :
Versi Axios ini mempunyai masalah yang diketahui dengan pengendalian FormData. Adalah disyorkan untuk menggunakan alternatif seperti API Ambil, got (untuk Node.js) atau ky (untuk penyemak imbas).
Pertimbangan Node.js:
Bila menggunakan Axios pada bahagian belakang Node.js, ia tidak akan membuat kesimpulan pengepala Jenis Kandungan daripada tika FormData. Untuk menangani perkara ini, anda boleh menggunakan pemintas permintaan atau menggabungkan pengepala secara manual.
Kaedah jQuery $.ajax():
Secara lalai, $.ajax() menghantar muatan sebagai "application/x-www-form-urlencoded" dan menyerikan data JavaScript menggunakan jQuery.param(). Untuk membenarkan penyemak imbas menetapkan Jenis Kandungan secara automatik, gunakan pilihan berikut:
<code class="javascript">$.ajax({ url, method: 'POST', data: body, contentType: false, // Let the browser figure out the content type processData: false, // Don't attempt to serialize data });</code>
Atas ialah kandungan terperinci Bagaimanakah saya boleh menghantar data kepada perkhidmatan dalam Axios dan memastikan jenis kandungan dan sempadan yang betul ditetapkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!