2017-08-19 1 views
2

Ich habe eine server.js Datei, in der ich services.js erforderlich sind, die weiter alle anderen API erfordert DateienPräfix hinzufügen in Ruhe apis in NodeJS

require('./web_services/services')(app); 

Ich habe zwei andere Dateien Users.js und Events.js, dass die tatsächlichen apis hält. Die services.js erfordern sowohl die Dateien

var logger = require("../logger/logger"); 

module.exports = function (app) { 
    require('./User/Users')(app,logger); 
    require('./Event/Events')(app,logger); 
    // in case of api error 
    app.use(function (err, req, res, next) { 
     res.status(err.status || 500); 
     res.send({ 'status': res.status, 'message': err }); 
     logger.error(err); 
    }); 
} 

Jetzt möchte ich /users bevor Benutzer apis und events/ vor Ereignis apis Präfix. Ich habe

versucht
app.use('/user/', require('./User/Users')(app)); 

Users.js

module.exports = function (app, logger) { 
    // apis 
};//exports 

aber nicht funktioniert? Fehle ich etwas?

+0

bitte teilen Sie die Datei 'Users.js' oder sagen Sie uns, was es tatsächlich exportiert.? – RaghavGarg

+0

@RaghavGarg, überprüfen Sie die aktualisierte Frage –

Antwort

3

Ich glaube, Sie Ihr Problem durch die Verwendung lösen können express routing

Sie Router in service.js initialisieren kann und es dann um passieren Routen und Middleware in ihm zu ermöglichen und Präfix es in der Servicedatei definieren können, wie Sie versuchten, machen.

// service.js 
var express = require('express') 
var router = express.Router(); 
... 
app.use('/users', require('./User/Users')(router, logger)); 
app.use('/events', require('./Event/Events')(router, logger)); 
... 

Alle Routen in dieser Datei werden durch die /users vorangestellt werden, weil wir es in der Servicedatei erwähnt haben.

// Users.js 
module.exports = function (router, logger) { 

    // middleware that is specific to this router 
    router.use(function timeLog (req, res, next) { 
     logger('users middleware', req); // or however you are using your logger 
     next(); 
    }) 

    // this route will be `/user/`  
    router.get('/', function (req, res) { 
     res.send('Users home page') 
    }) 

    // this route will be `/users/about` 
    router.get('/about', function (req, res) { 
     res.send('About users') 
    }) 

    return router; 

};//exports 

Es ist ziemlich einfach, denke ich. Sie können this Boilerplate beziehen, machte ich vor einiger Zeit mit Express-und Express-Router. Einige Namenskonventionen sind nicht gut, aber Sie können sehen, wie der Router im Boilerplate definiert und verwendet wird, um Routenpräfixe und Middleware für bestimmte Routen zu aktivieren.

Verwandte Themen