[转]express 路由控制--next
next()
express的路由控制有个next()功能,在定义了多个路由的时候,对匹配的url会按顺序执行,
例如,有这样两个路由,第一个路由会对满足“/”的地址,在req中添加一个user的属性,然后再交给接下去的路由处理
所以当访问....../user时,可以从req中取出user信息
- app.get(/^\/*/,function(req, res, next){
- req.user ="shuilan";
- next(); // 将控制转向下一个符合URL的路由
- });
- app.get('/user', function(req, res){
- res.send('viewing ' + req.user);
- });
用这种方式,可以对满足某一条件的url地址,先做一些处理(比如加载用户信息之类的),然后再转交给更具体的路由处理
路由中间件
与此功能类似的,还有路由中间件的功能,
一个路由中可以添加一个或者多个回调函数,如
- app.get('/user/:id/edit', loadUser, andRestrictToSelf, function(req, res){
- res.send('开始编辑用户 ' + req.user.name);
- });
这个路由添加了3个处理函数,会按顺序执行
loadUser可以是形如这样的处理函数
- function loadUser(req, res, next) {
- // 这里提供假数据,你可以从数据库中获取真实用户信息
- var user = users[req.params.id];
- if (user) {
- req.user = user;
- next();
- } else {
- next(new Error('不存在的用户 ' + req.params.id));
- }
- }
这样就能将多个路由都需要用到的处理提取出来,写成单独的函数,或者用来提前做一些条件判断
其他:
express的use()功能在api中的定义是app.use([path],function),
不指定path的情况下,对应的是默认的'/',
当指定path时,会对匹配的url进行处理,
但是这里的path貌似不能像get、all那样进行正则匹配
参考:
http://www.csser.com/board/4f77e6f996ca600f78000936#/post/4f77ea1cbe3baa0d7800153c
原文:
http://blog.csdn.net/haidaochen/article/details/8615621
[转]express 路由控制--next的更多相关文章
- 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs
1. 路由控制的工作原理 //routes/index.js中的代码//访问主页时,调用ejs模板引擎,渲染index.ejs模板文件,生成静态页面,并显示在浏览器中.router.get('/', ...
- 初步掌握node的路由控制
1.1.2:node.js的路由控制 1.运行原理 在1.1.1节中,提到过app.js中app.get("/",routes.index)可以用以下代码取代: app.get(& ...
- express路由和中间件
路由 简单来说,express路由就是用来处理一些请求,响应一些url地址. var express = require('express'); var app = express(); app.ge ...
- node——路由控制
路由控制 前面我接触了如何使用express建立一个工程,虽然这个工程包含了一些基本的框架,但是没有实际内容,我们会不断给他增加的. 工作原理 我们在浏览器中访问app.js建立的服务器时,会出现一个 ...
- angularJs模块ui-router之路由控制
在你的应用中大多数状态都有与其相关联的 url,路由控制不是设计完成 state 之后的事后想法,而是开始开发时就应该考虑的问题. 这里是如何设置一个基本url. $stateProvider .st ...
- Router和History (路由控制)-backbone
Router和History (路由控制) Backbone.Router担任了一部分Controller(控制器)的工作,它一般运行在单页应用中,能将特定的URL或锚点规则绑定到一个指定的方法(后文 ...
- golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
先简单回顾一下在上一篇的文章中,上一篇我主要是结合了数组和Map完成路由映射,数组的大小为8,下标为0的代表Get方法,以此类推,而数组的值则是Map,键为URL,值则是我们编写对应的接口.但 ...
- rest_framework之解析器、路由控制、分页
解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_fr ...
- Django-restframework之路由控制、解析器及响应器
django-restframework之路由控制.解析器及响应器 一 前言 本篇博客介绍 restframework 框架的剩下几个组件,路由控制有三种:传统路由.半自动路由及全自动路由:解析器是用 ...
随机推荐
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- Centos系统 上下文切换的检查思路
1.什么是上下文切换(Context Switch)? 上下文切换,有时也称做进程切换或任务切换,是指CPU从一个进程或线程切换到另一个进程或线程. 操作系统可以同时运行多个进程, 然而一颗CPU同时 ...
- 仿Facebook登录表单
在线演示 本地下载
- dll和lib
lib:里面包含了很多源代码,工程会将这些源代码加入自己的项目中编译: dll:动态编译库,允许可执行文件在运行中加载里面的资源. 使用lib需注意两个文件:(1).h头文件,包含lib中说明输出的类 ...
- INSPIRED启示录 读书笔记 - 第25章 快速响应阶段
产品出炉后切莫虎头蛇尾 急于“撤军”是项目管理和产品开发流程中的大忌,只要稍微延长项目周期,观察用户对产品的反应,效果就会有天壤之别.这样做投资之小.回报之高会令你瞠目结舌,绝非其他项目阶段可比 产品 ...
- Deep Learning概述
1.深度学习发展简史 2.三步实现深度学习 2.1Neural Network 神经网络由模仿脑部神经系统发展而来,一个节点称为一个“Neuron”,包括连接在节点上面的weights和biases. ...
- 分布式任务调度平台XXL-Job集群版搭建
如果集群: 保存后: 启动两个 job 第二个job的配置: # web port server.port=8082 # log config logging.config=classpath:log ...
- 1028: [JSOI2007]麻将
1028: [JSOI2007]麻将 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2638 Solved: 1168[Submit][Status] ...
- js用星号隐藏电话中间四位号码
$(document).ready(function(){ var mobile="{$user.mobile}"; var reg=/^(\d{3})\d{4}(\d{4})$/ ...
- Phoenix on HBase
(一)概要 Apache Phoenix是基于BSD许可开源的一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Apache Phoenix主要特性: 嵌入式的JDBC驱动, ...