【问题标题】:Including API routes in Express 4.x在 Express 4.x 中包含 API 路由
【发布时间】:2016-10-03 14:51:03
【问题描述】:

我正在通过“Getting MEAN with...”一书学习 MEAN 堆栈,问题是书中的 Express 版本比我使用的要旧。

第一步是告诉我们的应用程序我们正在添加更多需要注意的路由, 以及何时应该使用它们。我们已经在 app.js 中有一行要求服务器 应用程序路由,我们可以简单地复制并设置 API 路由的路径 如下:

var routes = require('./app_server/routes/index');
var routesApi = require('./app_api/routes/index');

接下来我们需要告诉应用程序何时使用路由。我们目前在 app.js 中有以下行告诉应用程序检查服务器应用程序路由 所有传入的请求:

app.use('/', routes);

注意'/' 作为第一个参数。这使我们能够为 URL 指定一个子集 路线将适用。例如,我们将定义我们所有的 API 路由开始 与 /api/ 。通过添加以下代码 sn-p 中显示的行,我们可以告诉应用程序仅在路由以 /api 开头时使用 API 路由:

app.use('/', routes);
app.use('/api', routesApi);

还有我的 app.js 文件的列表:

    var express = require('express')
  , others = require('./app_server/routes/others')
  , locations = require('./app_server/routes/locations')
  , routesApi = require('/app_api/routes/index')
  , ;

require('./app_server/models/db')

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/app_server/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes
// LOCATION PAGES
app.get('/', locations.homeList);
app.get('/location', locations.locInfo);
app.get('/location/review/new', locations.addReview);
// OTHER PAGES
app.get('/about', others.about);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});

谁能解释我如何在我的 Express 版本中做同样的事情?

【问题讨论】:

    标签: node.js express mean-stack


    【解决方案1】:

    在 Express 4 中,这是使用 Router Middleware 完成的。更多信息请访问Express Routing here.

    Router 只是一个迷你快递应用程序,您可以定义middleware 并将其上的路由全部打包在一起,即/api 应全部使用apiRouter。这是apiRouter 的样子

    apiRouter.js

    var express = require('express')
    var router = express.Router(); // Create our Router Middleware
    
    // GET / route
    router.get('/', function(req, res) {
        return res.status(200).send('GET /api received!');
    });
    
    
    // export our router middleware
    module.exports = router;
    

    您的主要 Express 应用程序将保持不变,因此您将使用 require() 添加路由器以导入实际文件,然后使用 use() 注入路由器

    Express 服务器文件

    var express = require('express');
    var app = express();
    var apiRouter = require('../apiRouter');
    
    var port = process.env.PORT || 3000;
    
    app.use('/', apiRouter);
    
    app.listen(port, function() {
      console.log('listening on ' + port);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 2014-10-03
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多