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

2024-01-07

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

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 发生的情况:它知道所有可能路径中的捕获组和参数,无论它们是否在当前请求中使用。

因此,通过数组堆叠多个路径可以轻松完成,但如果您希望从参数或捕获组使用的路径中获取任何有用的内容,则副作用可能是不可预测的。它可能对于冗余/别名更有用,在这种情况下它会工作得很好。

编辑:另请参阅@c24w的回答below https://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single-line/26058349#37596851.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Nodejs 异步 Promise 队列

    我需要使用速率受限的 API 例如 我一秒钟只能进行 10 个 API 调用 因此我需要等待当前秒结束才能进行另一个 API 调用 为了实现这一目标 我想创建一个可以自行管理的异步队列 它的主要功能是让我向队列添加一个新的 Promise
  • 正则表达式:如何表达没有下划线的 \w

    有没有简洁的表达方式 w but without 即 w 中包含的所有字符 除了 我问这个是因为我正在寻找最简洁的方式来表达域名验证 域名可以包含小写和大写字母 数字 句号和破折号 但不能包含下划线 w 包括以上所有内容 加上下划线 那么
  • 使用 Puppeteer 和 Headless Chrome 获取 DOM 节点文本

    我正在尝试使用无头 Chrome 和 Puppeteer 来运行我们的 Javascript 测试 但我无法从页面中提取结果 基于这个答案 https stackoverflow com a 45799744 4794 看起来我应该使用pa
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • 使用 Connect 和 node-http-proxy 的 HTTP 代理

    在开发过程中 我需要一个 HTTP 代理来访问外部 API 以绕过跨域安全限制 我在这里找到了一些示例代码 http nthloop com blog local dev with nodejs proxy http nthloop com
  • 阻止 PM2 上不同时运行的请求

    在我的 Express 应用程序中 我在应用程序中定义了 2 个端点 一种用于 is sever up 检查 另一种用于模拟阻塞操作 app use status req res gt res sendStatus 200 app use
  • 弹出表单可见,但 Puppeteer 中缺少 html 代码

    我目前正在尝试从网站获取一些信息 https www bauhaus info https www bauhaus info 并在 cookie 弹出表单中失败 到目前为止 这是我的代码 async gt const browser awa
  • Mongoose 对 Promise 拒绝处理

    我有点与 NodeJS 中的 Promise 模式作斗争 我正在数据库中查找用户 然后使用用户引用保存新实体 但是当用户不在数据库中时 我应该返回拒绝 但我不确定如何正确执行 有没有办法做得更好 顺便说一句 对不起 咖啡脚本 User fi
  • 创建正则表达式来检查强密码

    假设我有一个检查字母数字的正则表达式 我现在想创建另一个正则表达式来检查密码中至少有 1 个数字 我想检查它是否至少有 1 个非字母数字字符 字母或数字以外的字符 我应该单独调用每个函数 如果一个函数失败返回 false 还是有办法将它们合
  • ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

    Nodejs中使用mysql的问题 const mysql require mysql var connection mysql createConnection host localhost user root password 1234
  • 谷歌应用程序引擎nodejs本地开发

    有没有办法在本地运行我的nodejs应用程序 以便我可以模拟在生产App Engine中运行的应用程序而无需部署它 由于某种原因 我的应用程序在 Google App Engine 中的行为与我的本地主机不同 我厌倦了每次为了查看是否存在错
  • jQuery自动完成插件-自定义突出显示功能

    我的每个项目的自动完成结果如下所示 h3 Celebrity Sweepstakes h3 p 0 episodes p 但我只想突出显示 H3 内的标题 请参阅下面的 突出显示 功能 我不知道如何更改原始正则表达式以仅替换标题内的内容 s
  • Node.js 循环发送 http 请求

    我实际上遇到了使用 node js 执行的 javascript 代码的问题 我需要循环发送http请求到远程服务器 我在代码中设置了www google ca 这是我的代码 var http require http var option
  • Puppeteer 无法在 VPS (DigitalOcean) 上工作

    我在水滴中数字海洋 https www digitalocean com 我收到这个错误 node 5549 UnhandledPromiseRejectionWarning TimeoutError Navigation Timeout
  • 字边界正则表达式问题

    我在使用单词边界时遇到问题 b在我的正则表达式中 我正在使用 R 但当我尝试时问题也存在http regexr com http regexr com 我使用的模式是 bs l b 虽然我预计下面的第 1 行和第 3 行能够匹配此模式 但只
  • BigQuery REGEXP_MATCH 和重音:边界通配符失败?

    在 GAS 中 我可以正确地将重音符号与具有边界字符的正则表达式相匹配 例如 b b 仅当字符 是单独的单词时才匹配 这在 GAS 中有效 function test regExp var str la s ance est Paris v
  • mongoDB白名单IP

    我看到类似的帖子 但没有一个能帮助我解决我的问题 在学习了从头开始构建 MERN 应用程序的 Udemy 教程后 我陷入了 mongoose 连接的困境 这是我的 index js 代码 const express require expr
  • 关于 Node.js Promise then 和 return?

    我对承诺感到困惑 I use 那么就答应没有返回像这样 new Promise resolve reject gt resolve 1 then v1 gt console log v1 new Promise resolve reject
  • 用于检查字符串是否至少包含 3 个字母数字字符的最有效的正则表达式

    我有这个正则表达式 a zA Z0 9 3 我用它来查看字符串中是否至少包含 3 个字母数字字符 似乎有效 它应该匹配的字符串示例 a3c 0 c 8 9 9d 但是 我需要它更快地工作 有没有更好的方法使用正则表达式来匹配相同的模式 编辑
  • nodeJS exec 不适用于“cd”shell cmd

    var sys require sys exec require child process exec exec cd home ubuntu distro function err stdout stderr console log cd

