2016-03-02 22 views
9

Zastanawiałem się, jak mogę przenieść wszystkie moje trasy API w ekspresowym do osobnego routes.js pliku z mojego server.js plikuoddzielny plik dla tras ekspresowych

mam długą listę tras API używając app.use() na każdej trasie. Każda trasa znajduje się we własnym pliku, np. movies.js, movie.js ale kiedy te listy to sprawia, że ​​na długiej liście w server.js

Więc chcę usunąć listę sekcji Endpoints API od poniżej server.js do pliku routes.js.

Oto co mam obecnie:

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

Przykładem trasa

movies.js

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

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

module.exports = router; 

Odpowiedz

28

Można spróbować użyj fo llowing modularne podejście. Definiowanie plików kontrolera mających logikę dla każdej funkcji. na przykład film.

movieController.js

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

Następnie odniesienie że kontroler w plikach trasy i po prostu podłączyć te funkcje.

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; 

A w app.js zamontować połączeń do odpowiedniego miejsca, np/Api

app.js

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

dzięki które pracowały ładnie –

+0

Dzięki za uratowanie mój dzień! –

+0

Przy okazji, czy możesz mi pomóc, jak przekierować całą stronę "nie znalezioną" na moją stronę 404? –

Powiązane problemy