Javascript 使用ExpressJS的POST请求为空
当我对服务器的路由执行POST请求时,Javascript 使用ExpressJS的POST请求为空,javascript,node.js,express,Javascript,Node.js,Express,当我对服务器的路由执行POST请求时,request.body为空。我使用body解析器来获取JSON数据。我做错了什么 在\u saveTicket功能中,我有console.log来显示所有body请求参数。当我执行POST请求时,request.body为空 我需要什么来自动解析它 server.js /** * Declaration **/ var express = require('express'), database = require('./
request.body
为空。我使用body解析器来获取JSON数据。我做错了什么
在\u saveTicket
功能中,我有console.log
来显示所有body请求参数。当我执行POST请求时,request.body
为空
我需要什么来自动解析它
server.js
/**
* Declaration
**/
var express = require('express'),
database = require('./config/database.js'),
morgan = require('morgan'),
port = 2559,
bodyPar = require('body-parser'),
methodOv = require('method-override'),
mongoose = require('mongoose'),
fsr = require('file-stream-rotator'),
logDirectory = __dirname + '/log',
favicon = require ('serve-favicon');
app = express();
/**
* DB Connection
**/
mongoose.connect(database.mongo);
/**
* Api definition
**/
var accessLogStream = fsr.getStream({
date_format: 'YYYYMMDD',
filename: logDirectory + '/access-%DATE%.log',
frequency: 'daily',
verbose: false
})
app.use(express.static(__dirname + '/public'));
app.use(morgan('combined', {stream: accessLogStream}));
app.use(bodyPar.urlencoded({'extended':'true'}));
app.use(bodyPar.json());
app.use(bodyPar.json({ type: 'application/vnd.api+json' }));
app.use(methodOv('X-HTTP-Method-Override'));
app.use(favicon(__dirname + '/public/images/favicon.ico'));
/**
* Routes section
**/
require('./routes/ticket.js')(app);
/**
* Starting server
**/
app.listen (port)
console.log ("Listening on port: " + port);
var mongoose = require('mongoose');
var TicketSchema = new mongoose.Schema({
title: String,
description: String
}, {versionKey: false});
module.exports = mongoose.model('Ticket', TicketSchema, 'Ticket');
var Ticket = require('../models/ticket');
module.exports = function(app){
_getAllTickets = function(req, res){
var query = Ticket.find().lean();
query.exec(function(err, lst){
if(err)
res.send(err);
res.json(lst);
});
};
_saveTicket = function(req, res){
console.log(req.body);
var tckt = new Ticket({
title: req.body.title,
description: req.body.description
});
tckt.save(function(err){
if(!err)
console.log('Ticket creation successful. ');
else
console.log('ERROR: ' + err);
});
res.send(tckt);
};
app.get('/api/tickets/', _getAllTickets);
app.post('/api/tickets/', _saveTicket);
}
model/ticket.js
/**
* Declaration
**/
var express = require('express'),
database = require('./config/database.js'),
morgan = require('morgan'),
port = 2559,
bodyPar = require('body-parser'),
methodOv = require('method-override'),
mongoose = require('mongoose'),
fsr = require('file-stream-rotator'),
logDirectory = __dirname + '/log',
favicon = require ('serve-favicon');
app = express();
/**
* DB Connection
**/
mongoose.connect(database.mongo);
/**
* Api definition
**/
var accessLogStream = fsr.getStream({
date_format: 'YYYYMMDD',
filename: logDirectory + '/access-%DATE%.log',
frequency: 'daily',
verbose: false
})
app.use(express.static(__dirname + '/public'));
app.use(morgan('combined', {stream: accessLogStream}));
app.use(bodyPar.urlencoded({'extended':'true'}));
app.use(bodyPar.json());
app.use(bodyPar.json({ type: 'application/vnd.api+json' }));
app.use(methodOv('X-HTTP-Method-Override'));
app.use(favicon(__dirname + '/public/images/favicon.ico'));
/**
* Routes section
**/
require('./routes/ticket.js')(app);
/**
* Starting server
**/
app.listen (port)
console.log ("Listening on port: " + port);
var mongoose = require('mongoose');
var TicketSchema = new mongoose.Schema({
title: String,
description: String
}, {versionKey: false});
module.exports = mongoose.model('Ticket', TicketSchema, 'Ticket');
var Ticket = require('../models/ticket');
module.exports = function(app){
_getAllTickets = function(req, res){
var query = Ticket.find().lean();
query.exec(function(err, lst){
if(err)
res.send(err);
res.json(lst);
});
};
_saveTicket = function(req, res){
console.log(req.body);
var tckt = new Ticket({
title: req.body.title,
description: req.body.description
});
tckt.save(function(err){
if(!err)
console.log('Ticket creation successful. ');
else
console.log('ERROR: ' + err);
});
res.send(tckt);
};
app.get('/api/tickets/', _getAllTickets);
app.post('/api/tickets/', _saveTicket);
}
路线/ticket.js
/**
* Declaration
**/
var express = require('express'),
database = require('./config/database.js'),
morgan = require('morgan'),
port = 2559,
bodyPar = require('body-parser'),
methodOv = require('method-override'),
mongoose = require('mongoose'),
fsr = require('file-stream-rotator'),
logDirectory = __dirname + '/log',
favicon = require ('serve-favicon');
app = express();
/**
* DB Connection
**/
mongoose.connect(database.mongo);
/**
* Api definition
**/
var accessLogStream = fsr.getStream({
date_format: 'YYYYMMDD',
filename: logDirectory + '/access-%DATE%.log',
frequency: 'daily',
verbose: false
})
app.use(express.static(__dirname + '/public'));
app.use(morgan('combined', {stream: accessLogStream}));
app.use(bodyPar.urlencoded({'extended':'true'}));
app.use(bodyPar.json());
app.use(bodyPar.json({ type: 'application/vnd.api+json' }));
app.use(methodOv('X-HTTP-Method-Override'));
app.use(favicon(__dirname + '/public/images/favicon.ico'));
/**
* Routes section
**/
require('./routes/ticket.js')(app);
/**
* Starting server
**/
app.listen (port)
console.log ("Listening on port: " + port);
var mongoose = require('mongoose');
var TicketSchema = new mongoose.Schema({
title: String,
description: String
}, {versionKey: false});
module.exports = mongoose.model('Ticket', TicketSchema, 'Ticket');
var Ticket = require('../models/ticket');
module.exports = function(app){
_getAllTickets = function(req, res){
var query = Ticket.find().lean();
query.exec(function(err, lst){
if(err)
res.send(err);
res.json(lst);
});
};
_saveTicket = function(req, res){
console.log(req.body);
var tckt = new Ticket({
title: req.body.title,
description: req.body.description
});
tckt.save(function(err){
if(!err)
console.log('Ticket creation successful. ');
else
console.log('ERROR: ' + err);
});
res.send(tckt);
};
app.get('/api/tickets/', _getAllTickets);
app.post('/api/tickets/', _saveTicket);
}
根据
主体解析器
中间件定义,确保HTTP请求的内容类型
头设置为application/json
或x-www-form-urlencoded
。我的猜测是,它现在就出现了,因为这些内容类型
都不是一篇多部分的文章吗?当你控制台记录req.body时会发生什么?它显示{}
,一个空对象@dward当我使用shell进行curl时,我使用这个命令curl-XPOST获得了正确的正文http://localhost:2559/api/tickets/ -H“内容类型:application/json”--数据“{”title:“[视频]没有lol,没有参与方”}“
但是如果我用邮递员来做请求,我就无法获得尸体。我有正确的标题。你能从邮递员那里生成代码作为NodeJS>请求
并将其作为你问题的一部分吗?我解决了,你是对的。问题是标题,它被设置为text/plain
。谢谢你的朋友!