我想知道如何将Express中的所有api路由移到我routes.js
文件的单独server.js
文件中
我为每条路线使用app.use()
列出了一长串api路线。所以每条路线都在自己的文件中,例如movies.js
,movie.js
但是当我列出这些内容时,会在server.js
所以我想从下面的server.js
中删除api端点列表部分到routes.js
文件。
以下是我目前的情况:
server.js
import path from 'path'
import express from 'express'
import webpack from 'webpack'
import webpackDevMiddleware from 'webpack-dev-middleware'
import webpackConfig from './webpack.config.dev'
const app = express();
/* api endpoints, can be many more, I want them in routes.js */
app.use('/api/movies', require('./src/api/routes/movies'))
app.use('/api/movie', require('./src/api/routes/movie'))
app.use(webpackDevMiddleware(webpack(webpackConfig), {
publicPath: webpackConfig.output.publicPath
}));
app.use('/public', express.static(__dirname + '/public'))
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(3000, 'localhost', function (err) {
if (err) {
console.log(err);
return;
}
})
示例路线
movies.js
var express = require('express');
var request = require("request");
var router = express.Router();
router.get('/', function(req, res) {
res.json({})
});
module.exports = router;
答案 0 :(得分:58)
您可以尝试使用以下模块化方法。 定义具有每个功能逻辑的控制器文件例如电影。
<强> movieController.js 强>
module.exports = {
getMovie : function(req, res){
//do something
},
getMovies : function(req, res){
//do something
},
postMovie : function(req, res){
//do something
}
}
然后,在路径文件中引用该控制器并简单地插入这些函数。
<强> routes.js 强>
var express = require('express');
var movieCtrl = require('./movieController');
var router = express.Router();
router.route('/movie').get(movieCtrl.getMovie);
router.route('/movie').post(movieCtrl.postMovie);
router.route('/movies').get(movieCtrl.getMovies);
module.exports = router;
并且,在app.js中,将路线安装到合适的位置,例如/ API
<强> app.js 强>
var routes = require('./routes');
app.use('/api', routes);