在Express中访问原始POST数据

我正在尝试在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!'));

当我关闭来自邮递员的任何类型的POST请求时,req.body设置为undefined。为什么是req.body空的?如何打印原始POST数据?我不需要POST正文的解析版本,只需原始数据即可。

回答:

为了读取发布请求的正文,您需要body-parser。

如果您还需要解析multipart / form-

data,则需要multer。

在npm安装它们之后:

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(), (req, res) => handleRequest(req, res));

app.all('/*', (req, res) => handleRequest(req, res));

app.listen(3000, () => console.log('Example app listening on port 3000!'));

以上是 在Express中访问原始POST数据 的全部内容, 来源链接: utcz.com/qa/407844.html

回到顶部