我对如何在我的快车应用程序中正确设置API路由感到困惑。我想要的是定义路线而不重复自己的结构化方式。作为一个数据库,我正在使用RethinkDB。对于每个型号,假设Exercise
我在models
目录中创建了一个文件。这些文件只定义模型/模式。我认为每个模型还为我的API定义了一个端点。因此,我创建了一个routes
文件夹,我在其中声明了我的路线在单独的文件中,例如exercises.js
。这是我的目录结构:快速路由器前缀
root
├── app.js
├── bootstrap.js
├── routes
│ ├── exercises.js
│ ├── index.js
│ └── ...
├── models
│ ├── exercise.js
│ └── ...
└── ...
一个例子路由文件看起来是这样的:
module.exports = (function() {
'use strict';
var router = express.Router();
router.get('/exercises', getAllExercises);
router.get('/exercises/:id', getExerciseById);
return router;
})();
正如你可以看到我是在重复路由前缀exercises
。这是一个子前缀,因为所有路由都应以/api
开头。是否可以在单个路由器的前缀中定义,以便我在app.js
中使用app.use('/api', [routers])
,并告诉每个路由器有不同的路由前缀,如/api/excursions/
?我对我的声明感到困惑,并要求提供反馈。我认为有一种更好的方法来组织我的API,因为我正在做的事情知道我也需要包含app.js
中的所有路由,以将所有路由作为数组传递给应用。这是我的app.js
:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var port = process.env.PORT || 3000;
app.use(bodyParser.json());
// API Routes
var exercises = require(__dirname + '/routes/exercises');
app.use('/api', [exercises]);
// Start the server
app.listen(port);
console.log('Listening on port '+ port);
数组语法是取自官方表达documentation。
太棒了,但是我会重复'app.use'语句。有没有更好的办法? – LordTribual