req.body 服务器端未定义
req.body undefined on server side
我正在开发在服务器端使用 node、express、mysql 的应用程序。我在 server.js 文件上编写了多个 API,当我尝试使用 Postman 访问这些 API 时,req.body 始终未定义。
这是我的 server.js 配置。
var express = require('express');
var mysql = require('mysql');
var cors = require('cors');
var bodyParser = require('body-parser');
var wrench = require("wrench");
var fs = require('fs');
var path = require("path");
var mkdirp = require('mkdirp');
var walk = require('walk');
var fse = require('fs-extra');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var crypto = require('crypto');
app.use(cors());
app.use(bodyParser.urlencoded({limit: '50mb',extended: false}));
app.use(bodyParser.json({limit: '50mb'}));
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'dbname'
});
connection.connect(function(err) {
if (!err) {
console.log("Database is connected ... \n\n");
} else {
console.log("Error connecting database ... \n\n");
}
});
app.post('/urlreq', function(req, res){
console.log(req.body);
}
app.listen(3000, function(){
console.log("Rest Demo Listening on port 3000");
});
当我尝试在 Postman 中发送正文时,req.body 在服务器端变空了。
您也可以用作中间件。也听一个端口。在您的代码中添加以下行 -
var app = express();
app.use(function(req, res, next) {
console.log('Current User:', req.body);
next();
});
app.post('/url', function(req,res){
console.log(req.body)
});
app.listen(3000, function(){
console.log('Express server listening on port 3000');
});
尝试添加:
var express = require('express');
var app = express();
[...]
// Last stack
app.listen(3000, function(){
console.log("Rest Demo Listening on port 3000");
});
如果您要发送 multipart/form-data
,它不起作用,因为 bodyparser
不处理这种体型。
在这种情况下,添加以下行应该可以解决问题:
app.use(multipartMiddleware);
形成docs:
multipart/form-data
is the default encoding a web form uses to transfer data
我正在开发在服务器端使用 node、express、mysql 的应用程序。我在 server.js 文件上编写了多个 API,当我尝试使用 Postman 访问这些 API 时,req.body 始终未定义。
这是我的 server.js 配置。
var express = require('express');
var mysql = require('mysql');
var cors = require('cors');
var bodyParser = require('body-parser');
var wrench = require("wrench");
var fs = require('fs');
var path = require("path");
var mkdirp = require('mkdirp');
var walk = require('walk');
var fse = require('fs-extra');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var crypto = require('crypto');
app.use(cors());
app.use(bodyParser.urlencoded({limit: '50mb',extended: false}));
app.use(bodyParser.json({limit: '50mb'}));
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'dbname'
});
connection.connect(function(err) {
if (!err) {
console.log("Database is connected ... \n\n");
} else {
console.log("Error connecting database ... \n\n");
}
});
app.post('/urlreq', function(req, res){
console.log(req.body);
}
app.listen(3000, function(){
console.log("Rest Demo Listening on port 3000");
});
当我尝试在 Postman 中发送正文时,req.body 在服务器端变空了。
您也可以用作中间件。也听一个端口。在您的代码中添加以下行 -
var app = express();
app.use(function(req, res, next) {
console.log('Current User:', req.body);
next();
});
app.post('/url', function(req,res){
console.log(req.body)
});
app.listen(3000, function(){
console.log('Express server listening on port 3000');
});
尝试添加:
var express = require('express');
var app = express();
[...]
// Last stack
app.listen(3000, function(){
console.log("Rest Demo Listening on port 3000");
});
如果您要发送 multipart/form-data
,它不起作用,因为 bodyparser
不处理这种体型。
在这种情况下,添加以下行应该可以解决问题:
app.use(multipartMiddleware);
形成docs:
multipart/form-data
is the default encoding a web form uses to transfer data