随机推荐

  • 玩转框架+SLICK(Scalaquery)教程

    有人知道使用 Play 框架和 SLICK ScalaQuery 的好教程或示例项目 github 吗 我正在努力让他们一起工作 我收到此错误 info play Application started Dev error applicat
  • YUI3中如何计算元素的宽度和高度?

    jQuery 有方便的 height 和 width 实用程序来计算 DOM 元素的显示大小 它还具有 position 来获取坐标 在YUI3节点 http developer yahoo com yui 3 api Node html
  • ggplot2:使用scale_colour_brewer()并手动指定图例名称/条目标签

    我想用scale colour brewer and scale fill brewer 通过 Brewer 调色板指定填充或颜色 diagram lt diagram scale colour brewer scale fill brew
  • 更新 WPF Desktop Bridge Universal 应用程序时无法升级设置

    我的应用程序是用 WPF C 编写的 我直接从 Visual Studio 使用 MSIX 应用程序项目将其导出为通用应用程序 我只是无法让设置在更新之间保持不变 我在中使用以下代码MainWindow Loaded event Setti
  • 为什么 AngularJS 应用程序中的空白被忽略

    AngularJS 应用 ng model 指令将输入字段绑定到控制器属性 在我的应用程序中 带空格的输入将被忽略 例如 A 结果输出是 A 有没有办法也包含这些空白 Fiddled here http jsfiddle net pa6sd
  • 确保 Web 服务安全

    我正在完成我的 iPhone 应用程序 我只是担心我们的网络服务器级别的安全性 数据通过网络服务被转移到 iPhone 应用程序 我可以在 Web 服务上采取哪些安全措施 以免受到攻击 Thanks 一些提示 使用以下命令验证来自 Web
  • 在 OSX 中拦截键盘输入

    我正在尝试编写一个应用程序来防止某些关键信号传播到 OSX 中的操作系统之外 为了澄清这一点 我想让用户感觉他们在键盘上按的键似乎坏了 因此 关联的字母不会显示在文本区域中 按键不会激活另一个应用程序中的功能 等等 有什么想法吗 提前致谢
  • 使用 SQL 查询打印素数的最佳逻辑 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 MongoDB MySQL CockroachDB 中通过 SQL 获取 2 到 1000 素数的最有效方法是什么 我在Oracle中的查询
  • TXMLDocument 的替代方案?

    最近 我们将代码从 Delphi 2009 升级到 Delphi XE 并更新了我们的 Indy 组件 不确定这是否相关 但从那时起 我们在 Windows Server 2003 计算机上加载和保存 XML 文件时就会出现错误 XMLDo
  • 你可以有多个 UnityAppController 的子类吗?

    我需要添加一些代码application didFinishLaunchingWithOptions in UnityAppController使用其 Objective C SDK 配置 Google AdWords 转化跟踪 每次 Un
  • Objective C JAVA 字节序

    我使用的是 64 位 Mac 并且我确信 Java 在我的例子中是 1 6 正在使用 big endian 我正在尝试从 Objective C 中的 iPhone 与我的 java 服务器进行通信 iPhone objective C 使
  • 在我的 Android 项目中使用领域数据库时无法生成 GlideApp 和 Glide 请求

    我使用 Glide 来处理图像 到目前为止它运行良好 但是现在 当我将 Realm 数据库集成到我的项目中时 它在生成 GlideApp 和 GlideRequests 类时出现错误 主要构建 gradle buildscript repo
  • GIF 图像在“document.location.href”时停止

    我在 javascript 中有这个函数 function loadPage url showLoadPageGif visibility On document location href getPath url 当我使用此功能时 GIF
  • 如何从 Knex / Postgresql 查询返回纯值?

    我正在尝试使用 Knex 从 Postgres DB 返回一个简单的标量字符串值 到目前为止 我所做的一切都会返回一个带有键 列名 和值的 JSON 对象 因此我必须访问该对象才能获取值 如果我返回多行 那么我会得到多个 JSON 对象 每
  • Python 动态属性和 mypy

    我试图将一些函数屏蔽为属性 通过包装器 这在这里并不重要 并将它们动态添加到对象中 但是 我需要代码完成和 mypy 才能工作 我想出了如何动态添加属性 通过元类或简单地在构造函数中 但我遇到的问题是 mypy 没有选择它 IDE 也没有
  • 如何从android将值传递到php?

    我在将值从 android 传递到 php 脚本时遇到问题 我想要questionid传递到 php 脚本url get ansurl但我无法传递该值 这个怎么做 请指导我 多谢 try int success json getInt TA
  • 自定义 UIAlertView 上的按钮

    这是我自定义按钮的当前方式 UIAlertView av UIAlertView alloc init av addButtonWithTitle UIButton yesButton av subviews lastObject av s
  • 使用 htaccess 将网站重定向到移动版网站

    您好 我使用以下代码重定向到移动网站 从移动到移动网站 移动中的domain com到m domain com 它工作正常 但网址末尾的 id 9 即将到来 如何删除 id 9 从 url 以及如何将移动网站 m domain com 从桌
  • Android 视图转换是否在光栅化后应用?

    下面代码中的行 A 和行 B 应生成相同的图像 然而 行 A 却生成了图像 怎么了 光栅化后是否应用视图 画布转换 import android content Context import android graphics Canvas
  • express.js - 单行中多个路由的单个路由处理程序

    有没有办法在单个函数调用中做到这一点 var todo function req res app get todo app get blabla todo app get blablablabla todo 就像是 app get blab