Saya tidak mengerti mengapa kami membutuhkan body-parser
aplikasi Express, karena kami bisa mendapatkan data tanpa menggunakan body-parser
. Dan apa fungsinya sebenarnya dan bagaimana?
node.js
express
body-parser
jiten
sumber
sumber
req.body
req.headers
(array), Anda dapat membaca isi paket http seperti yangreq.body
dijelaskan oleh @CleanCrispCode dan Anda dapat membaca sebagai parameter kuerireq.query.variable
, ini membantu karena express secara otomatis mengubah permintaan dalam javascript bendares.body
tanpa seluruh aliran buffered menjadi yangres.body
pertama.Jawaban:
Untuk menangani
HTTP POST
permintaan di Express.js versi 4 dan di atas, Anda perlu menginstal modul middleware yang disebutbody-parser
.body-parser
ekstrak seluruh bagian tubuh dari aliran permintaan yang masuk dan paparkan padareq.body
.Middleware adalah bagian dari Express.js sebelumnya tetapi sekarang Anda harus menginstalnya secara terpisah.
body-parser
Modul ini mem-parsing data yang disandikan JSON, buffer, string, dan URL yang dikirimkan menggunakanHTTP POST
permintaan. Instalbody-parser
menggunakan NPM seperti yang ditunjukkan di bawah ini.sunting di 2019-april-2: di [email protected] middleware body-parser yang dibundel dengan express. untuk lebih jelasnya lihat ini
sumber
urlencoded()
danjson()
sebenarnya pabrik middleware yang mengembalikan fungsi middleware yang memanggilnext()
Ya kita bisa bekerja tanpanya
body-parser
. Ketika Anda tidak menggunakannya, Anda mendapatkan permintaan mentah, dan tubuh serta header Anda tidak berada di objek root dari parameter permintaan. Anda harus memanipulasi semua bidang secara individual.Atau Anda dapat menggunakannya
body-parser
, karena tim ekspres memeliharanya.Apa yang bisa dilakukan oleh body-parser untuk Anda: Ini menyederhanakan permintaan.
Cara menggunakannya: Berikut ini contohnya:
Install
npm install body-parser --save
Ini cara menggunakan body-parser di express:
Tautan.
https://github.com/expressjs/body-parser .
Dan kemudian Anda bisa mendapatkan tubuh dan header di objek permintaan root. Contoh
sumber
Jawabannya di sini menjelaskannya dengan sangat terperinci dan cemerlang, jawabannya berisi:
Anda dapat merujuk ke body-parser github untuk membaca dokumentasinya, berisi informasi tentang cara kerjanya.
sumber
Mari kita coba untuk menjaga ini paling tidak teknis.
Katakanlah Anda mengirim data formulir html ke server node-js yaitu Anda membuat permintaan ke server. File server akan menerima permintaan Anda di bawah objek permintaan. Sekarang dengan logika, jika Anda konsol mencatat objek permintaan ini di file server Anda, Anda akan melihat data formulir Anda di suatu tempat di dalamnya, yang dapat diekstraksi kemudian, tetapi whoa! kamu sebenarnya tidak!
Jadi, di mana data kami? Bagaimana kami mengekstraknya jika tidak hanya ada dalam permintaan saya.
Penjelasan sederhana untuk ini adalah http mengirimkan data formulir Anda dalam potongan-potongan yang dimaksudkan untuk dirakit ketika mereka mencapai tujuan mereka. Jadi bagaimana Anda mengekstrak data Anda.
Tapi, mengapa perlu kesusahan ini setiap kali secara manual mengurai data Anda untuk potongan dan merakitnya. Gunakan sesuatu yang disebut "body-parser" yang akan melakukan ini untuk Anda.
body-parser mem-parsing permintaan Anda dan mengubahnya menjadi format yang dengannya Anda dapat dengan mudah mengekstrak informasi relevan yang mungkin Anda butuhkan.
Misalnya, katakanlah Anda memiliki formulir pendaftaran di frontend Anda. Anda mengisinya, dan meminta server untuk menyimpan detailnya di suatu tempat.
Mengekstrak nama pengguna dan kata sandi dari permintaan Anda sesederhana di bawah ini jika Anda menggunakan body-parser.
Jadi pada dasarnya, body-parser mem-parsing permintaan masuk Anda, mengumpulkan potongan-potongan yang berisi data formulir Anda, lalu membuat objek tubuh ini untuk Anda dan mengisinya dengan data formulir Anda.
sumber
Itu mem-parsing badan permintaan HTTP. Ini biasanya diperlukan ketika Anda perlu tahu lebih dari sekadar URL yang Anda tekan, khususnya dalam konteks permintaan HTTP POST atau PUT PATCH di mana informasi yang Anda inginkan ada di dalam tubuh.
Pada dasarnya ini adalah middleware untuk mem-parsing JSON, teks biasa, atau hanya mengembalikan objek Buffer mentah untuk Anda tangani sesuai kebutuhan.
sumber
Untuk mendapatkan akses ke data postingan kita harus menggunakan
body-parser
. Pada dasarnya apabody-parser
yang memungkinkan express untuk membaca tubuh dan kemudian menguraikannya menjadiJson
objek yang bisa kita pahami.sumber
Ini semua masalah kenyamanan.
Pada dasarnya, jika pertanyaannya adalah 'Apakah kita perlu menggunakan
body-parser
?' Jawabannya adalah tidak'. Kita dapat menghasilkan informasi yang sama dari klien-pasca-permintaan menggunakan rute yang lebih berputar yang umumnya akan kurang fleksibel dan akan meningkatkan jumlah kode yang harus kita tulis untuk mendapatkan informasi yang sama.Ini sama dengan bertanya, "Apakah kita perlu menggunakan
express
untuk memulainya?" Sekali lagi, jawabannya tidak ada, dan sekali lagi, benar-benar semuanya berujung pada menyelamatkan kita dari kerumitan menulis lebih banyak kode untuk melakukan hal-hal dasar yang mengekspresikan dilengkapi dengan 'built-in'.Di permukaan -
body-parser
buatlah lebih mudah untuk mendapatkan informasi yang terkandung dalam permintaan klien dalam berbagai format alih-alih membuat Anda menangkap aliran data mentah dan mencari tahu dalam format apa informasi itu berada, apalagi secara manual memilah informasi itu menjadi data yang bisa digunakan.sumber
Memahami Badan Permintaan
Memahami body-parser
Sesuai dokumentasinya
Seperti yang Anda lihat pada contoh pertama, kami harus mengurai aliran permintaan masuk secara manual untuk mengekstrak tubuh. Ini menjadi sedikit membosankan ketika ada beberapa bentuk data dari tipe yang berbeda. Jadi kami menggunakan paket body-parser yang melakukan semua tugas ini di bawah tenda.
Ini menyediakan empat modul untuk mengurai berbagai jenis data
Setelah memiliki isi mentah body-parser akan menggunakan salah satu dari strategi di atas (tergantung pada middleware yang Anda putuskan untuk digunakan) untuk mengurai data. Anda dapat membaca lebih lanjut tentang mereka dengan membaca dokumentasinya.
Setelah mengatur
req.body
ke badan yang diuraikan, body-parser akan memanggilnext()
untuk memanggil middleware berikutnya di tumpukan, yang kemudian dapat mengakses data permintaan tanpa harus memikirkan bagaimana cara unzip dan menguraikannya.sumber