Я работаю над проектом в javascript, где пользователь может добавлять несколько фильтров, углубляться в иерархию и т.д. c для поиска данных. После того, как пользователь детализирует, добавляет фильтры и получает некоторые результаты, я хочу, чтобы пользователь мог поделиться этими результатами как URL-адресом с кем-то еще. Теперь поисковый запрос будет сложным объектом, и я хочу отправить этот запрос как часть URL-адреса браузера. Я знаю, что есть несколько способов сделать это. Но каков наилучший способ?
Ниже приведен пример запроса
{
"category": 1,
"categoryDetails": {
"id": 1,
"name": "category 321"
},
"start": "2020-03-20",
"end": "2020-05-05",
"filters": [{
"key": "viewby",
"value": "something",
"label": "something else"
}, {
"key": "color",
"value": "0",
"label": "black"
}, {
"key": "color",
"value": "1",
"label": "blue"
}, {
"key": "color",
"value": "2",
"label": "white"
}, {
"key": "tags",
"value": "cl",
"label": "clean"
}, {
"key": "tags",
"value": "wi",
"label": "winter"
}]
}
Я знаю, что могу преобразовать объект json в строку и отправить его
url = `/search?query="{\"category\":1,\"categoryDetails\":{\"id\":1,\"name\":\"category 321\"},\"start\":\"2020-03-20\",\"end\":\"2020-05-05\",\"filters\":[{\"key\":\"viewby\",\"value\":\"something\",\"label\":\"something else\"},{\"key\":\"color\",\"value\":\"0\",\"label\":\"black\"},{\"key\":\"color\",\"value\":\"1\",\"label\":\"blue\"},{\"key\":\"color\",\"value\":\"2\",\"label\":\"white\"},{\"key\":\"tags\",\"value\":\"cl\",\"label\":\"clean\"},{\"key\":\"tags\",\"value\":\"wi\",\"label\":\"winter\"}]}"{\"key\":\"tags\",\"value\":\"winter\",\"label\":\"winter\"}]}"
Или преобразовать его в строку base64
url = `search?query=ewogICAgImNhdGVnb3J5IjogMSwKICAgICJjYXRlZ29yeURldGFpbHMiOiB7CiAgICAgICAgImlkIjogMSwKICAgICAgICAibmFtZSI6ICJjYXRlZ29yeSAzMjEiCiAgICB9LAogICAgInN0YXJ0IjogIjIwMjAtMDMtMjAiLAogICAgImVuZCI6ICIyMDIwLTA1LTA1IiwKICAgICJmaWx0ZXJzIjogW3sKICAgICAgICAia2V5IjogInZpZXdieSIsCiAgICAgICAgInZhbHVlIjogInNvbWV0aGluZyIsCiAgICAgICAgImxhYmVsIjogInNvbWV0aGluZyBlbHNlIgogICAgfSwgewogICAgICAgICJrZXkiOiAiY29sb3IiLAogICAgICAgICJ2YWx1ZSI6ICIwIiwKICAgICAgICAibGFiZWwiOiAiYmxhY2siCiAgICB9LCB7CiAgICAgICAgImtleSI6ICJjb2xvciIsCiAgICAgICAgInZhbHVlIjogIjEiLAogICAgICAgICJsYWJlbCI6ICJibHVlIgogICAgfSwgewogICAgICAgICJrZXkiOiAiY29sb3IiLAogICAgICAgICJ2YWx1ZSI6ICIyIiwKICAgICAgICAibGFiZWwiOiAid2hpdGUiICAgICAgICAKICAgIH0sIHsKICAgICAgICAia2V5IjogInRhZ3MiLAogICAgICAgICJ2YWx1ZSI6ICJjbCIsCiAgICAgICAgImxhYmVsIjogImNsZWFuIgogICAgfSwgewogICAgICAgICJrZXkiOiAidGFncyIsCiAgICAgICAgInZhbHVlIjogIndpIiwKICAgICAgICAibGFiZWwiOiAid2ludGVyIgogICAgfV0KfQ==
Есть ли что-то лучше? Какие передовые методы используются при этом?