Express 路由器参数验证

2024-03-16

Express 4x api 文档声称您可以将正则表达式作为第二个参数传递给router.param http://expressjs.com/4x/api.html#router.param为了验证参数。

该方法现在可用于有效验证参数(以及 可选择解析它们以提供捕获组)

然后提供以下示例。

// validation rule for id: should be one or more digits
router.param('id', /^\d+$/);

router.get('/user/:id', function(req, res) {
  res.send('user ' + req.params.id);
});

// validation rule for range: should start with one more alphanumeric characters, followed by two dots, and end with one more alphanumeric characters
router.param('range', /^(\w+)\.\.(\w+)?$/);

router.get('/range/:range', function(req, res) {
  var range = req.params.range;
  res.send('from ' + range[1] + ' to ' + range[2]);
});

但是,这实际上似乎不起作用。更深入地研究,看起来并不像是快递代码 https://github.com/strongloop/express/blob/4.x/lib/router/index.js#L84-L114实际上支持文档的主张。事实上,传递函数以外的任何东西都会让你变得整洁invalid param() call例外。

Using

express 4.12.3
node 0.12.4

所以我的问题是这个功能是否真的存在或者我是否做错了什么。我正在尝试完成文档中提供的相同操作,但收到上述错误。任何指导将不胜感激:)


答案可以找到here https://github.com/strongloop/expressjs.com/issues/388.

本质上需要运行以下代码片段prior来利用router.param(fn)如果您使用的是快递,请按照上述方法<= 4.11.

express 4.11

router.param(function(name, fn) {
  if (fn instanceof RegExp) {
    return function(req, res, next, val) {
      var captures;
      if (captures = fn.exec(String(val))) {
        req.params[name] = captures;
        next();
      } else {
        next('route');
      }
    }
  }
});

express 4.12

如果您使用快递>= 4.12你也可以完成同样的任务without的需要router.param(fn)使用以下内容。事实上,上面的 4.12 之前的示例会弹出弃用警告。

app.get('/user/:userId([0-9]+)', fn);

虽然文档中有说明,但还不太清楚。
希望这可以帮助。

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

Express 路由器参数验证 的相关文章

