如何从多部分表单数据中获取 Node JS 中间件中的请求主体?
How to get request body in Node JS middle ware from multi-part form data?
我知道使用以下方法很容易获得请求的正文:
app.post('/api', (req, res) => { conosle.log(req.body); })
但是我的问题和上面的不一样。这是我的 index.js 文件(入口文件)。
const express = require('express');
const app = express();
const config = require('./config/config.js');
app.use(express.raw());
app.use(express.urlencoded({ extended: true }));
app.use((req, res, next) => {
console.log(req.body); **// here I am not getting req.body**
const routes_handler = require('./routes/index.js')(app, express, req);
next();
});
app.listen(config.SERVER.PORT, () => {
console.log("Server running at Port " + config.SERVER.PORT);
});
仅供参考,使用邮递员,我将请求作为表单数据传递。在表单中,还有一个字段作为文件类型(图片)。在处理 API 部分时,我使用 multer
并根据需要获取 req.body 。
但我只想知道如何在中间件块中获得 req.body,即
app.use((req, res, next) => {//HERE req.body })
我的POSTMAN简单请求如下:
请使用 multer 获取表单数据
var multer = require('multer');
var upload = multer();
app.use(upload.array());
简单地制作一个像这样的中间件功能:
const middleware = (req,res,next) =>{
console.log(req.body);
// all your multer logic here
}
并在你的 post 请求路由之前使用它,就像这样..
app.post('/' , middleware , (req,res,next) =>{
// all your api logic here
});
因为 body 仅在某些类型的 http 请求中可用,包括 post,put 而在 get 请求中不可用,因此您不会在这些请求中获得 console.log()。
尝试使用正文解析器。您可以从 express.js
中找到示例代码 here
const app = require('express')()
const bodyParser = require('body-parser')
const multer = require('multer')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(multer.array(), (req, res, next) => {
console.log(req.body);
const routes_handler = require('./routes/index.js')(app, express, req);
next();
});
我知道使用以下方法很容易获得请求的正文:
app.post('/api', (req, res) => { conosle.log(req.body); })
但是我的问题和上面的不一样。这是我的 index.js 文件(入口文件)。
const express = require('express');
const app = express();
const config = require('./config/config.js');
app.use(express.raw());
app.use(express.urlencoded({ extended: true }));
app.use((req, res, next) => {
console.log(req.body); **// here I am not getting req.body**
const routes_handler = require('./routes/index.js')(app, express, req);
next();
});
app.listen(config.SERVER.PORT, () => {
console.log("Server running at Port " + config.SERVER.PORT);
});
仅供参考,使用邮递员,我将请求作为表单数据传递。在表单中,还有一个字段作为文件类型(图片)。在处理 API 部分时,我使用 multer
并根据需要获取 req.body 。
但我只想知道如何在中间件块中获得 req.body,即
app.use((req, res, next) => {//HERE req.body })
我的POSTMAN简单请求如下:
请使用 multer 获取表单数据
var multer = require('multer');
var upload = multer();
app.use(upload.array());
简单地制作一个像这样的中间件功能:
const middleware = (req,res,next) =>{
console.log(req.body);
// all your multer logic here
}
并在你的 post 请求路由之前使用它,就像这样..
app.post('/' , middleware , (req,res,next) =>{
// all your api logic here
});
因为 body 仅在某些类型的 http 请求中可用,包括 post,put 而在 get 请求中不可用,因此您不会在这些请求中获得 console.log()。
尝试使用正文解析器。您可以从 express.js
中找到示例代码 hereconst app = require('express')()
const bodyParser = require('body-parser')
const multer = require('multer')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(multer.array(), (req, res, next) => {
console.log(req.body);
const routes_handler = require('./routes/index.js')(app, express, req);
next();
});