สิ่งที่มีการเปลี่ยนแปลงอีกครั้งเริ่มต้นเอ็กซ์เพรส 4.16.0ตอนนี้คุณสามารถใช้express.json()
และexpress.urlencoded()
เช่นเดียวกับในเอ็กซ์เพรส 3.0
สิ่งนี้แตกต่างจากการเริ่มใช้Express 4.0 ถึง 4.15 :
$ npm install --save body-parser
แล้ว:
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
ส่วนที่เหลือเป็นเหมือนในExpress 3.0 :
ก่อนอื่นคุณต้องเพิ่มมิดเดิลแวร์เพื่อวิเคราะห์ข้อมูลโพสต์ของเนื้อหา
เพิ่มหนึ่งหรือทั้งสองบรรทัดของรหัสต่อไปนี้:
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
จากนั้นในตัวจัดการของคุณให้ใช้req.body
วัตถุ:
// assuming POST: name=foo&color=red <-- URL encoding
//
// or POST: {"name":"foo","color":"red"} <-- JSON encoding
app.post('/test-page', function(req, res) {
var name = req.body.name,
color = req.body.color;
// ...
});
โปรดทราบว่าexpress.bodyParser()
ไม่แนะนำให้ใช้
app.use(express.bodyParser());
... เทียบเท่ากับ:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
มีข้อกังวลด้านความปลอดภัยอยู่express.multipart()
จึงควรเพิ่มการสนับสนุนสำหรับประเภทการเข้ารหัสเฉพาะที่คุณต้องการอย่างชัดเจน ถ้าคุณทำเช่นการเข้ารหัส multipart จำเป็น (เพื่อสนับสนุนการอัปโหลดไฟล์ตัวอย่าง) แล้วคุณควรอ่านหนังสือเล่มนี้
bodyParser()
คำตอบที่นี่ควรอ่านคำตอบของ