Tugas lain yang sangat umum di situs web dan aplikasi modern adalah mengambil item data individual dari server untuk memperbarui bagian halaman web tanpa harus memuat seluruh halaman baru. Detail yang tampaknya kecil ini berdampak besar pada kinerja dan perilaku situs, jadi dalam artikel ini, kami akan menjelaskan konsep dan melihat teknologi yang memungkinkan. khususnya, Fetch API Show Halaman web terdiri dari halaman HTML dan (biasanya) berbagai file lain, seperti stylesheet, skrip, dan gambar. Model dasar pemuatan halaman di Web adalah browser Anda membuat satu atau lebih permintaan HTTP ke server untuk file yang diperlukan untuk menampilkan halaman, dan server merespons dengan file yang diminta. Jika Anda mengunjungi halaman lain, browser meminta file baru, dan server meresponsnya Model ini bekerja dengan sangat baik untuk banyak situs. Tetapi pertimbangkan situs web yang sangat digerakkan oleh data. Misalnya, situs web perpustakaan seperti Perpustakaan Umum Vancouver. Antara lain Anda bisa memikirkan situs seperti ini sebagai antarmuka pengguna ke database. Itu mungkin membiarkan Anda mencari genre buku tertentu, atau mungkin menunjukkan rekomendasi untuk buku yang mungkin Anda sukai, berdasarkan buku yang Anda pinjam sebelumnya. Saat Anda melakukan ini, perlu memperbarui halaman dengan kumpulan buku baru untuk ditampilkan. Tetapi perhatikan bahwa sebagian besar konten halaman — termasuk item seperti header halaman, sidebar, dan footer — tetap sama Masalah dengan model tradisional di sini adalah kita harus mengambil dan memuat seluruh halaman, meskipun kita hanya perlu memperbarui satu bagian saja. Ini tidak efisien dan dapat mengakibatkan pengalaman pengguna yang buruk Jadi, alih-alih model tradisional, banyak situs web menggunakan API JavaScript untuk meminta data dari server dan memperbarui konten halaman tanpa memuat halaman. Jadi, saat pengguna mencari produk baru, browser hanya meminta data yang diperlukan untuk memperbarui halaman — kumpulan buku baru yang akan ditampilkan, misalnya API utama di sini adalah Fetch API. Ini memungkinkan JavaScript berjalan di halaman untuk membuat permintaan HTTP ke server untuk mengambil sumber daya tertentu. Saat server menyediakannya, JavaScript dapat menggunakan data tersebut untuk memperbarui halaman, biasanya dengan menggunakan API manipulasi DOM. Data yang diminta seringkali adalah JSON, yang merupakan format yang bagus untuk mentransfer data terstruktur, tetapi bisa juga berupa HTML atau hanya teks Ini adalah pola umum untuk situs berbasis data seperti Amazon, YouTube, eBay, dan sebagainya. Dengan model ini
Catatan. Pada awalnya, teknik umum ini dikenal dengan Asynchronous JavaScript and XML (Ajax), karena cenderung meminta data XML. Ini biasanya tidak terjadi akhir-akhir ini (Anda akan lebih cenderung meminta JSON), tetapi hasilnya tetap sama, dan istilah "Ajax" masih sering digunakan untuk menjelaskan tekniknya. Untuk lebih mempercepat, beberapa situs juga menyimpan aset dan data di komputer pengguna saat pertama kali diminta, yang berarti bahwa pada kunjungan berikutnya mereka menggunakan versi lokal alih-alih mengunduh salinan baru setiap kali laman dimuat pertama kali. Konten hanya dimuat ulang dari server setelah diperbarui Mari telusuri beberapa contoh Fetch API Untuk contoh ini, kami akan meminta data dari beberapa file teks yang berbeda dan menggunakannya untuk mengisi area konten Serangkaian file ini akan bertindak sebagai basis data palsu kami; . Namun, di sini, kami ingin tetap sederhana dan berkonsentrasi pada bagian sisi klien ini Untuk memulai contoh ini, buat salinan lokal dari fetch-start. html dan empat file teks — ayat1. txt, ayat2. txt, ayat3. txt, dan ayat4. txt — di direktori baru di komputer Anda. Dalam contoh ini, kami akan mengambil ayat puisi yang berbeda (yang mungkin Anda kenali dengan baik) saat dipilih di menu drop-down Tepat di dalam elemen 0 dan menambahkan pendengar ke elemen <select> , sehingga ketika pengguna memilih nilai baru, nilai baru diteruskan ke fungsi bernama 2 sebagai parameter
Mari kita definisikan fungsi _2 kita. Pertama-tama, letakkan kode berikut di bawah blok kode sebelumnya — ini adalah cangkang kosong dari fungsi
Kami akan memulai fungsi kami dengan membuat URL relatif yang menunjuk ke file teks yang ingin kami muat, karena kami akan membutuhkannya nanti. Nilai elemen 5 yang dipilih (kecuali jika Anda menentukan nilai yang berbeda dalam atribut nilai) — jadi misalnya "Verse 1". File teks ayat yang sesuai adalah "ayat1. txt", dan berada di direktori yang sama dengan file HTML, oleh karena itu hanya nama file yang akan digunakanNamun, server web cenderung peka terhadap huruf besar-kecil, dan nama file tidak memiliki spasi di dalamnya. Untuk mengonversi "Ayat 1" menjadi "ayat 1. txt" kita perlu mengonversi V menjadi huruf kecil, menghapus spasi, dan menambahkan. txt di bagian akhir. Ini dapat dilakukan dengan _6, 7, dan. Tambahkan baris berikut di dalam fungsi 2 Anda _Akhirnya kita siap menggunakan Fetch API
Ada cukup banyak untuk dibongkar di sini Pertama, titik masuk ke Fetch API adalah fungsi global yang disebut 9, yang menggunakan URL sebagai parameter (dibutuhkan parameter opsional lain untuk setelan khusus, tetapi kami tidak menggunakannya di sini)Selanjutnya, _9 adalah API asinkron yang mengembalikan 1. Jika Anda tidak tahu apa itu, baca modul tentang JavaScript asinkron, dan khususnya artikel tentang janji, lalu kembali ke sini. Anda akan menemukan artikel itu juga berbicara tentang 9 APIJadi karena _9 mengembalikan sebuah janji, kita meneruskan sebuah fungsi ke dalam metode 4 dari janji yang dikembalikan. Metode ini akan dipanggil ketika permintaan HTTP telah mendapat respon dari server. Di handler, kami memeriksa apakah permintaan berhasil, dan melontarkan kesalahan jika tidak. Jika tidak, kami memanggil _5, untuk mendapatkan isi respons sebagai teksTernyata _5 juga asinkron, jadi kami mengembalikan janji yang dikembalikannya, dan meneruskan fungsi ke metode 4 dari janji baru ini. Fungsi ini akan dipanggil ketika teks respons siap, dan di dalamnya kami akan memperbarui blok 0 kami dengan teksAkhirnya, kami merangkai penangan _9 di bagian akhir, untuk menangkap kesalahan apa pun yang dilemparkan ke salah satu fungsi asinkron yang kami panggil atau penangannyaSatu masalah dengan contoh yang berdiri adalah bahwa itu tidak akan menampilkan puisi apa pun saat pertama kali dimuat. Untuk memperbaikinya, tambahkan dua baris berikut di bagian bawah kode Anda (tepat di atas penutup 0 tag) untuk memuat ayat 1 secara default, dan pastikan elemen <select> selalu menampilkan nilai yang benar
Melayani contoh Anda dari serverBrowser modern tidak akan menjalankan permintaan HTTP jika Anda hanya menjalankan contoh dari file lokal. Ini karena batasan keamanan (untuk informasi lebih lanjut tentang keamanan web, baca Keamanan situs web) Untuk menyiasatinya, kita perlu menguji contoh dengan menjalankannya melalui server web lokal. Untuk mengetahui cara melakukannya, baca panduan kami untuk menyiapkan server pengujian lokal Dalam contoh ini kami telah membuat situs sampel bernama The Can Store — ini adalah supermarket fiktif yang hanya menjual makanan kaleng. Anda dapat menemukan contoh ini langsung di GitHub, dan melihat kode sumbernya Secara default, situs menampilkan semua produk, namun Anda dapat menggunakan kontrol formulir di kolom sebelah kiri untuk memfilternya menurut kategori, atau istilah pencarian, atau keduanya Ada cukup banyak kode rumit yang berurusan dengan pemfilteran produk berdasarkan kategori dan istilah pencarian, memanipulasi string sehingga data ditampilkan dengan benar di UI, dll. Kami tidak akan membahas semuanya di artikel, tetapi Anda dapat menemukan komentar ekstensif dalam kode (lihat can-script. js) Namun, kami akan menjelaskan kode Fetch Blok pertama yang menggunakan Fetch dapat ditemukan di awal JavaScript
Fungsi 9 mengembalikan janji. Jika ini berhasil diselesaikan, fungsi di dalam blok 3 pertama berisi 4 yang dikembalikan dari jaringanDi dalam fungsi ini kita
Selanjutnya kita meneruskan fungsi ke dalam metode _4 dari janji yang dikembalikan itu. Fungsi ini akan meneruskan objek yang berisi data respons sebagai JSON, yang kami berikan ke fungsi 9. Fungsi ini yang memulai proses menampilkan semua produk di antarmuka penggunaUntuk menangani kesalahan, kami merantai blok 0 ke ujung rantai. Ini berjalan jika janji gagal karena beberapa alasan. Di dalamnya, kami menyertakan fungsi yang diteruskan sebagai parameter, objek 1. Objek _1 ini dapat digunakan untuk melaporkan sifat kesalahan yang telah terjadi, dalam hal ini kita melakukannya dengan 3 sederhanaNamun, situs web lengkap akan menangani kesalahan ini dengan lebih baik dengan menampilkan pesan di layar pengguna dan mungkin menawarkan opsi untuk memperbaiki situasi tersebut, tetapi kami tidak memerlukan apa pun selain 4 sederhanaAnda dapat menguji kasus kegagalan sendiri
Blok Ambil kedua dapat ditemukan di dalam fungsi 6
Ini bekerja dengan cara yang hampir sama seperti yang sebelumnya, kecuali bahwa alih-alih menggunakan 6, kami menggunakan 8. Dalam hal ini kami ingin mengembalikan respons kami sebagai file gambar, dan format data yang kami gunakan untuk itu adalah Blob (istilahnya adalah singkatan dari "Binary Large Object" dan pada dasarnya dapat digunakan untuk mewakili objek seperti file besar, seperti Setelah kami berhasil menerima blob kami, kami menyebarkannya ke fungsi 9 kami, yang menampilkannyaTerkadang, terutama dalam kode lama, Anda akan melihat API lain bernama 0 (sering disingkat "XHR") yang digunakan untuk membuat permintaan HTTP. Ini mendahului Fetch, dan benar-benar merupakan API pertama yang banyak digunakan untuk mengimplementasikan AJAX. Kami menyarankan Anda menggunakan Ambil jika Anda bisa. ini adalah API yang lebih sederhana dan memiliki lebih banyak fitur daripada 0. Kami tidak akan melalui contoh yang menggunakan 0, tetapi kami akan menunjukkan kepada Anda seperti apa versi 0 dari permintaan penyimpanan kaleng pertama kami
Ada lima tahap untuk ini
Kami juga harus membungkus semuanya dalam percobaan. tangkap blok, untuk menangani kesalahan apa pun yang dilemparkan oleh 5 atau 0Mudah-mudahan menurut Anda Fetch API merupakan peningkatan dari ini. Secara khusus, lihat bagaimana kita harus menangani kesalahan di dua tempat yang berbeda Artikel ini menunjukkan cara mulai menggunakan Fetch untuk mengambil data dari server Namun ada banyak topik berbeda yang dibahas dalam artikel ini, yang hanya benar-benar menggores permukaan. Untuk detail lebih lanjut tentang subjek ini, coba artikel berikut Bisakah Anda mengikis data dari situs web mana pun?Beberapa situs web secara eksplisit melarang pengikisan web, sementara yang lain mengizinkannya, meskipun mungkin juga membatasi data apa yang dapat Anda kumpulkan. Untuk memeriksa apakah situs web yang ingin Anda kikis mengizinkannya, lihat file robots-txt mereka. Anda dapat mengaksesnya dengan menambahkan nama file ini ke nama domain
Bagaimana cara menarik data dari situs web ke situs web lain?Data diambil dari halaman web menggunakan perangkat lunak yang disebut web scraper, yang pada dasarnya adalah bot web. . Kode pengikis web dengan Python. . Gunakan layanan data. . Gunakan Excel untuk ekstraksi data. . Alat pengikis web Bagaimana cara mengikis data dari beberapa situs web?Q. Bagaimana cara mengikis data dari beberapa laman web/URL? . Seret tindakan Loop ke alur kerja Pilih mode "Daftar URL". Masukkan/Tempel daftar URL yang ingin Anda tempel ke dalam kotak teks Jangan lupa klik tombol OK dan Save Bagaimana cara mendapatkan data dari URL?Cara Mengakses Data Dari URL Menggunakan Java . Buat kelas URLConnectionReader Sekarang, buat objek URL baru dan berikan URL yang diinginkan yang ingin kita akses Sekarang, dengan menggunakan objek url ini, buat objek URLConnection Gunakan InputStreamReader dan BufferedReader untuk membaca dari koneksi URL |