尝试在Express中为我的数据库交互构建API路由...获得404

时间:2014-08-24 21:36:10

标签: json node.js express

我的快递路线如下:

app.post('/api/:type/*/*/*', apiRoute.api);

在我的路线文件中我有:

exports.api = function(req, res) {
    var type = req.params.type;
    var entity  = req.params['0'];
    var field  = req.params['1'];
    var params = req.params['2'];

    switch (type)
    {
        case "get":
               return {'entity' : entity, 'field' : field, 'params' : params}
            break;

        case "post":

            break;
    }
}

然而,当我去

http://localhost:3000/api/get/industry/id/5

我得不到GET / api / get / industry / id / 5

我做错了什么以及如何让它返回json?

谢谢!

2 个答案:

答案 0 :(得分:0)

您正在为POST定义路由,并且您正在使用GET访问它。如果您只想从服务器返回一些数据,则应使用GET定义路径:

app.get('/api/:type/*/*/*', apiRoute.api);

否则,您应该从客户端发出POST请求以使用您定义的POST路由。

答案 1 :(得分:0)

您可以使用app.route()作为路由器的快捷方式来定义路由上的多个请求。请参阅下面的示例使用express 4

var express =  require('express');
var app     =  express();
var port    =  process.env.PORT || 8080;

// ROUTES

var router = express.Router();

// apply the routes to our application
app.use('/', router);

// api routes
app.route('/api/:type/*/*/*')

    .get(function(req, res) {
        var type = req.params.type;
        var entity  = req.params['0'];
        var field  = req.params['1'];
        var params = req.params['2'];

        res.json({'entity' : entity, 'field' : field, 'params' : params});  
    })

    .post(function(req, res) {
        res.send('code to process post request goes here!');
    });

    // START THE SERVER     
    app.listen(port);
    console.log('Server running on port ' + port);

希望这能解决你的问题..