📜  Node.js URLsearchParams API

📅  最后修改于: 2022-05-13 01:56:18.906000             🧑  作者: Mango

Node.js URLsearchParams API

Node.js 是一个开源项目,广泛用于开发动态 Web 应用程序。 Node.js 中的 URLSearchParams API 允许对 URL 查询进行读写操作。

URLSearchParams 类是一个全局对象,与以下四个构造函数之一一起使用。

构造函数:

  1. new URLSearchParams():无参数构造函数实例化一个新的空 URLSearchParams 对象。
  2. new URLSearchParams(字符串):接受一个字符串作为参数来实例化一个新的 URLSearchParams 对象。
    var params = new URLSearchParams('user=abc&q=xyz');
    console.log(params.get('user'));
    console.log(params.get('q'));
    

    输出:

    abc
    xyz
  3. new URLSearchParams(obj):接受具有键值对集合的对象来实例化新的 URLSearchParams 对象。 obj 的键值对总是强制转换为字符串。不允许重复键。
    const params = new URLSearchParams({
      user: 'ana',
      course: ['math', 'chem', 'phys']
    });
    console.log(params.toString());
    

    输出:

    user=ana&course=math%2Cchem%2Cphys
  4. new URLSearchParams(iterable):接受具有键值对集合的可迭代对象来实例化新的 URLSearchParams 对象。 Iterable 可以是任何可迭代的对象。由于 URLSearchParams 是可迭代的,因此可迭代对象可以是另一个 URLSearchParams,构造函数将在其中创建提供的 URLSearchParams 的克隆。允许重复键。
    // Using a Map object as it is iterable
    const map = new Map();
    map.set('West Bengal', 'Kolkata');
    map.set('Karnataka', 'Bengaluru');
    params = new URLSearchParams(map);
    console.log(params.toString());
    

    输出:

    West+Bengal=Kolkata&Karnataka=Bengaluru

访问 URL 查询:

  • urlSearchParams.get(name):返回与传递的参数匹配的第一个名称-值对的值。如果不存在这样的对,则返回 null。
    const myURL = new URL(
      'https://example.org/?abc=123&abc=526');
      
    console.log(myURL.searchParams.get('abc'));
    

    输出:

    123
  • urlSearchParams.getAll(name):返回与传递的参数匹配的名称-值对的所有值。如果不存在这样的对,则返回 null。
    const myURL = new URL(
      'https://example.org/?abc=123&abc=526');
    console.log(myURL.searchParams.getAll('abc'));
    

    输出:

    [ '123', '526' ]
  • urlSearchParams.has(name):如果传递的参数与名称-值对的任何现有名称匹配,则返回 true,否则返回 false。
    const myURL = new URL(
      'https://example.org/?abc=123&xyz=526');
    console.log(myURL.searchParams.has('abc'));
    console.log(myURL.searchParams.has('pqr'));
    

    输出:

    true
    false

操作 URL 查询:

  • urlSearchParams.set(name, value):将与 name 关联的 URLSearchParams 对象中的值设置为指定值。如果存在多个名称-值对,其名称与 'name' 参数相同,则更改第一个匹配对的唯一值,其余的都被删除。
    const params = new URLSearchParams(
        'abc=123&xyz=526&abc=258');
    console.log(params.toString());
    params.set('abc', 'opq');
    console.log(params.toString());
    

    输出:

    abc=123&xyz=526&abc=258
    abc=opq&xyz=526
  • urlSearchParams.append(name, value):将新的名称-值对附加到现有的 URLSearchParams 查询。
    const params = new URLSearchParams('xyz=123');
    params.append('foo', '789');
    params.append('xyz', 'zoo');
    params.append('foo', 'def');
    console.log(params.toString());
    

    输出:

    xyz=123&foo=789&xyz=zoo&foo=def
  • urlSearchParams.delete(name):删除所有名称与 'name' 参数相同的名称-值对。
    const params = new URLSearchParams(
      'xyz=123&foo=789&xyz=zoo&foo=def');
    console.log(params.toString());
    params.delete('foo');
    console.log(params.toString());
    

    输出:

    xyz=123&foo=789&xyz=zoo&foo=def
    xyz=123&xyz=zoo
  • urlSearchParams.sort():使用稳定的排序算法按名称对现有名称-值对进行就地排序。
    const params = new URLSearchParams(
      'query=node&type=search&abc=programs');
    params.sort();
    console.log(params.toString());
    

    输出:

    abc=programs&query=node&type=search
  • urlSearchParams.toString():将 URL 搜索参数作为字符串返回,必要时使用百分比编码的字符。
    const params = new URLSearchParams(
      'query=node&type=search&passwd[]=3456');
    console.log(params.toString());
    

    输出:

    query=node&type=search&passwd%5B%5D=3456

迭代 URL 查询:

  • urlSearchParams.entries():返回对 param 对象的条目集的迭代器。
    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var pair of params.entries()) {
       console.log(pair[0]+ '-->'+ pair[1]); 
    }
    

    输出:

    query-->node
    type-->search
    passwd-->3456
  • urlSearchParams.keys():返回对 param 对象的键集的迭代器。
    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var key of params.keys()) {
       console.log(key); 
    }
    

    输出:

    query
    type
    passwd
  • urlSearchParams.values():返回参数对象的值集的迭代器。
    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var value of params.values()) {
       console.log(value); 
    }
    

    输出:

    node
    search
    3456
  • urlSearchParams.forEach(fn[, arg]): fn 是为查询中的每个名称-值对调用的函数,arg 是调用“fn”时要使用的对象。它遍历查询中的每个名称-值对并调用函数。
    const myURL = new URL(
      'https://example.com/?a=b&c=d&d=z');
    myURL.searchParams.forEach(
      (value, name, searchParams) => {
    console.log(name, value, 
      myURL.searchParams === searchParams);
    });
    

    输出:

    a b true
    c d true
    d z true
  • urlSearchParams[Symbol.iterator]():
    const params=new URLSearchParams(
        'firstname=john&lastname=beck&gender=male');
    for (const [name, value] of params) {
      console.log(name, value);
    }
    

    输出:

    firstname john
    lastname beck
    gender male