Open In App

Node.js URLsearchParams API

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Node.js is an open-source project widely used for the development of dynamic web applications. The URLSearchParams API in Node.js allows read and write operations on the URL query.

The URLSearchParams class is a global object and used with one of the four following constructors.

Constructors:

  1. new URLSearchParams(): No argument constructor instantiates a new empty URLSearchParams object.
  2. new URLSearchParams(string): Accepts a string as an argument to instantiate a new URLSearchParams object.




    var params = new URLSearchParams('user=abc&q=xyz');
    console.log(params.get('user'));
    console.log(params.get('q'));

    
    

    Output:

    abc
    xyz
  3. new URLSearchParams(obj): Accepts an object with a collection of key-value pairs to instantiate a new URLSearchParams object. The key-value pair of obj are always coerced to strings. Duplicate keys are not allowed.




    const params = new URLSearchParams({
      user: 'ana',
      course: ['math', 'chem', 'phys']
    });
    console.log(params.toString());

    
    

    Output:

    user=ana&course=math%2Cchem%2Cphys
  4. new URLSearchParams(iterable): Accepts an iterable object having a collection of key-value pairs to instantiate a new URLSearchParams object. Iterable can be any iterable object. Since URLSearchParams is iterable, an iterable object can be another URLSearchParams, where the constructor will create a clone of the provided URLSearchParams. Duplicate keys are allowed.




    // 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());

    
    

    Output:

    West+Bengal=Kolkata&Karnataka=Bengaluru

Accessing the URL query:

  • urlSearchParams.get(name): Returns the value of the first name-value pair that matches with the argument passed. If no such pair exists, null is returned.




    const myURL = new URL(
      
    console.log(myURL.searchParams.get('abc'));

    
    

    Output:

    123
  • urlSearchParams.getAll(name): Returns all the value of the name-value pair that matches with the argument passed. If no such pair exists, null is returned.




    const myURL = new URL(
    console.log(myURL.searchParams.getAll('abc'));

    
    

    Output:

    [ '123', '526' ]
  • urlSearchParams.has(name): Returns true if the argument passed matches with any existing name of the name-value pair else returns false.




    const myURL = new URL(
    console.log(myURL.searchParams.has('abc'));
    console.log(myURL.searchParams.has('pqr'));

    
    

    Output:

    true
    false

Manipulating the URL query:

  • urlSearchParams.set(name, value): Sets the value in the URLSearchParams object associated with name to the specified value. If more than one name-value pairs exists, whose names are same as the ‘name’ argument, then the only value of first matching pair is changed, rest all are removed.




    const params = new URLSearchParams(
        'abc=123&xyz=526&abc=258');
    console.log(params.toString());
    params.set('abc', 'opq');
    console.log(params.toString());

    
    

    Output:

    abc=123&xyz=526&abc=258
    abc=opq&xyz=526
  • urlSearchParams.append(name, value): Appends a new name-value pair to the existing URLSearchParams query.




    const params = new URLSearchParams('xyz=123');
    params.append('foo', '789');
    params.append('xyz', 'zoo');
    params.append('foo', 'def');
    console.log(params.toString());

    
    

    Output:

    xyz=123&foo=789&xyz=zoo&foo=def
  • urlSearchParams.delete(name): Removes all name-value pairs whose name is same as ‘name’ argument.




    const params = new URLSearchParams(
      'xyz=123&foo=789&xyz=zoo&foo=def');
    console.log(params.toString());
    params.delete('foo');
    console.log(params.toString());

    
    

    Output:

    xyz=123&foo=789&xyz=zoo&foo=def
    xyz=123&xyz=zoo
  • urlSearchParams.sort(): Sorts the existing name-value pairs in-place by their names using a stable sorting algorithm.




    const params = new URLSearchParams(
      'query=node&type=search&abc=programs');
    params.sort();
    console.log(params.toString());

    
    

    Output:

    abc=programs&query=node&type=search
  • urlSearchParams.toString(): Returns the URL search parameters as a string, with characters percent-encoded wherever necessary.




    const params = new URLSearchParams(
      'query=node&type=search&passwd[]=3456');
    console.log(params.toString());

    
    

    Output:

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

Iterating the URL query:

  • urlSearchParams.entries(): Returns an iterator over the entry set of the param object.




    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var pair of params.entries()) {
       console.log(pair[0]+ '-->'+ pair[1]); 
    }

    
    

    Output:

    query-->node
    type-->search
    passwd-->3456
  • urlSearchParams.keys(): Returns an iterator over the key set of the param object.




    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var key of params.keys()) {
       console.log(key); 
    }

    
    

    Output:

    query
    type
    passwd
  • urlSearchParams.values(): Returns an iterator over the value set of the param object.




    const params = new URLSearchParams(
        'query=node&type=search&passwd=3456');
    for(var value of params.values()) {
       console.log(value); 
    }

    
    

    Output:

    node
    search
    3456
  • urlSearchParams.forEach(fn[, arg]): fn is a function invoked for each name-value pair in the query and arg is an object to be used when ‘fn’ is called. It iterates over each name-value pair in the query and invokes the function.




    const myURL = new URL(
    myURL.searchParams.forEach(
      (value, name, searchParams) => {
    console.log(name, value, 
      myURL.searchParams === searchParams);
    });

    
    

    Output:

    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);
    }

    
    

    Output:

    firstname john
    lastname beck
    gender male
    


Last Updated : 10 Jul, 2020
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads