‫Instruktur: Selamat datang kembali.
‫Jadi saya harap Anda menikmati bagian ini sejauh ini, dan
‫menikmati bekerja dengan Node.js. js.
‫Jadi sekarang mari kita lanjutkan dalam
‫proyek kita dan membangun API web yang sangat sederhana.
‫Sekarang, untuk memulai, apa sebenarnya API itu?
‫Jawaban panjangnya, Anda akan
‫belajar di salah satu bagian berikutnya, tetapi untuk saat ini, jawaban
‫singkatnya, setidaknya dalam konteks API web ini, pada dasarnya,
‫API adalah layanan tempat kami dapat meminta beberapa data, jadi dalam
‫hal ini, data yang ingin diminta pengguna adalah data
‫tentang produk yang kami tawarkan
‫di peternakan simpul ini, jadi dalam proyek ini.
‫Jadi saya memiliki folder dev-data ini, dan di sana, saya
‫memiliki file JSON, dan JSON, jika Anda tidak tahu, adalah format
‫teks yang sangat sederhana yang sangat
‫mirip dengan objek JavaScript, jadi terlihat
‫seperti ini , dan kita dapat memiliki array,
‫yang sebenarnya kita miliki, jadi kita memiliki satu
‫array besar, yang kemudian berisi lima objek ini, dan
‫setiap objek kemudian memiliki ID, nama produk, gambar, dan
‫seterusnya dan seterusnya.
‫Sekarang masing-masing harus berupa string untuk masing-masing kunci, dan
‫kemudian kita memiliki nilainya.
‫Jadi pada dasarnya, data inilah yang akan dikirim API
‫kami ke klien saat diminta.
‫Jadi kita akan memiliki rute lain di sini.
‫Jadi di sini, jika nama path sama dengan /api.
‫Dan untuk saat ini, sebagai placeholder, kami hanya akan mengirimkan
‫kembali API seperti ini.
‫Jadi yang ingin kita lakukan sekarang adalah benar-benar membaca data
‫dari file ini di sini, lalu mengurai JSON ke dalam JavaScript, dan
‫kemudian mengirimkan kembali hasilnya ke klien.
‫Jadi sesuatu yang sangat sederhana dan mari kita mulai bekerja.
‫Jadi pendekatan pertama untuk melakukan ini
‫adalah masuk ke rute ini dan kemudian membaca file
‫di sini menggunakan fungsi membaca file, bukan?
‫Jadi mari kita mulai dengan melakukan itu.
‫Jadi fs. , dan itu sebenarnya
‫readFile, bukan fileRead, jadi readFile, lalu nama filenya.
‫Sekarang, ingat bagaimana saya memberi tahu
‫Anda sebelumnya bahwa ini bukan satu-satunya cara untuk menemukan file
‫kita di sistem file.
‫Mari untuk saat ini benar-benar menggunakannya, tetapi
‫setelah kita menulisnya di sini, saya
‫akan menunjukkan cara lain.
‫Jadi, perhatikan, titik ini sebenarnya merujuk ke direktori tempat
‫kita menjalankan perintah node di terminal.
‫Jadi, sekali lagi, titik ini
‫di sini sekarang mewakili folder saat ini di
‫sini karena di situlah kita sebenarnya menjalankan perintah node, jadi di
‫folder 1-node-farm ini, yang merupakan direktori kerja
‫kita saat ini dalam kasus ini, tapi kita bisa
‫memilikinya jalankan perintah node di tempat lain,
‫dan kemudian titik akan berarti sesuatu yang lain.
‫Jadi, misalnya, kami dapat dengan sempurna menemukan, pergi ke desktop
‫dan menjalankan node di sana, dan kemudian menentukan
‫seluruh jalur ke index. js, tapi kita bisa melakukan
‫itu, tapi kemudian dalam kasus ini, titik berarti desktop, jadi jika kita
‫memulai skrip dari desktop, maka ini
‫di sini, titik ini, berarti desktop, dan
‫itu tidak selalu ideal , dan karena itu, ada
‫cara yang lebih baik.
‫Jadi semua Node. js, mereka
‫mendapatkan akses ke variabel yang disebut dirname, dan
‫variabel itu selalu diterjemahkan ke direktori tempat
‫skrip yang sedang kami jalankan berada.
‫Jadi dalam hal ini, sebenarnya tempat
‫yang sama karena index. js juga ada di
‫folder pertanian simpul ini, tetapi sekali lagi, untuk alasan
‫yang saya sebutkan sebelumnya, sering kali
‫merupakan praktik yang lebih baik untuk menggunakan variabel dirname, jadi mari
‫kita lakukan itu, dan untuk itu,
‫kita membuat string template, lalu
‫kami menggunakan variabel, jadi __dirname, jadi yang merupakan singkatan dari nama direktori.
‫Dan biasanya, kami melakukannya seperti ini.
‫Sekarang ada pengecualian untuk
‫aturan ini, yang merupakan fungsi require.
‫Jadi ketika membutuhkan modul,
‫kita sebenarnya bisa membutuhkan modul kita sendiri, dan
‫kita akan melakukannya nanti, seperti di
‫video berikutnya, atau salah satu dari dua video
‫berikutnya, dan di sana, titik sebenarnya juga berarti pekerjaan saat ini
‫direktori dan bukan tempat kami menjalankan skrip.
‫Jadi perlu diingat bahwa fungsi require adalah
‫pengecualian untuk aturan ini, tetapi
‫biasanya, titik adalah tempat
‫skrip dijalankan, dan __dirname adalah tempat file saat ini berada.
‫Benar, sekarang mari kita tentukan pengkodean file utf-8, dan kemudian
‫fungsi panggilan balik kami, yang merupakan kesalahan pertama, ingat,
‫dan jadi kami sekarang memiliki akses ke data ini.
‫Sekarang data dalam JSON, dan dalam JavaScript, kami memiliki sesuatu
‫yang dibangun yang disebut JSON. mengurai.
‫Jadi ini akan mengambil kode
‫JSON, yang sebenarnya
‫adalah string, dan kemudian akan secara otomatis mengubahnya menjadi JavaScript,
‫jadi objek atau larik JavaScript dalam kasus ini.
‫Sebut saja ini
‫productData, dan kemudian juga dengan cepat melihatnya.
‫Jadi di konsol dalam hal ini.
‫Jadi, restart server, dan sekarang, jangan lupa untuk
‫menekan rute /api, dan oh, apa yang terjadi di sini?
‫Oh, kami benar-benar me-restart server.
‫Jadi sekarang kita mendapatkan
‫API respons, dan sekarang mari kita
‫lihat di sini, sebenarnya, di objek data produk.
‫Jadi ini hanya objek yang bagus, dengan semua data
‫yang kami miliki di data ini. berkas json.
‫Baiklah, sekarang langkah selanjutnya adalah mengirim
‫kembali data ini sebagai tanggapan.
‫Sekarang tanggapan ini. metode akhir
‫di sini sebenarnya perlu mengirim kembali string dan bukan objek di sini.
‫Dan sebenarnya yang ingin kita kirim kembali
‫adalah datanya secara langsung, jadi data adalah string yang kemudian kita ubah
‫menjadi objek menggunakan JSON. parse, tetapi untuk saat
‫ini, kita sebenarnya tidak perlu melakukan itu, tetapi saya tetap
‫melakukannya karena kita akan membutuhkan ini
‫nanti ketika kita mulai membangun template HTML kita.
‫Jadi saat itulah kita akan membutuhkan
‫data ini dalam format JavaScript.
‫Untuk saat ini, kami hanya ingin mengirim kembali string sebenarnya
‫yang kami terima.
‫Sekarang sebelum kita bisa melakukannya, kita sebenarnya perlu
‫menentukan sehingga kita
‫perlu memberi tahu browser bahwa kita mengirim kembali JSON, jadi seperti sebelumnya,
‫di mana kita menyetel Content-type ke text/html, kita sekarang perlu
‫memberi tahu a browser yang kami kirimkan JSON.
‫Jadi kita katakan res. writeHead seperti sebelumnya, dan
‫sekarang kita menggunakan kode status
‫200, yang berarti oke, dan kemudian objek header.
‫Dalam hal ini, itu hanya akan menjadi
‫satu, jadi Content-type, dan ketika kita mengirim JSON, kita perlu mengatakan application/json.
‫Jadi untuk HTML, itu teks/html, untuk
‫JSON, itu aplikasi/json, dan
‫sekarang mari kita lihat itu.
‫Muat ulang server di sini sangat cepat,
‫dan memang, di sini kami memiliki API yang mengirimkan kembali semua data
‫tentang lima produk kami.
‫Luar biasa, bagus, dan bagus, tetapi sebenarnya tidak
‫sempurna, karena tidak
‫benar-benar 100% efisien, dan itu karena
‫setiap kali seseorang mencapai rute /api ini,
‫file harus dibaca dan kemudian dikirim
‫kembali .
‫Sebaliknya, yang dapat kita lakukan adalah membaca file
‫sekali di awal, dan kemudian setiap kali seseorang
‫mencapai rute ini, cukup mengirim
‫kembali data tanpa harus membacanya setiap kali pengguna meminta.
‫Apakah itu masuk akal?
‫Nah, yang akan saya lakukan adalah meletakkan ini di sini.
‫Oke, dan tentu saja, saya tidak membutuhkan semua ini, jadi
‫ini tidak ada di sini, dan ini
‫tidak ada di sini,
‫dan sebenarnya, ini akan menjadi agak berbeda,
‫dan itu karena kita sekarang akan benar-benar menggunakan versi sinkron,
‫dan saya tahu apa yang Anda pikirkan,
‫yaitu bahwa versi sinkron memblokir eksekusi kode, bukan?
‫Dan meskipun itu benar, dalam
‫hal ini, itu tidak
‫menjadi masalah sama sekali, dan itu
‫karena kode tingkat atas sebenarnya hanya dieksekusi sekali di awal.
‫Hanya fungsi panggilan balik ini, misalnya, di
‫sini, yang createServer, jadi fungsi ini di sini, inilah
‫yang dijalankan setiap kali ada
‫permintaan baru, tetapi bukan kode yang ada di sini.
‫Kode yang berada di luar fungsi panggilan
‫balik, jadi yang disebut kode tingkat atas, hanya pernah dieksekusi
‫setelah kita memulai program, dan dalam situasi itu, tidak
‫masalah sama sekali jika itu memblokir eksekusi,
‫karena sekali lagi, itu hanya
‫terjadi sekali dan hanya ketika kode benar-benar dimulai, bukan?
‫Masuk akal?
‫Jadi kita akan menggunakan versi sinkronisasi sekarang karena
‫sebenarnya lebih mudah untuk menangani data itu,
‫karena itu hanya menempatkan data ke dalam variabel yang tidak
‫dapat kita gunakan segera.
‫Jadi jangan khawatir tentang fakta bahwa fungsi ini memblokir karena, sekali
‫lagi, ini ada di kode tingkat
‫atas dan hanya dijalankan sekali.
‫Rahasianya di sini hanyalah
‫mengetahui kode mana yang hanya dieksekusi sekali dan
‫hanya di awal, dan kode mana yang dieksekusi
‫berulang-ulang, dan karena itu bermasalah saat memblokir loop acara.
‫Dan tentu saja, selama
‫sisa kursus besar dan besar ini, Anda akan mempelajarinya.
‫Jadi Anda akan mempelajari segala sesuatu tentang loop acara,
‫dan kode mana yang memblokir dan mana yang tidak, dan mengapa,
‫jadi ini pertama kalinya saya menyebutkannya, tapi ini tidak
‫akan menjadi yang terakhir kalinya.
‫Anda akan mendengar saya mengatakan hal yang sama berulang-ulang.
‫Jadi, panggil saja satu data ini, dan tentu saja, kita
‫tidak memerlukan semua ini.
‫Mari kita pindahkan ini ke sini, dan hanya itu.
‫Jadi sebelum terjadi apa-apa, ia akan membaca data
‫dari file JSON menjadi data.
‫Kemudian juga akan menguraikannya menjadi objek.
‫Sebut saja dataObject di sini, jadi apa yang akan kita
‫lakukan di sini adalah tidak membaca file ini
‫setiap kali ada permintaan, dan sebaliknya,
‫cukup mengirim kembali data yang kita miliki sekarang di kode tingkat
‫atas kita.
‫Jadi data di sini sekarang berasal dari sini karena, tentu saja,
‫kode dalam fungsi panggilan balik
‫ini memiliki akses ke kode tingkat atas karena rantai lingkup, bukan?
‫Membatalkan, menjalankan lagi, dan hanya untuk membuktikan kepada Anda
‫bahwa itu masih berfungsi, dan berhasil.
‫Sangat sempurna, dan itu lebih baik, itu lebih efisien, oh, dan
‫mengapa saya menutup ini?
‫Baiklah, mari kita buka lagi dengan sangat cepat.
‫Jadi di sini kita pergi.
‫Jadi itulah API kami yang sangat sederhana, yang pada dasarnya
‫memungkinkan pengguna untuk meminta semua data tentang aplikasi
‫kami dengan satu panggilan API.
‫Jadi kami menambahkan rute lain di
‫sini, /api, lalu kami membaca file
‫secara serempak, memasukkannya ke objek ini, dan kemudian
‫mengirim kembali objek itu sebagai respons, tetapi
‫sebelum itu, menetapkan bahwa kami mengirim kembali application/json, jadi bahwa browser
‫tahu persis apa yang diharapkan, dan dalam beberapa video
‫berikutnya, kita
‫akan benar-benar mulai membangun antarmuka pengguna, jadi
‫itu bagian yang paling menarik, bukan?