随机推荐

  • import pandas_datareader 给出 ImportError: 无法导入名称 'is_list_like'

    我在虚拟环境中工作 我能够导入并在 pandas 中工作而没有任何错误 但是当我尝试时import pandas datareader import pandas as pd import numpy as np import matplo
  • 使用批处理从文件夹中打开随机文件

    我是一名正在学习编程的艺术家 我想创建一个批处理文件 该文件将从我的参考文件夹中选择一个随机图片文件 目标是获得一张随机图片来进行处理和学习 我环顾四周 看到的回复很难理解 而且经常与我不需要的其他特性和功能相关联 简而言之 如何制作一个从
  • “AppName”不再可用

    我在通过 Xcode 软件在 iPad 上安装应用程序而未将其上传到 Apple Store 时遇到了问题 我注意到几天后该应用程序停止工作 无法打开并显示一条消息 应用程序名称 不再可用 请问这个问题有什么办法解决吗 该应用程序是个人的
  • dotnet aspnet-codegenerator 工具未找到 Microsoft.VisualStudio.Web.CodeGeneration.Design

    我刚刚创建了一个 MVC 应用程序dotnet new mvc name test project netcoreapp3 1 没有任何类型的数据库访问和身份 我想手动添加以用于自定义目的 然后我添加了一些包以便使用dotnet aspne
  • 升级 Knex 后出现“获取连接超时”

    在我的公司 我们的应用程序在多个 EC2 实例和一个 RDS 数据库上的 NodeJS 上运行 我们的应用程序需要一些升级 因为一些依赖项已经相当旧了 我们所做的引起我们注意的升级之一是更新我们的数据库库 mysql 从 2 16 0 到
  • Caffe 准确率大于 100%

    我正在构建一个 但是当我使用上提供的自定义火车功能时莱内特示例 http nbviewer ipython org github BVLC caffe blob master examples 01 learning lenet ipynb
  • 如何使用客户端/服务器 Nailgun(在 Debian Stretch 上)运行简单的 Java 程序?

    我尝试使用Nailgun http www martiansoftware com nailgun on Debian GNU Linux 9 延伸 Nailgun 是一个客户端 协议和服务器 用于从命令行运行 Java 程序 而不会产生
  • 恢复用python删除的文件

    所以 我使用 python 删除了一个文件 我在回收箱中找不到它 有什么办法我可以undo它或其他东西 提前致谢 编辑 我用过os remove 我尝试过Recuva 但似乎没有发现任何东西 我做了深入的搜索 如果你用过os remove并
  • 使用 4 个线程获取/释放语义

    我目前正在阅读 Anthony Williams 撰写的 C Concurrency in Action 他的清单之一显示了这段代码 他指出以下断言z 0可以开火 include
  • 我应该使用 java.text.MessageFormat 来处理没有占位符的本地化消息吗?

    我们正在本地化在 Java 5 上运行的 Web 应用程序的用户界面文本 并且对于如何输出在属性文件中定义的消息 使用的类型 遇到了困境 java util Properties http java sun com j2se 1 5 0 d
  • 宏有什么好的用途吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 据我所知 宏在编译器正确看到程序文本之前就重新排列了它 因此可能会导致问题 我很少在 C 代码中看到它们 大部分是在 C 代码中 我所
  • SwiftUI 工作表显示包含错误数据的工作表

    我有一个显示 1 2 和 3 的列表 点击文本时 应用程序会打开一张包含点击数字的工作表 但是 如果我点击第二行或第三行中的文本 工作表中显示的数字仍然是 1 我做错了什么 import SwiftUI struct ContentView
  • Mac OS 登录项是否带有参数?

    在 Mac OS 中 我创建了一些 AppleScript 来添加和删除启动应用程序 帐户 系统窗格下的 登录项 bin bash usr bin osascript e tell application System Events to
  • 在最后一次出现的字符处拆分然后连接

    我想分割一个attribute在最后一次出现字符时 添加一个字符串并将数组重新连接在一起 这是一个简化的demo https jsfiddle net Ldjoqtk1 1 在演示中我想拆分src最后一次出现的属性 然后添加 fx to t
  • Node.js 生成的 csv 文件显示英镑符号 (£)

    我正在用这个json2scv https github com zemirco json2csv包解析我的数据 示例 json 数据在下面的代码中描述 我正在尝试使用以下代码在我的 Node js 应用程序中生成 CSV 文件 如果我在 E
  • jquery 对话框打开时窗口向上滚动

    我正在尝试使用 jquery 1 4 和 jquery ui 1 8rc3 custom js 打开模态 jquery 对话框 在所有浏览器中 对话框打开都没有问题 但在 IE 7 和 6 中 对话框打开后 窗口会自行滚动到底部 我尝试将窗
  • 如何将 Selenium 输出导出到 PHP?

    Firefox 的 Selenium IDE 似乎没有默认导出到 PHP 我需要 Selenium 才能将其输出转换为 PHP 以在 Drupal 中使用 如何安装PHP语言导出才能达到这个目标 现在它是 mozilla 中的一个附加组件
  • 显示 GDB 中当前的汇编指令

    我正在 GDB 中进行一些汇编级调试 有没有办法让 GDB 以与显示当前源代码行相同的方式显示当前的汇编指令 每个命令后的默认输出如下所示 0x0001433f 990 Foo bar p 这给了我当前指令的地址 但我必须继续参考disas
  • Bokeh HTML 模板格式化程序不起作用

    请看一下页面 https docs bokeh org en latest docs reference models widgets tables html bokeh models widgets tables HTMLTemplate
  • Express 路由器参数验证

    Express 4x api 文档声称您可以将正则表达式作为第二个参数传递给router param http expressjs com 4x api html router param为了验证参数 该方法现在可用于有效验证参数 以及 可