【发布时间】:2016-06-23 19:16:05
【问题描述】:
我最初在一个 api.js 中编写了我的路由,但我认为有更好的方法,于是我在互联网上四处查看人们是如何实现的。我遵循了几个教程并提出了以下布局,其中 server.js 是我的开始:
-app
--models
--routes
---index.js
---settings.js
---sources.js
server.js
我将路由分解为设置和来源,在 index.js 中调用它们,并在 server.js 中要求它们。我希望一切正常,但是当我测试路由时,没有什么能解决 /settings 或 /sources 的问题。我不知道我错过了什么,但我一直在思考这个问题,我认为这可能是我没有得到的愚蠢的东西。我不知道我错了过程的哪一部分,我已经看了太久了!任何帮助表示赞赏,谢谢!
server.js
var routes = require('./app/routes')(app, express)
app.listen(config.port);
console.log('Magic happens on port ' + config.port + '!');
index.js
module.exports = function(app, express){
require('./settings')(app, express);
require('./sources')(app, express);
}
settings.js(sources.js 非常相似,所以为了简洁起见,我将省略它)
var bodyParser = require('body-parser');
var Settings = require('../models/settings');
module.exports = function (app, express) {
var router = express.Router();
//route for settings
router.route('/settings')
.get(function (req, res) {
//check to see if any records exists
...
})
.put(function (req, res) {
...
});
return router
}
更新: 我摆脱了我的 index.js 文件并将 app.use 语句放入 server.js 文件中。但是,如果不传递明确的论点,我就无法让它工作。我尝试使用 settings-2.js 遵循答案中的建议,但没有骰子。
我做了什么: server.js
//routes!
app.use('/', require('./app/routes/settings')(express));
app.use('/', require('./app/routes/sources')(express));
app.use('/settings2', require('./app/routes/settings-2'));
//start it up
app.listen(config.port);
新的 settings.js
module.exports = function (express) {
var apiRouter = express.Router();
//route for settings
apiRouter.route('/settings')
.get(function (req, res) {
...
.put(function (req, res) {
...
});
return apiRouter;
}
settings-2.js 这在 localhost:8080/settings2 上不起作用。没有错误,但请求只是在 Postman 中超时。
var Settings = require('../models/settings');
module.exports = function () {
var apiRouter = require('express').Router();
//route for settings
apiRouter.route('/')
.get(function (req, res) {
//check to see if any records exists
...
})
.put(function (req, res) {
...
});
return apiRouter;
}
【问题讨论】:
标签: javascript node.js express routing