zoukankan      html  css  js  c++  java
  • Node.js GET/POST对应的url/query-string常用的方法介绍

    <一>,在学node.js--GET/POST请求时,先看模块url和query-string的用法

    1. 模块url用法,一般用于解析get请求。

    parse: [Function: urlParse]
    resolve: [Function: urlResolve]
    resolveObject: [Function: urlResolveObject]
    format: [Function: urlFormat]
    Url: [Function: Url]

    1.1 url.parse(str),此方法常用来解析get请求返回的数据

    const url = require('url');
    
    var strUrl = 'https://user:pass@sub.host.com:8080/p/a/t/h?username=zhange&password=123456#hash'; 
    console.log(url.parse(strUrl));
    console.log(url.parse(strUrl,true).query);

    返回结果

    结果1:
    Url { protocol:
    'https:', slashes: true, auth: 'user:pass', host: 'sub.host.com:8080', port: '8080', hostname: 'sub.host.com', hash: '#hash', search: '?username=zhange&password=123456', query: 'username=zhange&password=123456', pathname: '/p/a/t/h', path: '/p/a/t/h?username=zhange&password=123456', href: 'https://user:pass@sub.host.com:8080/p/a/t/h?username=zhange&password=123456#hash' }

    结果2:
    { username: 'zhange', password: '123456' }

    返回一个对象,参数说明解析

      href: 所解析的完整原始 URL。协议名和主机名都已转为小写 
      protocol: 请求协议,小写 
      host: URL主机名已全部转换成小写, 包括端口信息 
      auth:URL中身份验证信息部分 
      hostname:主机的主机名部分, 已转换成小写 
      port: 主机的端口号部分 
      pathname: URL的路径部分,位于主机名之后请求查询之前 
      search: URL 的“查询字符串”部分,包括开头的问号 
      path: pathname 和 search 连在一起 
      query: 查询字符串中的参数部分(问号后面部分字符串) 
      hash: URL 的 “#” 后面部分(包括 # 符号)

    1.2 url.format(str) 是 1.1 url.parse(str)反用法,把给定的对象再转换成一个字符串

    const url = require('url');
    
    let obj = {
        protocol: 'https:',
        slashes: true,
        auth: 'user:pass',
        host: 'sub.host.com:8080',
        port: '8080',
        hostname: 'sub.host.com',
        hash: '#hash',
        search: '?query=string',
        query: 'query=string',
        pathname: '/p/a/t/h',
        path: '/p/a/t/h?query=string',
        href: 'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash' 
    };
    
    let str = url.format(obj);

    得到的结果

    https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash

     2. 模块query-string用法,一般用于解析post请求的数据。

    2.1  querystring.parse(str,separator,eq,options)

    parse这个方法是将一个字符串反序列化为一个对象。

    参数:str指需要反序列化的字符串;

       separator(可省)指用于分割str这个字符串的字符或字符串,默认值为"&";

       eq(可省)指用于划分键和值的字符或字符串,默认值为"=";

       options(可省)该参数是一个对象,里面可设置maxKeys和decodeURIComponent这两个属性:

         a. maxKeys:传入一个number类型,指定解析键值对的最大值,默认值为1000,如果设置为0时,则取消解析的数量限制;

         b. decodeURIComponent:传入一个function,用于对含有%的字符串进行解码,默认值为querystring.unescape。在官方API的例子中,使用gbkDecodeURIComponent这个方法会报错,显示gbkDecodeURIComponent is no defined,这是因为在使用这个gbkDecodeURIComponent这个方法之前需要先进行定义。在API中也写了Assuming gbkDecodeURIComponent function already exists...这句话的意思是”假设这个gbkDecodeURIComponent方法已经存在”。

    const queryString = require('query-string');
    
    var str = 'username=zhange&password=123456&type=girl';
    
    console.log(queryString.parse(str));

    返回结果

    { password: '123456', type: 'girl', username: 'zhange' }

    2.2 querystring.stringify(obj,separator,eq,options)

    stringify这个方法是将一个对象序列化成一个字符串,与querystring.parse相对。

    参数:obj指需要序列化的对象

       separator(可省)用于连接键值对的字符或字符串,默认值为"&";

       eq(可省)用于连接键和值的字符或字符串,默认值为"=";

       options(可省)传入一个对象,该对象可设置encodeURIComponent这个属性:encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()。

    querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
    // 返回 'foo=bar&baz=qux&baz=quux&corge='
    
    querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
    // 返回 'foo:bar;baz:qux'
  • 相关阅读:
    Deltix Round, Summer 2021
    CF1558F Strange Sort 题解
    将文本复制到粘贴板上
    Mac安装2021ps
    腾讯云TDSQL-C云原生数据库技术
    腾讯云分布式数据库TDSQL再获认可
    T-TDSQL的核心技术
    TDSQL原创技术的出发点
    拓路前行-TDSQL追求极致体验的这一路
    TDSQL多集群下的自动化和交付
  • 原文地址:https://www.cnblogs.com/yyy6/p/8252736.html
Copyright © 2011-2022 走看看