我對如何在我的快車應用程序中正確設置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