Node.js -- Router模块中有一个param方法

这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方:

Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的:

1
Map logic to route parameters.

大概意思就是路由参数的映射逻辑

这个可能一时半会也不明白其作用,尤其是不知道get和param的执行顺序

再看看源码里面的介绍:

1
2
3
Map the given param placeholder `name`(s) to the given callback.
Parameter mapping is used to provide pre-conditions to routes
which use normalized placeholders

这就清晰多了,翻译过来就是说:

在所给的参数和回调函数之间做一个映射,作为使用标准化占位符的路由的前提条件。

下面给出一段具体代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var express = require('express');
var app = express();
var router = express.Router();
router.count = 0;
router.get('/users/:user'function(req, res, next) {
    router.count ++;
    console.log(router.count);
});
router.param('user'function(req, res, next, id) {
    router.count ++;
    res.send({count: router.count});
    next();
});
app.use(router);
app.listen(3000);

命令行下输入

node xxx.js

浏览器访问

http://localhost:3000/users/bsn

这时候命令行会输出2,而浏览器会输出

{
count: 1
}

因此,param会先于get执行

转载于:https://www.cnblogs.com/chris-oil/p/4985542.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何测试数据库表空间不足场景

1、select * from DBA_DATA_FILES; 这个命令主要是了解数据库实例中各个模块数据库表空间的大小,是否支持自动扩展(AUTOEXTENSIBLE),MAX扩展(MAXBYTES),以及各个表空间的路径(\oracle\oradata\i2kdb\omscm.dbf) 查看AU…

2019年java安装步骤_win10的JAVA(jdk)2020年最新版安装教程心得

想学安卓反向解析,前期工作就把我折腾得够呛,java安装教程大多18年之前的,和现在的有一些不同,导致我按照网上的教程折腾了好几天都没安装成功,今天突然成功了,有点开心,迫不及待把自己的一些小…

蛋白质结构域的概念_Chapter1 蛋白质结构与功能2

本次回顾两大点:一、肽二、蛋白质结构————一、肽:概念:肽是由氨基酸通过肽键连接形成的线性分子。如上,该教学图涉及知识:1.肽键生成(最好能将反应式写出来)2.氨基酸残基residue3.肽的方向性N —> C4.肽命名5.肽…

css中的em 简单教程 -- 转

先附上原作的地址: https://www.w3cplus.com/css/px-to-em 习惯性的复制一遍~~~~ -------------------------------我是分界线----------------------------------- 什么是弹性布局? 用户的文字大小与弹性布局 用户的浏览器默认渲染的文字大小是“16px”&#xff0c…

信息安全系统设计基础第十一周 20135218 姬梦馨

第8章 异常控制流 控制流:控制转移序列。 控制转移:从一条指令到下一条指令。例:从k到k1的过渡称为控制转移。 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流。 平滑&…

ASP.NET MVC下的四种验证编程方式[续篇]

ASP.NET MVC下的四种验证编程方式[续篇] 原文:ASP.NET MVC下的四种验证编程方式[续篇]在《ASP.NET MVC下的四种验证编程方式》一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”、“标注ValidationAttribute特性”、“让数据类型实现IValida…

axios 配置loading_用Axios Element 实现全局的请求 loading

Kapture 2018-06-07 at 14.57.40.gif背景业务需求是这样子的,每当发请求到后端时就触发一个全屏的 loading,多个请求合并为一次 loading。现在项目中用的是 vue 、axios、element等,所以文章主要是讲如果使用 axios 和 element 实现这个功能。…

请求的内容似乎是脚本,因而将无法有静态文件处理程序来处理(http error 404.17、0x80070032、IIS7)...

由于工作需要,需要在在一台新的服务器上迁移 .Net Framwork 4.0的Web项目 环境:Windows Server 2008 SP2,IIS 7,.Net FrameWork 4.0,Classic 由于项目正常在老服务器上运行,所有直接将项目拷贝过来部署在IIS上面,配置后链接字符串等等之后访问…

Codeforces Round #114 (Div. 1) A. Wizards and Trolleybuses 物理题

A. Wizards and Trolleybuses Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/167/problem/A Description In some country live wizards. They love to ride trolleybuses. A city in this country has a trolleybus depot with n trolleyb…

如何使用GOOGLE高级搜索技巧

原文出处: 新浪博客(未找到原始出处) 如何使用GOOGLE高级搜索技巧 一,GOOGLE简介 Google(www.google.com)是一个搜索引擎,由两个斯坦福大学博士生Larry Page与Sergey Brin于1998年9月发明&am…

powershell 遍历json_遍历JSON文件PowerShell

我试图在PowerShell中遍历以下JSON文件。如果没有专门命名顶部标签(例如17443和17444),由于我事先不知道它们的名称,就无法找到遍历数据的方法。我想为所有记录输出标签3、4和5(标题,名字,姓氏)。我该怎么做?{"17…

ZooKeeper管理分布式环境中的数据

Reference: http://www.cnblogs.com/wuxl360/p/5817549.html 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法、Zab协议、通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景&#xff0…

启用nginx status状态详解

nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。为了后续的zabbix监控,我们需要先了解nginx状态页是怎么回事。 1. 启用nginx status配置 在默认主机里面加上location或者你希望能访问到的主机里面。 server {liste…

企业级应用架构(三)三层架构之数据访问层的改进以及测试DOM的发布

在上一篇我们在宏观概要上对DAL层进行了封装与抽象。我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了;第二,使我们的DAL层能够支持一切数据访问技术,如Ado.net,EF,linq To Sql&#x…

ctr多少正常_亚马逊广告ctr多少才算合格,如何提升亚马逊CTR

亚马逊广告ctr多少才算合格,如何提升亚马逊CTR很多亚马逊卖家并不重视点击率,其实点击率和转化率是同样重要的。好的点击率可以提升产品listing的流量,间接影响转化,促进销量。一般来说亚马逊点击率多少算正常呢?CTR全…

在linux中,我为什么不能安装VMware Tools?

在linux中,我为什么不能安装VMware Tools? 应该是操作不正确导致,以下为linux安装VMware Tools的方法。 1、在安装Linux的虚拟机中,单击“虚拟机”菜单下的“安装Vmware-Tools” 2、出现以下菜单,证明Vmware-Tools的光…

判断 CGRect是否“为空”

2019独角兽企业重金招聘Python工程师标准>>> property (nonatomic, assign) CGRect prototypeRect; -----这样的声明应该没有问题的,的if(!self.prototypeRect)报错是因为 CGRect是结构体,不能作非nil判断,你可以利用self.protot…

关于反射Assembly.Load(程序集).CreateInstance(命名空间.类)

关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")而不管在哪一层写这段代码其中的("程序集")读取的实际是web层bin文件夹下的dll,也就是说你反射的类的程序集dll在web层的bin下必须有Assembly.Load("程序集名")Assembl…

centos6安装mysql权限被拒绝_CentOS6.6安装mysql出现的问题

mysql编译需要cmake,我的cmake-2.6.4-5.el6.i686,最新版的是3.1.0,我就先用2.6.4的试试​  [rootlocalhost src]# wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz​[rootlocalhost src]#tar -zxf mysql-5.6.22.tar.gz…

sqlite insert数据要用“?”代替“%s”

import sqlite3 conn sqlite3.connect(example.db) c conn.cursor()Usually your SQL operations will need to use values from Python variables. You shouldn’t assemble your query using Python’s string operations because doing so is insecure; it makes your pro…