我想知道如何将Express中的所有api路由移到与routes.js文件分开的单独server.js文件中
routes.js
server.js
我app.use()为每个路由使用了很长的api路由列表。因此,每条路线都在其自己的文件中,例如movies.js,movie.js但是当我列出这些路线时,它会在server.js
app.use()
movies.js
movie.js
所以我想从下面将api端点列表的一部分删除server.js到一个routes.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; } })
路线示例
电影.js
var express = require('express'); var request = require("request"); var router = express.Router(); router.get('/', function(req, res) { res.json({}) }); module.exports = router;
您可以尝试使用以下模块化方法。定义具有每个功能逻辑的控制器文件。例如电影。
movieController.js
module.exports = { getMovie : function(req, res){ //do something }, getMovies : function(req, res){ //do something }, postMovie : function(req, res){ //do something } }
然后,在路由文件中引用该控制器,然后简单地插入这些功能。
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);