首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ExpressJS,POST请求为空

使用ExpressJS,POST请求为空
EN

Stack Overflow用户
提问于 2016-03-15 21:11:01
回答 1查看 223关注 0票数 1

当我对服务器的路由执行POST请求时,request.body是空的。我使用body解析器来获取JSON数据。我做错什么了?

_saveTicket函数上,我有console.log来显示所有的body请求参数。当我执行POST请求时,request.body是空的。

我需要什么来自动解析它?

server.js

代码语言:javascript
运行
复制
/**
 * 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);

model/ticket.js

代码语言:javascript
运行
复制
var mongoose = require('mongoose');

var TicketSchema = new mongoose.Schema({
  title:          String,
  description:    String
}, {versionKey: false});

module.exports = mongoose.model('Ticket', TicketSchema, 'Ticket');

routes/ticket.js

代码语言:javascript
运行
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-15 21:19:50

确保基于您的Content-Type中间件定义,HTTP请求的application/json头设置为application/jsonx-www-form-urlencoded。我的猜测是,现在这两个Content-Type都不是。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36022223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档