Open In App

Node.js URL.format(urlObject) API

Improve
Improve
Like Article
Like
Save
Share
Report

The URL.format(urlObject) is the inbuilt API provided by URL class, which takes an object or string and return a formatted string derived from that object or string.

Syntax:

const url.format(urlObject)

If the urlObject is not an object or string, then it will throw a TypeError.
Return value: It returns string derived from urlObject.

The urlObject can have the following fields or keys:

  • protocol
  • slashes
  • auth
  • hostname
  • host
  • port
  • pathname
  • search
  • query
  • hash

The formatting process is as follows:

      1. Initially, an empty string (‘’ say result) is created and then following parameters are looked for in order.

      2. urlObject.protocol: string

      • If urlObject.protocol is a string it is appended to the result else if not undefined and not a string then Error is thrown.
      • If urlObject.protocol do not end with ASCII colon ( : ) then, the literal ‘:’ is appended to the result.
      3. urlObject.slashes: boolean

      • If either of the following property is true, then literals ‘//’ are appended to the result:
        • urlObject.slashaes is true.
        • urlObject.protocol is http, https, ftp, gopher, or file, then slashes will be automatically true even if slashes is false.
      4. urlObject.auth: string

      • If the urlObject.auth is not undefined and urlObject.host or urlObject.hostname is also not undefined then auth is appended to the result with literal ‘@’ irrespective of whether the literal ‘@’ present or not at the end.
      5. urlObject.host: string

      • If urlObject.host is a string it is appended to the result else if not undefined and not a string then Error is thrown.
      • If it is undefined then urlObject.hostname is considered.
      6. urlObject.hostname: string

      • If urlObject.hostname is a string it is appended to the result else if not undefined and not a string then Error is thrown.
      • If both host and hostname are defined then host will be given considered.
      7. urlObject.port: (number | string)

      • If hostname is considered and urlObject.port is defined then literal ‘:’ will be appended to the result along with urlObject.port.
      8. urlObject.pathname: string

      • If urlObject.pathname is a string but not empty string and not starting with literal ‘/’, then literal ‘/’ is appended to the result.
      • urlObject.pathname is appended to the result.
      • Else UrlObject.pathname is not a string then Error is thrown.
      9. urlObject.search: string

      • If urlObject.search is a string but not empty string and not starting with literal ‘?’, then literal ‘?’ is appended to the result.
      • urlObject.search is appended to the result.
      • If urlObject.search is not a string then Error is thrown.
      10. urlObject.query: Object

      • If urlObject.query is an Object then literal ‘?’ is appended to the result along with output of calling the querystring module’s stringify() method passing the value of urlObject.query.
      • If both urlObject.search and urlObject.query are defined then urlObject.search will only be considered.
      11. urlObject.hash: string

      • If urlObject.hash is a string but not empty string and not starting with literal ‘#’, then literal ‘#’ is appended to the result.
      • urlObject.hash is appended to the result.
      • Else urlObject.hash is not a string and is not undefined then Error is thrown.
      12. Finally, the result is returned.

Example 1




/*
  node program to demonstrate the URL.format API.
*/  
    
//importing the module 'url'
const url = require('url');
  
//creating and initializing urlObject
var urlObject={
        protocol: 'https',
        hostname: 'example.com',
        port: 1800,
        pathname: 'sample/path',
        query: {
                page: 1,
                format: 'json'
        },
        hash: 'first'
    }
  
//getting the derived URL from urlObject using the url.format function
var sampleUrl=url.format(urlObject);
  
//Display the returned value
console.log(sampleUrl.toString());
   


Output: https://example.com:1800/sample/path?page=1&format=json#first

Example 2




/*
  node program to demonstrate the URL.format API.
*/  
    
//importing the module 'url'
const url = require('url');
  
//creating and initializing urlObject
var urlObject={
        protocol: 'prct',
        slashes: false,
        host: 'example.com',
        auth: 'abc',
        pathname: '/sample/path',
        search: 'something',
        hash: 'first'
    }
  
//getting the derived URL from urlObject using the url.format function
var sampleUrl=url.format(urlObject);
  
//Display the returned value
console.log(sampleUrl.toString());


Output: prct:abc@example.com/sample/path?something#first

NOTE: The above program will compile and run by using the node fileName.js command.

Reference:
https://nodejs.org/api/url.html#url_url_format_urlobject



Last Updated : 14 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads