with-query
v1.3.0
Published
Format url with query (string or object), simple and fast, with the power of qs
Downloads
7,751
Maintainers
Readme
Format url with query (string or object), simple and fast, with the power of qs.
The typical usage of this library is building URL for Fetch API. It can be used both on server side and browser side.
const withQuery = require('with-query').default;
fetch(withQuery('https://api.github.com/search/repositories', {
q: 'query',
sort: 'stars',
order: 'asc',
}))
.then(res => res.json())
.then((json) => {
console.info(json);
})
.catch((err) => {
console.error(err);
});
Installation
- npm
npm install with-query --save
- yarn
yarn add with-query
Usage
var withQuery = require('with-query').default;
var assert = require('assert');
const result1 = withQuery('http://example.com', {
a: 1,
b: 'hello',
});
assert.equal(result1, 'http://example.com?a=1&b=hello');
// Append and override the query in url
const result2 = withQuery('http://example.com?a=3&c=4&d=5', {
a: 1,
b: 'hello',
});
assert.equal(result2, 'http://example.com?a=1&c=4&d=5&b=hello');
// Hash is also supported
const result3 = withQuery('http://example.com?a=3&c=4&d=5#Append', {
a: 1,
b: 'hello',
});
assert.equal(result3, 'http://example.com?a=1&c=4&d=5&b=hello#Append');
// Remove hash
const result4 = withQuery('http://example.com?a=3&c=4&d=5#Append', {
a: 1,
b: 'hello',
}, { noHash: true });
assert.equal(result4, 'http://example.com?a=1&c=4&d=5&b=hello');
// with the power of qs
const result5 = withQuery('http://example.com?e[]=f', {
a: {
b: 'c',
},
});
assert.equal(result5, 'http://example.com?e%5B0%5D=f&a%5Bb%5D=c');
// parseOpt and stringifyOpt for qs.parse and qs.stringify
// see https://github.com/ljharb/qs
const result6 = withQuery('http://example.com&e[]=f', {
a: {
b: 'c',
},
}, {
stringifyOpt: {
encode: false,
},
parseOpt: {
parseArray: false,
},
});
assert.equal(result6, 'http://example.com&e[]=f?a[b]=c');
License
MIT