Node.js URL.format(urlObject) API
Last Updated :
14 Jun, 2022
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
javascript
/*
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
javascript
/*
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