• nodejs学习笔记<三>关于路由(url)


    在网站开发中,路由的设置非常关键。nodejs对路由处理封装了一个比较全面的模块。

    来认识下url模块

    1)在命令行(cmd)可以直接 node —> url 可直接查看url模块的所有方法。

    2)在js中通过require调用url模块。var url = require('url');

    url包括:parseresolveresolveObjectformat四个方法。

    1)parse:

    parse用来解析url地址。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。

    例1:解析一个合法url

    var url = require('url');
    /*解析url*/
    function parse_url(){
        return url.parse("https://www.baidu.com/");
    }
    console.log(parse_url());

    执行结果:

    parse方法提供了比较全面的解析。

    protocol:底层使用的协议(比如:http,ftp,https等等)

    slashes:url是否有双斜线

    host:url的域名或IP地址

    port:端口

    hostname:主机名

    hash:锚值(解析页面锚点,带#号的锚链接)

    search:查询字符串参数(url连同?后面的参数一起,通常是请求参数)

    query:向服务器请求的参数(这里的值和search非常像,只是少一个问号)

    pathname:访问资源路径名(网站资源页,或资源的路径名)

    path:路径

    注:pathname和path的区别:pathname只资源路径(从url的com后的/开始一直到?中间的值),而path获取的是除域名或ip外的全部路径(从url的com后的/开始一直到url结束)

    href:完整的url字符串。

    这些属性都可以通过url.parse直接调用获取对应值。例如:url.parse("http://www.baidu.com").path (直接获取url的路径值)

    例2:解析一个相对复杂的url

    var url = require('url');
    /*解析url*/
    function parse_url(){
        return url.parse("https://www.baidu.com:8080/map/list?id=125&name=tom#top");
    }
    console.log(parse_url());

    执行结果:

    parse第二,三个参数,parse的第二和第三个参数是可选参数,如果不加默认第二,三参数为false。

    parse第二个参数:

    用来将query的值解析为对象。

    例:

    var url = require('url');
    /*解析url*/
    function parse_url(){
        return url.parse("https://www.baidu.com:8080/map/list?id=125&name=tom#top",true);
    }
    console.log(parse_url());

    执行结果:

    仅仅是query返回结果有变化,其他结果不变。

    parse第三个参数:

    用来解析不带明显请求协议的url,例如://192.168.1.1:8080/login

    例:

    var url = require('url');
    /*解析url*/
    function parse_url(){
        return url.parse("//192.168.1.1:8080/longin?name=admin&pwd=admin",true,true);
    }
    console.log(parse_url());

    执行结果:

    注意:对比加了第三个参数和不加第三个参数parse出来的结果对比。

    2)format:

    format接受一个包含protocol,slashes,auth,host,port,hostname,hash,search,query,pathname,path的对象,生成一个合法的url。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。

    例:

    var url = require('url');
    /*生成url*/
    function parse_url(){
        return url.format({
             protocol: 'www.baidu.com:',
             slashes: null,
             auth: null,
             host: '8080',
             port: null,
             hostname: '8080',
             hash: null,
             search: '?name=admin&pwd=admin',
             query: 'name=admin&pwd=admin',
             pathname: '/longin',
             path: '/longin?name=admin&pwd=admin',
        });
    }
    console.log(parse_url());

    执行结果:

    3)resolve

    接受 域名(或ip地址) 和 路径 生成完整url。同样可以直接用命令行(cmd)调用,也可以在js中通过url模块使用。

    例:

    var url = require('url');
    /*生成url*/
    function parse_url(){
        return url.resolve("http://www.soso.com","/map/chain");
    }
    console.log(parse_url());

    执行结果:

    **************************************************************************************************************

    url模块对服务器交互起到至关重要的作用。

    以上详解的三个方法属于url常用方法,也是nodejs官网具体介绍的三个。

  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/MirageFox/p/5641770.html
Copyright © 2020-2023  润新知