【问题标题】:How to set routes in Express? app.use() vs app.get()如何在 Express 中设置路线? app.use() 与 app.get()
【发布时间】:2017-11-16 14:50:57
【问题描述】:

我有站点存根,其中路由设置在 2 个位置。

app.js:

...
var index = require('./routes/index');
var users = require('./routes/users');
...
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);
...

use 设置了一些东西。 Next 里面提到的脚本,比如index.js:

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

var fs = require('fs');
var path = require('path');
var config = require('../config');

/* GET home page. */
router.get('/', function(req, res) {

    var data = {};
    ...

假设我希望使用来自Express Routing doc 的信息。我应该把路由放在哪里,比如/users/:userId/books/:bookId

在文档中,get 是针对 app 调用的,而在我的存根中,get 是针对 router 以两步方式调用的。

挂在哪里?

【问题讨论】:

    标签: node.js express routing


    【解决方案1】:

    在文档中,get 是针对 app 调用的,因为它们在 app.js 文件中设置了端点。在您的index.js 中,您从带有module.exports = router; 的文件中返回路由器,这是应用程序的路由器。现在在你的app.js 文件中说

    app.use('/', index);
    app.use('/users', users);
    

    这些是路线。您是说index 文件中的所有端点都以/ 开头,而users 文件中的端点都以/users 开头。

    所以路由/users/:userId/books/:bookId必须在users.js这样的文件中

    router.get('/:userId/books/:bookId', function(req, res, next) {
       // do something
    });
    

    【讨论】:

      【解决方案2】:

      如果你想处理这条路由 - /users/:userId/books/:bookId,那么你需要在你的routes/users.js 文件中编写以下处理程序。

      router.get('/:userId/books/:bookId', function(req, res) {
          var data = {};
      });//get route
      

      基本上,在 app.js 中,您根据其第一部分对 url 进行分类,例如users。因此,所有以/users 开头的路由都将由您的routes/users.js 类处理。所有其他路由将由routes/index.js 处理,因为它被定义为处理/(没有/users、/admin 等,因此所有未被users.js 处理的路由都可以在此处理。)

      此外,在这些路由处理程序文件中,您定义了一个router 对象,将所有路由处理程序添加到它并在底部导出它。所以当你在这些文件中时,你需要使用router,而在app.js中你可以直接使用app.get()等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-25
        • 2019-11-14
        • 1970-01-01
        • 2016-04-16
        • 2018-03-26
        • 1970-01-01
        • 2013-03-14
        相关资源
        最近更新 更多