Skip to content
Vitaly Tomilov edited this page Jul 13, 2017 · 75 revisions

properties format

The URL syntax is compliant with RFC 3986, including support for special symbols -_.+!*'()$, as well as URL-encoded symbols.

Special considerations are for the format of hostname and port:

  • hostname only supports letters, plus 0-9.- for hyphened names and IPv4 addresses. When hostname starts with [, it is a special case of an IPv6 address. Example: [2001:0db8::].
  • port allows digits only.

optional format

The connection-string protocol is ultimately flexible, and allows everything to be optional.

See the examples below of how various parameters can be passed in, while skipping others.

protocol only

ends with ://

parse('abc://'); //=> {protocol: 'abc'}

protocol + hostname + port

parse('abc://server:12345');
/* => {
    protocol: 'abc',
    host: 'server:12345',
    hostname: 'server',
    port: 12345
}*/

hostname + port

parse('server:12345');
/* => {
    host: 'server:12345',
    hostname: 'server',
    port: 12345
}*/

hostname only

parse('server');
/* => {
    host: 'server',
    hostname: 'server'
}*/

port only

starts with :, followed by digits

parse(':12345');
/* => {
    host: ':12345',
    port: 12345
}*/

user only

ends with @

parse('username@'); //=> {user: 'username'}

password only

starts with : and ends with @

parse(':pass123@'); //=> {password: 'pass123'}

segments only

starts with /

parse('/segment1/segment2'); //=> {segments: ['segment1', 'segment2']}

parameters only

starts with ?

parse('?param1=value1&param2=value2');
/* => {
    params: {
        param1: value1,
        param2: value2
    }
}*/

protocol + segments

parse('abc:///segment1/segment2');
/* => {
    protocol: 'abc',
    segments: ['segment1', 'segment2']
}*/

protocol + parameters

parse('abc://?param1=one&param2=two');
/* => {
    protocol: 'abc',
    params: {
        param1: 'one',
        param2: 'two'
    }
}*/
Clone this wiki locally