zoukankan      html  css  js  c++  java
  • Express路由

    Express利用HTTP动作提供了有意义并富有表现力的URL映射API,例如我们可能想让用户帐号的URL看起来像/user/12的样子,下面的例子就能实现这样的路由,其中与占位标识符(本例为:id)相关的值可以被req.params获取到。

    URL路径和参数看起来没有任何分别,真正的区别在于,将被哪个对象获取,例如:下面例子和对应的URL:http://..../user/12,user将匹配路径,12将匹配参数:id,它将被req.params对象获取到。

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

    上例中当我们访问/user/12时返回“user 12”。

    注:app.get相当于在服务器注册了一个监听get请求事件的侦听器,当请求的URL满足第一个参数时,执行后面的回调函数,该过程是异步的。

    路由是一个可以被内部编译正则表达式的简单字符串,比如当/user/:id被编译后,被内部编译后的正则表达式字符串看起来会是下面的样子(简化后):

    \/user\/([^\/]+)\/?

    要实现复杂点的,我们可以传入正则表达式直接量,因为正则捕获组是匿名的因此我们可以通过req.params进行访问,第一个捕获组应该是req.params[0],第二个应该是req.params[1],以此类推。

    app.get(/^\/users?(?:\/(\d+)(?:\.\.(\d+))?)?/, function(req, res){
        res.send(req.params);
    });

    通过不同的url来测试我们定义的路由:

    http://127.0.0.1:3000/users/any
    [
      null,
      null
    ]
    http://127.0.0.1:3000/users/12
    [
      "12",
      null
    ]
    http://127.0.0.1:3000/users/12..28
    [
      "12",
      "28"
    ]
    下面是一些路由例子,以及与之相匹配的关联路径:
    "/user/:id"
    /user/12
    
    "/users/:id?"
    /users/5
    /users
    
    "/files/*"
    /files/jquery.js
    /files/javascripts/jquery.js
    
    "/file/*.*"
    /files/jquery.js
    /files/javascripts/jquery.js
    
    "/user/:id/:operation?"
    /user/1
    /user/1/edit
    
    "/products.:format"
    /products.json
    /products.xml
    
    "/products.:format?"
    /products.json
    /products.xml
    /products
    
    "/user/:id.:format?"
    /user/12
    /user/12.json
  • 相关阅读:
    Fiddler 教程
    Android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
    Android获取Manifest中<meta-data>元素的值
    Android资源混淆保护实践
    Android中捕获TTextView文本中的链接点击事件方法
    Android APK 手动命令编译、打包、签名步骤
    Android签名总结
    软件概要设计模板
    整理了一份React-Native学习指南
    appium简明教程(转)
  • 原文地址:https://www.cnblogs.com/pigtail/p/2859183.html
Copyright © 2011-2022 走看看