File size: 1,057 Bytes
bf57148 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # URL Parameters
**Task:** "Parse and build URL query strings."
## Without Ponytail
```bash
npm install query-string
# 4.5 kB gzipped, 3.5M downloads/week
```
```js
import qs from "query-string";
// Parse
const params = qs.parse(location.search);
// → { page: "2", sort: "name", tags: ["js", "css"] }
// Build
const url = qs.stringify({ page: 2, sort: "name", tags: ["js", "css"] });
// → "page=2&sort=name&tags=js&tags=css"
```
## With Ponytail
```js
// ponytail: URLSearchParams does this
const params = new URLSearchParams(location.search);
// Read
params.get("page"); // "2"
params.getAll("tags"); // ["js", "css"]
// Build
const out = new URLSearchParams({ page: 2, sort: "name" });
out.append("tags", "js");
out.append("tags", "css");
out.toString(); // "page=2&sort=name&tags=js&tags=css"
```
**1 dependency → 0 dependencies.** `URLSearchParams` is in every browser and in Node.js since v10. It handles encoding, repeated keys, and iteration. The package was a polyfill for an API that has shipped everywhere for years.
|