当前位置: 首页 > 面试题库 >

express.js-单个行中多个路由的单个路由处理程序

马侯林
2023-03-14
问题内容

有没有办法在单个函数调用上做到这一点?

var todo = function (req, res){};

app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);

就像是:

app.get("/", "/blabla", "/blablablabla", todo );

我知道这是一个语法混乱,但是只是为了给我一个我想实现的目标一个思路,一系列路由就很棒了!

有人知道怎么做吗?


问题答案:

我在寻找相同功能时遇到了这个问题。

@Jonathan Ong在上面的评论中提到,不建议将数组用于路径,但已在Express 4中对其进行了明确描述,并且它在Express
3.x中有效。这是尝试的示例:

app.get(
    ['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
    function ( request, response ) {

    }
);

request对象内部开始,路径为/hooplul/poo?bandle=froo&bandle=pee&bof=blarg

"route": {
    "keys": [
        {
            "optional": false, 
            "name": "farcus"
        }
    ], 
    "callbacks": [
        null
    ], 
    "params": [
        null, 
        null, 
        "lul"
    ], 
    "regexp": {}, 
    "path": [
        "/test", 
        "/alternative", 
        "/barcus*", 
        "/farcus/:farcus/", 
        "/hoop(|la|lapoo|lul)/poo"
    ], 
    "method": "get"
},

注意使用params会发生什么:知道所有可能路径中的捕获组和param,无论它们是否在当前请求中使用。

因此,可以很容易地通过数组堆叠多个路径,但是如果您希望从通过参数或捕获组使用的路径中拾取任何有用的东西,副作用可能是无法预料的。对于冗余/别名,它可能更有用,在这种情况下,它将很好地工作。

编辑2:这是一个比较受欢迎的答案。请记住,与大多数Node.js库一样,ExpressJS是可移动的盛宴。尽管上面的路由仍然可以工作(目前我正在使用它,这是一个非常方便的功能),但是我不能保证请求对象的输出(这肯定与我所描述的不同)。请仔细测试以确保获得所需的结果。



 类似资料:
  • 但我想知道是否有一种方法可以先定义公共处理程序,然后一些路由可以定义另一个处理程序。谢谢

  • 我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该

  • 问题内容: 一个单例控制器是否可能具有多个视图 [https://github.com/angular-ui/ui- router/issues/494] ? 用例:我有一个ui-view = header和ui-view = content。我根据当前状态更改标题以显示上下文相关的按钮(即返回,保存,过滤等)。我希望这些按钮在内容控制器中调用一个函数,但是如果执行以下操作,它将创建两个MyCon

  • 问题内容: 我正在使用ElasticSearch运行Express.js / Node.js应用程序。我正在尝试查看同一索引中多种类型的结果。我在这里执行的是运行搜索查询,然后根据查询结果执行第二个搜索查询。通过观察node.js控制台,我还可以看到elasticsearch为玩家返回了结果。但是它们没有插入到我的结果对象/数组中。我使用快速中间件,因为我必须执行两个搜索并将结果显示为一个。 路线

  • 问题内容: 在我的NodeJS 应用程序中,我有一些常用的路由。然后,在文件中,我想定义更多路线。 如何识别文件中定义的其他路由处理程序? 一个简单的 要求 似乎不起作用。 问题答案: 例如,如果要将 路线放在单独的文件中 ,则 可以通过以下方式创建文件: 然后您可以 通过这种方式传递 对象 来要求它: 看看这些例子 https://github.com/visionmedia/express/t