【发布时间】:2017-07-29 14:43:25
【问题描述】:
我对使用 REST 和 Express 非常陌生,我一直在关注 REST API 上的 tutorial 。这是我的 app.js 代码:
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require("mongoose");
var app = express();
var port = parseInt(process.env.PORT, 10) || 3000;
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
Genre = require('./models/genre');
//Connect to mongoose
mongoose.connect('mongodb://localhost/bookstore');
var db = mongoose.connection;
app.listen(port);
console.log('Running on port 3000\n\n');
app.post('/api/genres', function(req, res){
console.log(req.body);
var genre = req.body;
Genre.addGenre(genre, function(err, genre){
if (err) {
console.log(err);
res.send({status: 'something went wrong'});
}else{
res.send({status: 'saved'});
res.json(genre);}
});
});
我在 Firefox 上使用 Rest Easy 来检查 POST 请求。生成的错误是“流派验证失败”,因为正文为空。用于此的模式在模型中定义为:
var mongoose = require("mongoose");
//Genre Schema
var genreSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
create_data:{
type: Date,
default: Date.now
}
});
var Genre = module.exports = mongoose.model('Genre', genreSchema);
// add genre
module.exports.addGenre = function(genre, callback){
Genre.create(genre, callback);
};
我尝试了其他几个流行的线程,但仍然无法解决问题。我尝试重新排列模块的导入顺序,并使用“application/x-www-form-urlencoded”将数据作为表单输入。任何想法?
编辑:console.log(req.body)的输出:
{}
console.log(req) 的输出位于 jsfiddle.net 上的 jbkb1yxa 处。(StackOverflow 不允许我嵌入更多链接,因为我的信誉点很低,抱歉。) REST 简单的截图: http://imgur.com/6QmQqRV
【问题讨论】:
-
显示你的console.log(req)和console.log(req.body)的结果。您可能以错误的格式传递 POST 请求。确保请求正文是 JSON。您可以添加传递参数方式的图像。
-
POST 请求是如何发出的?
-
这可能是您向 api 发出 POST 请求的方式,然后是其他任何方式。
-
这能回答你的问题吗? req.body empty on posts
标签: javascript node.js express