‫Instruktur: Selamat datang kembali, sekarang sebelum kita masuk
‫jauh ke penanganan kesalahan yang sebenarnya, pertama-tama mari kita
‫tulis handler untuk rute yang tidak ditentukan.
‫Jadi pada dasarnya untuk rute yang belum kami
‫tetapkan handlernya.
‫Dan pertama-tama, kita perlu memulai aplikasi kita di
‫sini yang tidak kita hentikan setelah sesi debugging baru-baru ini.
‫Jadi MPM mulai.
‫Jadi mari kita tunggu koneksi database.
‫Ini dia, dan sekarang mari kita pergi ke Postman di sini dan mencoba
‫untuk mencapai rute yang belum kita definisikan.
‫Jadi saya akan melanjutkan, salin URL
‫ini di sini, baiklah,
‫dan sebagai contoh katakanlah
‫alih-alih
‫tur apiV1, kita akan mengatakan hanya api/tours.
‫Oke jadi dalam hal ini kita akan mendapatkan hasil
‫HTML ini, baiklah, jadi Express
‫secara otomatis mengirimkan kode HTML ini ke sini,
‫bersama dengan kode kesalahan 404 Not Found
‫jika tidak ada handler untuk rute yang diminta, oke.
‫Atau, kita juga bisa salah mengeja wisata di sini misalnya.
‫Jadi misalnya dalam hal ini kita masih
‫akan mendapatkan kesalahan yang sama.
‫Sekarang ada juga situasi lain yang jika
‫di sini setelah tur kita menentukan sesuatu yang lain,
‫katakan saja seperti ini.
‫Jadi mari kita lihat kesalahan yang kita dapatkan,
‫dan sekarang kita mendapatkan bahwa cast to object ID gagal.
‫Dan itu karena kami
‫sebenarnya memiliki rute yang menerima parameter ID di sini setelah tour/, kan.
‫Jadi MongoDB pada dasarnya mencoba menemukan dokumen
‫dengan ID ini, tetapi tidak dapat mengubahnya menjadi ID objek
‫MongoDB yang valid, oke.
‫Jadi sekali lagi itu adalah situasi yang berbeda, mari kita terus bekerja
‫dengan yang ini, jadi sekali lagi, di mana kita mendapatkan
‫kesalahan ini tetapi dalam bentuk HTML ini.
‫Sekarang karena kita melakukan API di
‫sini, tidak masuk akal untuk mengirim kembali HTML, kan, jadi
‫sekarang mari kita perbaiki ini dan pada dasarnya membuat
‫fungsi pegangan untuk semua rute yang tidak di-cache oleh router kita.
‫Oke, jadi mari kita kembali ke aplikasi kita di sini
‫dan membuka aplikasi. js.
‫Oke, begitulah kira-kira definisi dari
‫aplikasi Express kita.
‫Sekarang sebelum melakukan hal lain
‫mari kita singkirkan middleware ini yang tidak
‫lagi kita butuhkan.
‫Jadi kami hanya menggunakan ini di
‫sini untuk mendemonstrasikan konsep middleware, dan pada titik ini
‫kami tidak lagi membutuhkannya.
‫Baiklah sekarang bagaimana kita akan menerapkan pengendali
‫rute untuk rute yang tidak di-cache oleh pengendali
‫rute kita yang lain?
‫Jadi untuk melakukan itu, ingatlah bahwa
‫semua fungsi middleware ini dijalankan sesuai urutannya dalam kode.
‫Jadi idenya adalah jika kita memiliki permintaan
‫yang membuatnya menjadi titik ini di sini
‫dari kode kita, maka itu
‫berarti baik tourRouter maupun userRouter tidak dapat menyimpannya, oke.
‫Jadi jika kita menambahkan middleware di sini setelah router ini,
‫itu hanya akan tercapai lagi jika tidak ditangani oleh
‫router kita yang lain, oke.
‫Jadi mari kita lakukan itu, dan kemudian benar-benar memahami
‫cara kerjanya setelah diimplementasikan.
‫Jadi kami akan menerapkan pengendali rute, dan
‫kami katakan app.
‫dan sekarang metode HTTP yang
‫ingin kita tentukan rutenya.
‫Sekarang kita bisa menggunakan get here kan, jadi seperti yang kita lakukan
‫sebelumnya tapi lalu bagaimana dengan permintaan posting, atau
‫hapus, atau permintaan patch?
‫Anda kemudian harus menulis penangan untuk ini juga,
‫dan kami tidak menginginkan itu, kami hanya ingin
‫menangani semua rute, jadi semua URL, untuk semua kata kerja di sini
‫di penangan yang satu ini, oke.
‫Jadi di Express, kita bisa menggunakan app. semua.
‫Dan itu kemudian akan dijalankan untuk
‫semua kata kerja, Jadi semua metode HTTP, baiklah.
‫Selanjutnya kami menentukan URL, dan karena di
‫sini kami ingin menangani semua URL yang
‫tidak ditangani sebelum kami dapat menggunakan bintang di
‫sini, yang akan berdiri untuk semuanya, baiklah, dan sisanya
‫hanyalah fungsi middleware biasa , sama
‫seperti sebelumnya.
‫Jadi
‫permintaan, tanggapan, dan selanjutnya.
‫Oke, dan apa yang ingin kita lakukan di sini?
‫Kami hanya ingin mengirim kembali respons
‫dalam format JSON, jadi bukan HTML yang kami miliki saat ini.
‫Jadi res. status,
‫dan di sini mari kita atur 404, jadi
‫Tidak Ditemukan dan kemudian respons JSON, jadi seperti yang biasa
‫kita atur statusnya menjadi gagal.
‫Jadi hanya respons berformat berdekatan biasa.
‫Dan kemudian semacam pesan di sini, dan sebenarnya mari
‫kita buat string template di
‫sini, karena saya ingin meletakkan variabel di sana.
‫Jadi tidak bisa,
‫cari.
‫Dan kemudian kita bisa menggunakan req. originalUrl oke, jadi
‫itu properti yang kami miliki atas
‫permintaan yang sesuai dengan namanya, URL yang diminta,
‫baiklah.
‫Jadi tanggapan baru yang akan kita
‫kirim sekarang ini jauh lebih baik daripada
‫HTML yang kita terima sebelumnya, jadi sekarang mari kita uji itu.
‫Dan memang, sekarang kami mendapatkan pesan kesalahan JSON kembali di sini.
‫Jadi di sini kami juga mendapatkan URL yang
‫diminta, dan memang itu
‫yang kami coba akses, tetapi tidak tersedia, oke, bagus.
‫Sekarang sekali lagi, mengapa ini berhasil?
‫Jadi sekali lagi idenya adalah jika kita dapat mencapai titik
‫ini di sini maka itu berarti siklus
‫respons permintaan belum selesai
‫pada titik ini dalam kode kita, kan.
‫Karena ingat bahwa middleware ditambahkan ke tumpukan
‫middleware dalam urutan yang didefinisikan di
‫sini dalam kode kita.
‫Jadi pada dasarnya kode ini di sini berjalan lebih
‫dulu, dan jika rutenya cocok di sini di tourRouter
‫kami, maka permintaan kami bahkan tidak akan pernah mencapai kode
‫ini, jadi ini tidak akan dieksekusi.
‫Jadi ini pada dasarnya harus menjadi bagian
‫terakhir setelah semua rute kita yang lain, baiklah.
‫Dan jika saya, hanya untuk mencoba
‫ini, sekarang letakkan ini tepat di atas
‫aplikasi kami maka Anda akan melihat bahwa apa pun permintaan
‫yang akan kami lakukan, kami akan selalu mendapatkan respons yang sama.
‫Benar, jadi mari kita
‫uji itu, dan memang sekarang kita mendapatkan pesan
‫kesalahan JS, dan itu karena
‫semua permintaan sekarang mencapai pengendali rute ini di sini,
‫dan itu benar-benar cocok karena ini adalah permintaan GET, yang merupakan bagian
‫dari semua kata kerja, benar, dan lalu semua rute, jadi semua
‫URL di-cache di sini, dan tentu saja
‫menangani URL yang baru saja kita lakukan di sini.
‫Dan hal yang sama tentu saja, misalnya untuk menghapus tur.
‫Jadi hal yang sama akan terjadi kita
‫akan selalu mendapatkan respon yang
‫sama, baiklah.
‫Jadi mari kita kembalikan, tapi
‫ini hanya untuk mendemonstrasikan bagaimana dan mengapa ini
‫berhasil, oke.
‫Hebat jadi ini adalah bagian penting untuk membuat API
‫kita sedikit lebih ramah pengguna, tapi selanjutnya mari kita
‫mulai belajar tentang penanganan kesalahan yang sebenarnya.