‫Instruktur: Jadi, setelah semua pembicaraan tentang middleware, sekarang
‫mari kita lanjutkan
‫dan membuat fungsi middleware kita sendiri.
‫Dan sekali lagi, ingat bahwa
‫kita sebenarnya sudah menggunakan middleware sebelumnya.
‫Jadi mari kita lihat itu.
‫Dan, di suatu tempat di sini.
‫Jadi, Anda lihat bahwa
‫untuk menggunakan middleware, kami menggunakan aplikasi dot use, oke?
‫Jadi, metode penggunaan adalah metode yang kami gunakan untuk,
‫ya, benar-benar menggunakan middleware.
‫Jadi, tambahkan middleware ke tumpukan middleware kami, oke?
‫Jadi express dot json ini memanggil metode json ini pada
‫dasarnya mengembalikan sebuah fungsi, oke?
‫Dan fungsi itu kemudian ditambahkan ke tumpukan middleware.
‫Jadi, mirip dengan
‫itu, kita dapat membuat fungsi middleware kita sendiri.
‫Jadi, ayo lakukan sekarang.
‫Jadi, tentu saja, kita masih perlu menggunakan aplikasi dot use.
‫Oke, jadi sekarang, di sini, yang harus kita lakukan
‫adalah membuat path di fungsi kita yang ingin kita tambahkan ke tumpukan middleware.
‫Jadi, ingat dari video terakhir
‫bahwa, tentu saja, di
‫setiap fungsi middleware, kami memiliki akses ke permintaan dan responsnya, oke?
‫Tetapi juga, kami memiliki fungsi berikutnya.
‫Jadi, seperti ini, kita edit sebagai argumen ketiga
‫untuk fungsi middleware ini, oke?
‫Dan seperti ini, express kemudian mengetahui
‫bahwa kita sebenarnya mendefinisikan middleware di sini.
‫Baiklah.
‫Sekarang, seperti sebelumnya,
‫sebenarnya, kita bisa menyebut argumen ini di sini sebagai
‫sesuatu yang lain, seperti X, atau N, atau, itu tidak terlalu penting.
‫Yang penting
‫adalah argumen ketiga untuk fungsi ini.
‫Jadi express pada dasarnya meneruskan fungsi
‫berikutnya sebagai argumen ketiga ke dalam fungsi middleware ini.
‫Dan kita kemudian dapat menyebutnya apa pun yang kita inginkan.
‫Tapi sekali lagi, selanjutnya benar-benar konvensi di express,
‫dan untuk menghindari
‫kebingungan, kami selalu menggunakan nama ini, oke?
‫Dan hal yang sama untuk permintaan dan
‫tanggapan, seperti yang saya sebutkan sebelumnya, kami dapat memanggil mereka sesuatu yang lain.
‫Tetapi konvensinya adalah memanggil mereka seperti ini.
‫Bagaimanapun, mari kita log sesuatu ke konsol,
‫di sini, di fungsi middleware
‫ini, hanya agar kita memiliki beberapa kode untuk benar-benar
‫dijalankan setiap kali ada permintaan baru.
‫Mari kita
‫menyapa dari middleware.
‫Dan tambahkan beberapa emoji di sini, sekali lagi, untuk membuatnya sedikit menonjol.
‫Saya sangat suka itu.
‫Dan apa yang terjadi di sini?
‫Benar.
‫Jadi itulah kode yang ingin kita jalankan di sini.
‫Dan sekarang, seperti yang kita bicarakan di
‫video terakhir, kita sebenarnya perlu memanggil fungsi berikutnya, oke?
‫Dan jika kita tidak
‫menelepon berikutnya di sini, maka siklus
‫permintaan/tanggapan akan benar-benar macet pada saat ini.
‫Kami tidak akan dapat
‫melanjutkan, dan kami tidak akan pernah mengirim kembali tanggapan kepada klien.
‫Jadi saya tidak bisa cukup menekankan betapa pentingnya
‫untuk tidak pernah lupa menggunakan next di semua middleware Anda.
‫Oke, dan sesederhana itu.
‫Yang harus kita lakukan adalah menentukan selanjutnya.
‫Jadi, argumen ini di sini.
‫Dan kemudian benar-benar memanggil fungsi itu seperti ini.
‫Oke.
‫Dan dengan itu, kami sebenarnya siap untuk mengujinya.
‫Dan yang harus kita
‫lakukan adalah mengirim permintaan sederhana ke API kita.
‫Jadi, inilah APInya.
‫Mari kita tutup yang satu ini di sini.
‫Jadi, itu tidak terlalu penting, karena
‫ini, tentu saja, berlaku untuk setiap permintaan.
‫Jadi, mari kita kembali.
‫Dan memang, kami mendapat salam dari
‫middleware yang masuk ke konsol kami, oke?
‫Sangat bagus.
‫Dan saya ingin cepat menyentuh apa yang baru saja
‫saya katakan sebelumnya, yaitu bahwa
‫middleware ini di sini berlaku untuk setiap permintaan, oke?
‫Dan itu karena kami tidak menentukan rute apa pun.
‫Jadi, ingatlah bahwa sebelum saya mengatakan bahwa semua pengendali rute
‫di sini sebenarnya adalah jenis middleware itu sendiri.
‫Mereka hanyalah fungsi
‫middleware yang hanya berlaku untuk URL tertentu.
‫Jadi rute tertentu, oke.
‫Tetapi fungsi middleware yang lebih sederhana yang
‫kami definisikan di
‫sini, mereka akan berlaku untuk setiap permintaan.
‫Setidaknya, jika penangan rute datang
‫sebelum middleware ini.
‫Jadi biarkan aku benar-benar menunjukkan sesuatu.
‫Dan saya akan memotongnya dari sini
‫dan sekarang benar-benar meletakkannya di sini
‫setelah pengendali rute ini.
‫Jadi menurut Anda apa yang
‫akan terjadi sekarang ketika saya menelepon ke rute ini?
‫Jadi mari kita lihat apa yang terjadi.
‫Jadi rute yang tepat ini, jadi yang baru saja saya tunjukkan, izinkan
‫saya mengirim permintaan ke sana.
‫Dan sekarang mari kita kembali dan sekarang kita tidak
‫memiliki hello dari middleware.
‫Jadi, mengapa demikian?
‫Yah, hanya karena middleware ini, jadi
‫pengendali rute ini di
‫sini, muncul sebelum fungsi middleware yang kita miliki di sini.
‫Dan pengendali rute ini, yang
‫dalam hal ini, dapatkan semua tur, sebenarnya mengakhiri siklus respons permintaan.
‫Jadi mari kita lihat itu.
‫Jadi kita sudah mendapatkan semua tur.
‫Jadi, di mana itu?
‫Ya, jadi inilah fungsinya dan dengan mengirimkan hasil
‫dengan res dot json,
‫kita sebenarnya mengakhiri siklus respons permintaan.
‫Jadi middleware berikutnya dalam tumpukan, yang
‫dalam hal ini adalah
‫yang ini, jadi yang khusus kami tidak akan dipanggil.
‫Sekali lagi, karena siklusnya sudah selesai, oke.
‫Jadi pastikan untuk memahami bahwa pesanan ini
‫sangat penting dalam ekspres, oke.
‫Sangat penting untuk memahami bahwa
‫ini adalah cara kerja aplikasi ekspres, oke.
‫Jadi, untuk mengujinya, mari kita coba
‫melihat apa yang terjadi
‫ketika kita melakukan permintaan ke rute ini.
‫Jadi untuk mendapatkan tur perbarui tur atau hapus tur.
‫Jadi mari lakukan yang ini, kirim permintaan ke
‫sini, dan mari kembali dan sekarang kita mendapat
‫halo dari middleware.
‫Jadi itu sebenarnya yang kita harapkan, bukan?
‫Jadi itu karena tentu saja, middleware ini di
‫sini sekarang sebelum penangan rute.
‫Dan tentu saja, ini adalah bagian
‫dari tumpukan middleware yang dieksekusi sebelum siklus respons permintaan berakhir.
‫Baiklah, masuk akal?
‫Jadi, mari kita ambil kembali dan biasanya
‫kita mendefinisikan middleware global semacam ini
‫di sini sebelum semua penangan rute kita.
‫Baiklah, jadi ini adalah salah satu fungsi
‫middleware yang sangat sederhana yang baru saja kita definisikan untuk menjalankan beberapa kode.
‫Tapi mari kita lakukan yang lain.
‫Dan tentu saja,
‫kita dapat memiliki fungsi middleware sebanyak yang kita suka.
‫Dan kali ini
‫kita sebenarnya ingin memanipulasi objek request.
‫Jadi signature disini selalu
‫sama, selalu request, response, dan next.
‫Dan sekarang mari kita benar-benar memanipulasi permintaan.
‫Yang ingin kami lakukan
‫dalam kasus ini, adalah menambahkan waktu saat ini ke permintaan.
‫Jadi kita cukup mendefinisikan properti
‫pada objek permintaan yang disebut waktu permintaan.
‫Dan kemudian atur ke tanggal
‫baru,
‫yang pada dasarnya diterjemahkan menjadi sekarang.
‫Dan kemudian kita dapat menggunakan fungsi tanggal yang sangat berguna,
‫yang dipanggil ke string ISO, yang kemudian akan
‫mengubahnya menjadi string yang bagus dan
‫mudah dibaca untuk kita.
‫Jadi, mari kita berpura-pura memiliki beberapa pengendali
‫rute yang benar-benar membutuhkan
‫informasi tentang kapan tepatnya permintaan itu terjadi.
‫Jadi solusi yang sangat sederhana adalah
‫dengan menambahkan sesuatu seperti ini ke permintaan menggunakan middleware.
‫Baiklah?
‫Sekarang, jangan lupa,
‫tentu saja, untuk memanggil middleware berikutnya di tumpukan, oke.
‫Jadi sekarang, kami memiliki permintaan, waktu untuk semua permintaan.
‫Jadi kita sekarang dapat menggunakan beberapa pengendali rute
‫di sini, misalnya, (bergumam) agar semua tur dapat dengan
‫mudah mencatatnya untuk kita ke konsol.
‫Jadi konsol dot log, dan itu sebenarnya meminta waktu.
‫Oke, atau kami bahkan dapat mengirimkan ini sebagai tanggapan juga.
‫Biarkan saya menguji itu.
‫Dan sebut saja yang
‫ini diminta pada dan req dot request time.
‫Itu dia.
‫Jadi, ya, mari kita lanjutkan dan cari tahu yang ini.
‫Jadi middleware kami benar, kan?
‫Ya, jadi kita panggil berikutnya, setelah selesai, jadi mari
‫kita uji ini sekarang.
‫Ingat itu di dapatkan semua tur.
‫Dan ketika kita kembali sekarang, atau ketika kita naik,
‫yah, seharusnya itu benar-benar ada di sini.
‫Jadi, apa yang salah di sini?
‫Anda lihat
‫di sini, kami sebenarnya baru saja mencatat
‫sebuah fungsi dan ya, tentu saja, kami tidak benar-benar memanggil dua string ISO.
‫Jadi itu adalah metode yang harus kita sebut.
‫Jadi simpan saja, coba lagi.
‫Dan sekarang kami telah meminta pada dan kemudian tanggal hari ini.
‫Begitu sempurna.
‫Itu berasal dari middleware kami.
‫Jadi hanya karena kami menambahkan properti itu ke permintaan kami.
‫Besar.
‫Jadi saya harap dengan itu, Anda membuat langkah maju
‫yang bagus untuk benar-benar memahami cara kerja aplikasi Node, cara
‫kerja middleware,
‫cara kerja seluruh siklus respons permintaan, karena
‫itu benar-benar akan membuat semua perbedaan
‫saat Anda menulis aplikasi Anda sendiri.