我正在尝试使用 Express 4 为 API 做 nodejs 应用程序。但是当我使应用程序更加模块化时,我的路由不起作用。谁能解释一下我的错误是什么以及 API 应用程序的正确结构应该是什么?
我的 app.js 文件(一些不必要的代码被剪掉了):
var app = express();
var v1 = require('./routes/v1/index');
app.use('/api/v1', v1);
app.use('/api/v2', function(req, res, next) {
console.log('API Version 2');
next();
});
app.use('/api', function(req, res, next) {
console.log('Request of API versions');
next();
});
我的路线/v1/index.js 文件:
var express = require('express');
var router = express.Router();
var user = require('./user');
module.exports = router;
我的路线/v1/user.js 文件:
var express = require('express');
var router = express.Router();
router.route('/')
.get(function(req, res, next) {
console.log('USERS GET');
})
.post(function(req, res, next) {
console.log('USERS POST');
})
.put(function(req, res, next) {
console.log('USERS PUT');
})
.delete(function(req, res, next) {
console.log('USERS DELETE');
});
router.use(function(req, res, next) {
console.log('USERS last Middleware');
});
module.exports = router;
当我尝试请求这样的网址时:http://localhost:3000/api/v1/user
我只在控制台中看到消息:“请求 API 版本” - 所以 index.js 或 user.js 中没有触发任何代码,
但是,如果我删除 user.js 并将对索引 js 的请求处理(在本例中位于 index.js 中的 user.js 中的 router.route('...')) - 一切正常,我看到消息取决于 VERB 和没有“请求 API 版本”消息。
所以我的问题是:为什么会这样?如果我从 index.js 连接它,为什么不包含 user.js 并且不起作用,在这种情况下我将如何制作模块化应用程序?将所有处理放在 index.js 中 - 不好,因为我需要 /user、/news、/comment 等处理,我想这些处理将在单独的文件中处理。