2016-03-02 42 views
9

Ich frage mich, wie verschiebe ich alle meine api Routen in Express in eine separate routes.js Datei von meinem server.js Dateiseparate Datei für Routen in Express

ich eine lange Liste von api Routen haben app.use() für jede Route. So ist jede Route in einer eigenen Datei, z. movies.js, movie.js aber wenn ich diese Liste macht es für eine lange Liste in server.js

Deshalb möchte ich die Liste der api Endpunkte Abschnitt aus der unteren server.js heraus zu einer routes.js Datei entfernen. Hier

ist, was ich habe zur Zeit:

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

Ein Beispiel Route

movies.js

var express = require('express'); 
var request = require("request"); 
var router = express.Router(); 

router.get('/', function(req, res) { 
    res.json({}) 
}); 

module.exports = router; 

Antwort

28

Sie können versuchen, Verwende das FO lowing modularer Ansatz. Definieren Sie Controller-Dateien mit Logik pro Feature. z.B. Film.

movieController.js

module.exports = { 
    getMovie : function(req, res){ 
     //do something 
    }, 
    getMovies : function(req, res){ 
     //do something 
    }, 
    postMovie : function(req, res){ 
     //do something 
    } 
} 

Dann Verweis, dass die Steuerung in Routen Dateien und einfach diese Funktionen stecken.

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; 

Und in app.js, montieren Sie die Routen zu geeigneter Stelle, beispielsweise/Api

app.js

var routes = require('./routes'); 
app.use('/api', routes); 
+0

Dank, dass für das Speichern von meinem Tag gut –

+0

Dank gearbeitet! –

+0

Können Sie mir übrigens helfen, alle "Seite nicht gefunden" auf meine 404-Seite zu leiten? –

Verwandte Themen