单独的文件路由在快递 [英] separate file for routes in express
问题描述
我想知道如何将我的快递中的所有api路由从我的 server.js >中单独的
routes.js
code>文件
I was wondering how do I move all of my api routes in express into a separate routes.js
file from my server.js
file
我有一个很长的api路线,使用 app.use()
路线。所以每个路由都在自己的文件中,例如 movies.js
, movie.js
但是当我列出这些,它使一个长列表在 server.js
I have a long list of api routes using app.use()
for each route. So each route is in its own file, e.g. movies.js
, movie.js
but when I list these it makes for a long list in server.js
所以我想从下面的 server.js中删除api端点列表/ code> out to a
routes.js
file。
So I want to remove the list of api endpoints section from the below server.js
out to a routes.js
file.
这是我目前所在:
server.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;
推荐答案
您可以尝试使用以下模块化方法。
定义具有每个功能逻辑的控制器文件。例如电影。
You can try to use the following modular approach. Define controller files having logic per feature. e.g. movie.
movieController.js
module.exports = {
getMovie : function(req, res){
//do something
},
getMovies : function(req, res){
//do something
},
postMovie : function(req, res){
//do something
}
}
然后,在路由文件中引用该控制器,并简单地插入这些功能。
Then, reference that controller in routes files and simply plug those functions.
route.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
And, in app.js, mount the routes to suitable location, e.g. /api
app.js
var routes = require('./routes');
app.use('/api', routes);
这篇关于单独的文件路由在快递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!