设为首页 收藏本站
查看: 709|回复: 0

[经验分享] Nodejs的express路由规则

[复制链接]

尚未签到

发表于 2017-2-21 11:31:43 | 显示全部楼层 |阅读模式
  我们知道Express是一个基于NodeJS的非常优秀的服务端开发框架,本篇将介绍express框架的route路由。如果你还是不太理解,相信看完本篇文章将会有些收 获的。
  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);
})
  结果:
  
DSC0000.png
 
  一. *通配URL
  例如:

app.get('/test/*',function(req,res){
res.send(req.originalUrl);//req.originalUrl获取当前URL
});
  *号可以通配URL为localhost:3000/test/.......的URL
  运行结果:
  
DSC0001.png
 

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

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

  不能继续使用/
DSC0003.png
 

  三.next()权限控制转移
  express的路由控制有个next()功能,在定义了多个路由的时候,使用next对匹配的url会按顺序执行,
  如果不使用next进行权限转移,只会执行第一个满足的路由规则。
  next() 函数用于将当前控制权转交给下一步处理,如果给 next() 传递一个参数时,表示出错信息
  例如:

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满足这两个路由规则
  运行结果:
  
DSC0004.png
 next()一般用来编写中间件


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

// 检查用户是否登录中间件,所有需要登录权限的页面都使用此中间件
function checkLogin (req, res, next) {
if (req.session.user) {
next();//检验到用户已登入,转移权限阁下一个路由
} else {
res.redirect('/');//否则,页面重定位,不执行下面路由
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345217-1-1.html 上篇帖子: nodejs产生图片验证码 下篇帖子: nodejs使用nodejs创建简单的静态文件服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表