kouhin / with-query

Format url with query (string or object), simple and fast, with the power of qs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

CircleCI Coverage Status npm airbnb style

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

About

Format url with query (string or object), simple and fast, with the power of qs.

License:MIT License


Languages

Language:TypeScript 67.6%Language:JavaScript 32.4%