我正在尝试在Express中编写一个简单易懂的Hello World程序,它输出一些有关当前HTTP请求的基本数据.
对于POST请求,我想看看原始POST主体.
const express = require('express'); const app = express(); function handleRequest(req,res) { console.log('\n-- INCOMING REQUEST AT ' + new Date().toISOString()); console.log(req.method + ' ' + req.url); console.log(req.body); res.send('Hello World!'); } app.all('/*',(req,res) => handleRequest(req,res)); app.listen(3000,() => console.log('Example app listening on port 3000!'));
当我从Postman发出任何类型的POST请求时,req.body被设置为undefined.为什么req.body是空的?如何打印原始POST数据?我不需要POST主体的解析版本,只需要原始数据.
解决方法
为了阅读帖子请求的正文,你需要
body-parser.
如果您还需要解析multipart / form-data,则需要 multer.
如果您还需要解析multipart / form-data,则需要 multer.
在你安装它们之后:
const express = require('express'); const multer = require('multer'); const bodyParser = require('body-parser'); const upload = multer(); const app = express(); // create application/json parser app.use(bodyParser.json()); // create application/x-www-form-urlencoded parser app.use(bodyParser.urlencoded({ extended: false })); function handleRequest(req,res) { console.log('\n-- INCOMING REQUEST AT ' + new Date().toISOString()); console.log(req.method + ' ' + req.url); console.log(req.body); res.send('Hello World!'); } app.post('/*',upload.any(),res)); app.all('/*',() => console.log('Example app listening on port 3000!'));