express路由规则及写法

我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇将介绍express框架的route路由。如果你还是不太理解,相信看完本篇文章将会有些收 获的。(原文地址:http://hm4123660.iteye.com/blog/2195035)

express 封装了多种 http 请求方式,我们主要只使用 get和post,可以使用 app.all 获取所以请求方式,回调函数有两个参数分别是 req 和 res,代表请求信息和响应信息。

  • req.query

    : 处理 get 请求

  • req.params

    : 处理 /:xxx 形式的 get 请求

  • req.body

    : 处理 post 请求

  • req.param()

    : 可以处理 get 和 post 请求,但查找优先级由高到低为req.params→req.body→req.query

例如:

获取表达post的参数

var username=req.body.name;//获取post参数
var password=req.body.password;

获取get参数

访问URL:http://localhost:3000/test?id=110&password=120

获取代码:

app.get('/test',function(req,res){
    res.send("id: "+req.query.id+"  password: "+req.query.password);
})
结果:

一. *通配URL

例如:

app.get('/test/*',function(req,res){
    res.send(req.originalUrl);//req.originalUrl获取当前URL
});

   *号可以通配URL为localhost:3000/test/.......的URL

运行结果:



二. /:id的占位标识符URL

例如:

app.get('/test/:userid',function(req,res){
    res.send("userid: "+req.params.userid);//req.params.userid获取userid的值
});
运行结果:

不能继续使用/ 

三.next()权限控制转移

express的路由控制有个next()功能,在定义了多个路由的时候,使用next对匹配的url会按顺序执行,

如果不使用next进行权限转移,只会执行第一个满足的路由规则。

<span class="token comment">next() 函数用于将当前控制权转交给下一步处理,如果给 next() 传递一个参数时,表示出错信息</span>

例如:

app.get('/test/*',function(req,res,next){
    //res.send("userid:");//要进行转移,不要响应客户端
req.temp="给你控制权";
    next();//把权限转移到下一个路由
});
app.get('/test/next',function(req,res){
    res.send("content: "+req.temp);
})

访问URL:http://localhost:3000/test/next满足这两个路由规则

运行结果:

next()一般用来编写中间件

  • 中间件一般不直接对客户端进行响应,而是对请求进行一些预处理,再传递下去;
  • 中间件一般会在路由处理之前执行;

比如:

// 检查用户是否登录中间件,所有需要登录权限的页面都使用此中间件
function checkLogin (req, res, next) {
  if (req.session.user) {
    next();//检验到用户已登入,转移权限阁下一个路由
  } else {
    res.redirect('/');//否则,页面重定位,不执行下面路由
  }
} 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值