Express端点未被调用

时间:2016-07-01 10:01:13

标签: node.js express

如果直接添加到我的app.post('/test', function(req,res) { res.status(200).send({"message" : "OK"}); }); 文件中,端点工作正常:

api.js

但是为了重构应用,我在server.js中添加了一个名为var routesApi = require('./server/routes/api'); app.use('/v1', routesApi); 的文件,如下所示:

var express = require('express');
var router = express.Router();

module.exports = function() {   
  router.post('/test', function(req, res){
    res.status(200).send({"message" : "OK"});
  });

  return router;
}

它看起来像这样:

tr

但是如果我试着点击这个结束点,那么请求"停止"因为没有回应。我做错了什么?

2 个答案:

答案 0 :(得分:1)

由于导出路由器的方式,在通过routesApi将其添加到中间件堆栈时需要调用.use()。这就是看起来像

的样子
app.use('/v1', routesApi());

虽然你可以通过改变你的api.js来完全避免这种情况:

var express = require('express');
var router = express.Router();

router.post('/test', function(req, res){
  res.status(200).send({"message" : "OK"});
});

module.exports = router;

并且服务器的代码可以保持不变,因为现在,您正在导出路由器模块的实例。

答案 1 :(得分:-1)

您已为app定义全局变量,可以使用如下:

  

api.js

exports.allRoutes=function() {

var version1="v1";

app.post('/'+version1+'/test', function(req, res){
res.status(200).send({"message" : "OK"});
});

}
  

app.js

global.app = express();

var all_routes = require('./server/routes/api');

all_routes.allRoutes();  

var server = http.createServer(app);

server.listen(app.get('port'), function(req,res){           
    console.log('Express server listening on port ' + app.get('port'));     
});