‫Jonas: Sekarang mari kita implementasikan pengendali
‫rute untuk permintaan posting sehingga kita benar-benar dapat menambahkan Natour ke kumpulan
‫data kita.
‫Jadi seperti halnya handler permintaan doGET(),
‫mari kita mulai dengan menambahkan rute baru.
‫Jadi aplikasi. post kali ini, dan
‫ingat sekarang kita menggunakan post jadi metode
‫post disini, karena itulah jenis request yang ingin kita tangani.
‫Jadi request yang dibuat dengan kata kerja http post kan?
‫V1
‫dan tur.
‫Seperti yang kita bicarakan di kuliah REST
‫API, URL sebenarnya persis sama.
‫Tidak masalah jika kita ingin mendapatkan semua tur,
‫atau jika kita ingin membuat tur
‫baru, URL-nya sama persis.
‫Kemudian satu-satunya hal yang berubah adalah metode http yang
‫kami gunakan untuk melakukan permintaan ini.
‫Untuk mendapatkan semua tur dan pos untuk membuat tur baru,
‫maka di sini, fungsi panggilan balik khas
‫kami di mana kami mendapatkan akses
‫ke permintaan dan ke objek respons sehingga kami bisa mendapatkan
‫beberapa data dari permintaan dan mengirim kembali yang sesuai tanggapan.
‫Sekarang ingat bahwa dengan permintaan
‫posting, kita dapat mengirim data dari klien ke server, bukan?
‫Data ini kemudian idealnya tersedia berdasarkan permintaan.
‫Objek permintaan lagi adalah apa yang menyimpan semua data,
‫semua informasi, tentang permintaan yang telah dilakukan.
‫Jika permintaan itu berisi beberapa data
‫yang dikirim, data itu harus ada di permintaan, bukan?
‫Sekarang di luar kotak, Express tidak menempatkan data tubuh itu
‫pada permintaan, dan agar data itu tersedia, kita harus
‫menggunakan sesuatu yang disebut middleware.
‫Kita akan berbicara dengan sangat rinci tentang middleware
‫dalam beberapa kuliah, tetapi untuk saat
‫ini, agar ini berhasil, kita
‫perlu menyertakan middleware sederhana di sini di bagian atas file.
‫Jadi sebenarnya, di sini.
‫Apa yang perlu kita lakukan, adalah mengatakan app. gunakan kemudian ekspresikan.
‫json Oke, dan hanya itu.
‫Jadi sekali lagi, ini [ekspresikan. json] di sini adalah middleware.
‫Dan middleware pada dasarnya adalah
‫fungsi yang dapat memodifikasi data permintaan yang masuk.
‫Disebut middleware karena berdiri di
‫antara, jadi di tengah permintaan dan respons.
‫Ini hanyalah langkah yang dilalui
‫permintaan saat sedang diproses.
‫Dan langkah yang dilalui permintaan, dalam
‫contoh ini adalah data dari isi ditambahkan ke dalamnya.
‫Jadi itu ditambahkan ke objek permintaan dengan
‫menggunakan middleware ini.
‫Kami menggunakan aplikasi. gunakan untuk menggunakan middleware seperti ini.
‫Dan sekali lagi, kita akan berbicara
‫lebih banyak tentang middleware nanti di bagian ini.
‫Untuk saat ini, ketahuilah bahwa inilah cara kami menggunakan middleware.
‫Semua detailnya akan menyusul kemudian.
‫Jadi untuk saat ini, sebagai permulaan, saya
‫ingin benar-benar menunjukkan kepada Anda data dari badan di konsol, hanya
‫untuk memverifikasi bahwa itu benar-benar berfungsi, jadi req. tubuh.
‫Sekali lagi, body adalah properti
‫yang akan tersedia berdasarkan permintaan, karena kami
‫menggunakan middleware itu beberapa saat yang lalu.
‫Jadi kami ingin log[req. body] ke konsol dan
‫kemudian kita juga perlu mengirim kembali tanggapan.
‫Jadi res. kirim dan untuk saat ini hanya beberapa pemegang tempat di sini.
‫Cukup 'Selesai' oke.
‫Jadi kita
‫selalu perlu mengirim kembali sesuatu untuk
‫menyelesaikan apa yang disebut siklus permintaan/tanggapan, yang lagi-lagi akan kita
‫pelajari lebih lanjut nanti di bagian ini.
‫Jadi sekarang mari kita
‫uji ini, dan buat permintaan baru untuk postingan.
‫Sekarang di sini di tukang pos, kita
‫bisa melakukan sesuatu yang sangat bagus yaitu menyimpan semua permintaan ini.
‫Saya akan mulai dengan membuat
‫koleksi baru, yang akan saya sebut Natours.
‫Koleksi baru.
‫Sekarang saya akan menyimpan permintaan ini di dalam koleksi itu.
‫Jadi yang ini adalah Dapatkan semua Tur.
‫Masukkan ke Natours, dan simpan.
‫Jadi sekarang kami memiliki permintaan Dapatkan kami di sini.
‫Nah sekarang mari kita salin yang ini di sini,
‫buat yang baru.
‫Jadi yang ini adalah permintaan posting.
‫Sebelum melakukannya, sebenarnya
‫saya juga akan menyimpannya langsung ke koleksi ini.
‫Jadi Buat Tur Baru.
‫Di sini, di sisi kiri, kami sekarang memiliki kedua permintaan kami.
‫Sekarang mari kita tentukan tubuh kita di sini, jadi data
‫yang pada dasarnya ingin kita kirim ke server.
‫Kami datang ke sini ke Body, dan ada berbagai cara
‫untuk melakukannya sekarang, tetapi yang paling
‫mudah adalah dengan mengatakan, Raw, lalu Application JSON.
‫Yang harus kita lakukan di sini pada dasarnya adalah menentukan beberapa
‫JSON, dan itu kemudian akan dikirim ke server.
‫Jadi hal pertama yang ingin kami tentukan
‫adalah nama Tur, dan
‫Anda ingat bahwa di JSON, semuanya harus dalam tanda
‫kutip dan benar-benar tanda kutip ganda, bukan sembarang tanda kutip.
‫Biarkan saya menyebutnya Tur
‫Uji, dan mari kita lihat apa lagi yang kita miliki dalam data tur.
‫Jadi kita punya nama, kita punya durasi, dan
‫kita sebut saja tingkat kesulitannya.
‫Jadi saya tidak akan merinci semua ini karena
‫itu memakan terlalu banyak waktu.
‫Anggap saja
‫durasinya 10 hari, dan kesulitannya mudah.
‫Bahwa sebagai tubuh kita akan dikirimkan ke server.
‫Jadi itu diuji sekarang, tekan kirim dan di sini kami
‫mendapatkan kembali respons kami, yang selesai, ingat.
‫Berikut adalah tanggapan yang kami kirimkan, jadi selesai.
‫Dan Anda lihat di sini di konsol
‫kami, kami sekarang memiliki objek yang
‫pada dasarnya adalah JSON yang kami kirimkan ke tubuh kami, bukan?
‫Sangat sempurna, itu berhasil!
‫Ini bukan lagi JSON, seperti yang Anda lihat.
‫Ini benar-benar objek JavaScript.
‫Hanya untuk menunjukkan kepada Anda bahwa kami
‫benar-benar membutuhkan middleware, mari beri komentar yang satu ini.
‫Kirim lagi.
‫Sekarang tidak lagi memiliki permintaan. tubuh, kan?
‫Itu sebabnya sekarang tidak terdefinisi, karena tidak ada lagi.
‫Simpan, kirim permintaan kami
‫lagi, dan sekarang sudah kembali.
‫Kami telah menyiapkan rute
‫pos kami, itu berfungsi sekarang dan kami juga mendapatkan akses ke isi,
‫jadi yang ingin kami lakukan sekarang adalah benar-benar
‫menyimpan data itu ke dalam file JSON tur sederhana ini.
‫Kami sebenarnya akan memodifikasi file ini, sehingga data
‫disimpan ke database fiksi kami di sini.
‫File JSON ini sekarang berfungsi sebagai
‫database fiksi kami.
‫Jadi sekarang mari kita urus itu.
‫Aku akan pergi ke depan dan komentar yang satu ini.
‫Jadi mari kita mulai.
‫Hal pertama yang perlu
‫kita lakukan adalah mencari tahu id dari objek baru.
‫Ingat, sekali lagi dalam
‫kuliah tentang REST API, adalah ketika kita membuat objek baru, kita
‫tidak pernah menentukan id objek tersebut.
‫Database biasanya menangani itu.
‫Objek baru biasanya secara otomatis mendapatkan id barunya.
‫Nah dalam kasus ini, kita tidak memiliki database apapun, jadi yang
‫akan kita lakukan adalah mengambil id
‫dari objek terakhir dan kemudian menambahkan +1 ke sana.
‫Mari kita lakukan dengan sangat cepat, dan itu hanya
‫JavaScript dasar.
‫Jadi baru itu tur, kan?
‫Ingat bahwa wisata, kami sudah memiliki data
‫dalam variabel wisata ini.
‫Jadi itu adalah array
‫dari semua objek wisata, dan jadi kami ingin
‫mendapatkan yang terakhir, yaitu wisata. panjang - 1, maka properti
‫id itu dan kami menambahkan +1.
‫Jadi itu adalah id baru.
‫Selanjutnya, kami membuat tur baru,
‫dan tur itu pada
‫dasarnya adalah badan yang kami kirim ditambah id baru yang baru saja kami buat.
‫Jadi kita bisa menggunakan objek. assign, yang pada dasarnya memungkinkan kita
‫untuk membuat objek baru dengan
‫menggabungkan dua objek yang sudah ada menjadi satu.
‫Jadi objek
‫pertama adalah id=newId, dan
‫kemudian kita ingin
‫request. tubuh.
‫Kami juga bisa melakukan req. tubuh. id=newId, tetapi
‫saya tidak ingin mengubah objek tubuh asli.
‫Aku hanya meninggalkannya seperti ini.
‫Itu adalah tur baru, dan sekarang
‫yang ingin kami lakukan adalah mendorong tur ini ke dalam rangkaian tur, bukan?
‫Jadi wisata, adalah rangkaian dari sembilan wisata yang
‫kami miliki saat ini.
‫Kami mengatakan dorong dan dorong tur baru di sana.
‫Itu adalah array yang sekarang memiliki tur baru di dalamnya, tetapi tentu
‫saja sekarang kita harus mempertahankannya ke dalam file.
‫Itu sekali lagi cukup mudah bagi Anda
‫saat ini, jadi gunakan fs. menulis berkas.
‫Jadi mana yang harus kita gunakan?
‫writeFile atau writeFileSync?
‫Jawaban untuk itu sangat sederhana.
‫Kami berada di dalam fungsi panggilan balik, yang
‫akan berjalan di loop acara.
‫Kami tidak akan pernah bisa memblokir loop acara.
‫Apa yang akan kita lakukan adalah
‫menggunakan writeFile dan tidak menyinkronkan yang ini.
‫Kami ingin meneruskan fungsi panggilan
‫balik yang akan diproses di latar belakang
‫dan segera setelah siap, itu akan
‫menempatkan acaranya di
‫salah satu antrian loop acara, yang kemudian akan ditangani segera setelah loop
‫acara melewati fase itu.
‫Ingat itu dari kuliah Event Loop?
‫Bagaimanapun, mari kita ambil nama file dari
‫atas sini, karena kami akan benar-benar menimpa file ini sehingga
‫ketika kami me-restart server ini, itu akan
‫ada di sana.
‫Jadi di
‫mana- di sini.
‫Jadi itu adalah file tempat kita ingin menulis.
‫Data yang ingin kita tulis, yaitu tour, dan
‫kemudian fungsi call-back kita, yang dalam
‫hal ini hanya error.
‫Di sini saya baru menyadari
‫bahwa kita juga perlu merangkai objek ini, bukan?
‫Kami ingin json dalam
‫file JSON ini, dan ini sekarang
‫hanyalah objek JavaScript biasa dan normal sehingga kami perlu mengonversinya.
‫Tapi itu lagi sederhana, sudah melakukan itu.
‫JSON. merangkai objek.
‫Apa yang ingin kita lakukan segera setelah file ditulis?
‫Nah, yang biasanya kita lakukan adalah mengirimkan objek yang baru
‫dibuat sebagai respon.
‫Mari kita lakukan itu.
‫Jadi respon,
‫dan kemudian seperti biasa, kita mulai dengan menentukan kode status.
‫Dalam hal ini, itu tidak akan menjadi 200, tetapi 201.
‫Jadi 201 yang artinya diciptakan.
‫200 singkatan oke, 201
‫singkatan dibuat, itulah yang terjadi di sini.
‫Kami membuat sumber daya baru di server.
‫Jadi JSON, dan itu terus menambahkan pesan ini di sini.
‫Statusnya lagi, sukses.
‫Saya tidak menggunakan properti hasil di sini,
‫yang kita miliki sebelumnya, karena sekarang saya hanya mengirimkan kembali satu hasil.
‫Data adalah amplop kami di sini.
‫Tur adalah tur baru.
‫Itu dia!
‫Simpan di
‫sini, dan format itu, atau kodekan sedikit.
‫Mari tambahkan lebih banyak ruang di sini.
‫Saya pikir kami siap untuk mencobanya sekarang.
‫Kami sebenarnya dapat membuat tur baru, menggunakan data ini di sini.
‫Jadi sesuaikan Test Tour ini, dan dengan data ini,
‫dan mari kita tunggu.
‫Apa yang terjadi disini?
‫Mari kita lihat, ah oke.
‫Kami memiliki masalah yang kami mengirim tanggapan dua kali pada dasarnya.
‫Jadi kami mengirim tanggapan dengan JSON, dan
‫sekali lagi dengan . mengirim.
‫Itu tidak diperbolehkan.
‫Itu sebenarnya mengapa kami mendapatkan kesalahan ini di sini.
‫Jadi sebenarnya bagus bahwa itu terjadi di sini, sehingga Anda tahu
‫apa artinya kesalahan standar di sini.
‫HTTP_HEADERS_SENT tidak dapat menyetel tajuk
‫setelah dikirim ke klien.
‫Itu terjadi ketika Anda mencoba mengirim dua tanggapan.
‫Kita perlu menyingkirkan itu.
‫Ya, itu satu-satunya kesalahan yang kami miliki.
‫Itu sekarang harus memperbaikinya.
‫Cobalah.
‫Dan memang, ini dia.
‫Jadi kami memiliki id
‫kami 10, yang kode kami buat untuk kami, dan kemudian seluruh
‫tur yang persis data yang kami kirim sebagai badan dalam permintaan kami.
‫Sekarang masalahnya, ketika kami mendapatkan semua tur
‫di sini, itu belum akan muncul.
‫Jika kita turun ke sini, sebenarnya
‫sudah ada di sini.
‫Kami memiliki yang dari sebelumnya, jadi ketika kami mengalami kesalahan
‫itu, itu sebenarnya juga membuat tur ini di sini.
‫Kemudian tentunya tour yang kita buat dengan id 10.
‫Jadi tur ini persis seperti yang
‫dibuat saat ini.
‫Jika kita lakukan sekarang, Test Tour 2, dengan durasi hanya 5.
‫Mari kita coba yang ini, dan jika saya mendapatkan semua tur, maka itu akan
‫muncul di sini juga.
‫Saya katakan di awal tidak akan berfungsi, sehingga tidak langsung muncul,
‫karena ini hanya
‫berfungsi jika kita me-restart server.
‫File ini, tour-simple.
‫File json tempat tur kami
‫berasal, hanya dibaca di awal saat kami memulai server.
‫Sekarang masalahnya adalah setiap kali kita menyimpan sesuatu ke file JSON
‫ini, itu juga akan memuat ulang server.
‫Biarkan saya membuktikannya kepada Anda, jadi jika saya menekan save
‫sekarang, lihat apa yang terjadi di sini.
‫Jadi saya menyimpannya, dan Anda melihat bahwa
‫di sini server memulai ulang.
‫Itu juga memformat kode, karena lebih cantik.
‫Tetapi yang penting di sini, apakah kode ini diperbarui.
‫Itu sebabnya setiap kali kami menyimpan sesuatu di
‫sini dengan API kami,
‫itu akan segera memuat ulang server dan akan memuat ulang
‫konten dari file ke dalam tur, dan kami kemudian dapat langsung membacanya.
‫Itu sebabnya kami memiliki
‫akses langsung ke semua tur yang baru dibuat.
‫Masuk akal?
‫Nah jika
‫belum, silahkan langsung saja ajukan pertanyaan Anda, dan tentunya bagian Q&A kan?