Отдельный файл для маршрутов в экспресс

Мне было интересно, как перенести все мои api-маршруты в express в отдельный файл routes.js из моего файла server.js

У меня есть длинный список маршрутов api, используя app.use() для каждого маршрута. Таким образом, каждый маршрут находится в собственном файле, например. movies.js, movie.js, но когда я их перечисляю, он делает длинный список в server.js

Итак, я хочу удалить список разделов конечных точек api из ниже server.js out в файл 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;

Ответ 1

Вы можете использовать следующий модульный подход. Определите файлы контроллера с логикой для каждой функции. например кино.

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);