API Ambil ialah antara muka moden berasaskan janji dalam JavaScript yang digunakan untuk membuat permintaan HTTP. Ia memudahkan proses mengambil sumber daripada pelayan, menggantikan kaedah lama seperti XMLHttpRequest. Fetch menyediakan pendekatan yang lebih bersih dan mudah dibaca untuk mengendalikan permintaan dan respons rangkaian, menyokong ciri seperti Janji, penstriman dan async/menunggu.
fetch(url, options) .then(response => { // Handle the response }) .catch(error => { // Handle errors });
Ambil lalai kepada kaedah GET.
Contoh:
fetch("https://jsonplaceholder.typicode.com/posts") .then(response => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return response.json(); }) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
Untuk menghantar data ke pelayan, gunakan kaedah POST dengan sifat badan dalam objek pilihan.
Contoh:
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ title: "foo", body: "bar", userId: 1, }), }) .then(response => response.json()) .then(data => console.log("Response:", data)) .catch(error => console.error("Error:", error));
Fungsi ambil menerima objek pilihan untuk mengkonfigurasi permintaan:
Option | Description |
---|---|
method | HTTP method (e.g., GET, POST, PUT, DELETE). |
headers | Object containing request headers. |
body | Data to send with the request (e.g., JSON, form data). |
credentials | Controls whether cookies are sent with the request (include, same-origin). |
6. Mengendalikan Respons
Method | Description |
---|---|
response.text() | Returns response as plain text. |
response.json() | Parses the response as JSON. |
response.blob() | Returns response as a binary Blob. |
response.arrayBuffer() | Provides response as an ArrayBuffer. |
Contoh: Mengambil JSON
fetch(url, options) .then(response => { // Handle the response }) .catch(error => { // Handle errors });
Async/menunggu memudahkan pengendalian Janji dalam Ambil.
Contoh:
fetch("https://jsonplaceholder.typicode.com/posts") .then(response => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return response.json(); }) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
Tidak seperti XMLHttpRequest, Fetch tidak menolak Promise untuk ralat HTTP. Anda mesti menyemak sifat ok atau kod status respons.
Contoh:
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ title: "foo", body: "bar", userId: 1, }), }) .then(response => response.json()) .then(data => console.log("Response:", data)) .catch(error => console.error("Error:", error));
Fetch tidak menyokong tamat masa permintaan secara asli. Anda boleh melaksanakan tamat masa menggunakan Promise.race().
Contoh:
fetch("https://api.example.com/data") .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));
Feature | Fetch API | XMLHttpRequest |
---|---|---|
Syntax | Promise-based, simpler, cleaner. | Callback-based, verbose. |
Error Handling | Requires manual handling of HTTP errors. | Built-in HTTP error handling. |
Streaming | Supports streaming responses. | Limited streaming capabilities. |
Modern Features | Works with Promises, async/await. | No built-in Promise support. |
Fetch sesuai untuk projek pembangunan web moden.
Ia disepadukan dengan lancar dengan Janji dan tidak segerak/menunggu.
Gunakannya apabila anda memerlukan kod yang lebih bersih dan boleh diselenggara.
Atas ialah kandungan terperinci Menguasai API Ambil: Memudahkan Permintaan HTTP dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!