`express` app - 无法使用`postman`测试`post`请求

时间:2016-06-30 07:38:32

标签: node.js express postman

我创建了一个小express个应用。我只是想测试post方法。但它根本不起作用。据我说一切都很好。但我无法弄清楚这个问题。有人帮我吗?

我的server.js文件:

var express = require('express');
var bodyParser = require('body-parser');
var Post = require('./models/post');

var app = express();
app.use(bodyParser.urlencoded({
    extended: true
}));

app.use(bodyParser.json());

app.get('/api/posts', function( req, res) {
    res.json([
        {
            username:"dickeyxxx",
            body : "node rocksxx"
        }
    ])
});


app.post('/api/posts', function( req, res, next) {

    var post = new Post({
        username:req.body.username,
        body:req.body.body
    })

    post.save(function(err, post){
        if(err) { return next }
            res.json(201,post);
    })

})



app.listen(5000, function(){
    console.log('Server Listening on', 5000);
})

my post.js:

var db = require('../db');
var Post = db.model('Post', {
    username:{type:String, required:true},
    body:{type:String,required:true},
    date:{type:Date, required:true,default:Date.now}
});

module.exports = Post;

我的db.js:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/social', function(){
    console.log( 'mongoose connected' ); //i am getting consoled
});

module.exports = mongoose;

我对邮递员的尝试:

postman screen shot

任何人都在这帮助我?

2 个答案:

答案 0 :(得分:3)

您的 { "windows": { "release": { "packageCertificateKeyFile": "c:\\path-to-key\\keycert.pfx" "publisherId": "CN=xxxxxxxxxxxxxxxxxxxxxx" } } } 错了。

如果要发送状态201,请使用

res.json(201,post);

请参阅http://expressjs.com/en/api.html#res.json

答案 1 :(得分:2)

像这样的错误通常是Postman无法真正到达客户端的情况。它不是表达回报的典型错误。

当你启动快递应用时,你真的看到

Server Listening on 5000

如果是,GET端点是否有效?

如果上述情况属实,那么获取此类错误的典型方法是您的快递应用程序由于未捕获的异常而实际退出。发送邮递员请求时,您是否在控制台中看到任何错误?

在这些检查之后,将console.log('POST endpoint called')添加到POST端点并检查它是否实际被调用。

您的POST端点也存在问题。

post.save(function(err, post){
    if(err) { return next(err) } // You need to actually return the called next function, not the function itself. 
    return res.json(201,post); // It is commonplace to return the res here to avoid hitting any further code that you might add later.
})

虽然它不在您的代码示例中(可能为了简洁),但请确保您有一些最后一个端点可以获取任何错误或404,以便您始终返回响应。

app.all('*', function (req, res, next) {
    return res.status(404).json({success: false, message: 'Route \'' + req.url + '\' is invalid.'});
});
app.use(function(err, req, res, next) {
    return res.status(500).json(err);
});