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 from examples below 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'
    }
}*/

The list of examples above shows only the most interesting cases, but you can combine them as you want, and the parser will recognize all the right parameters.

Clone this wiki locally