如果直接添加到我的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
但是如果我试着点击这个结束点,那么请求"停止"因为没有回应。我做错了什么?
答案 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'));
});