Ax ios получить один параметр с несколькими значениями, разделенными запятой - PullRequest
0 голосов
/ 19 июня 2020

У меня есть таблица в React с данными о тестах, которые я получаю от API. Я должен делать фильтры на интерфейсе и иметь возможность присоединиться к ним, например, фильтровать тесты из выбранной категории, выбранной сложности и созданные перед некоторыми данными.

Если бы я хотел отфильтровать, например, тесты из категории «Javascript "и сложность" Младший ", я должен получить uri:

/ api / admin / filters? filter = category: Javascript, сложность: JUNIOR

Если бы я хотел отфильтровать тесты для "Junior" или "Mid" я должен получить:

/ api / admin / filters? Filter = сложность: JUNIOR, сложность: 'MID Обратите внимание на апостроф, который означает «или».

Я также должен иметь возможность фильтровать по дате создания, например:

/ api / admin / filters? Filter = creationDate <2019-09-23 17:34: 21, creationDate> 2019-09-12 17 : 34: 21

Интересно, как я могу создавать такие запросы? URLSearchParams или ax ios params добавляет параметры, разделенные &, поэтому я не могу использовать его здесь, потому что у меня есть один параметр «фильтр» с несколькими значениями. Или, может быть, мне следует использовать его, а также использовать метод замены js для замены запятой &? Я тоже не знаю, как добавить апостроф.

Я видел здесь аналогичный вопрос: https://spectrum.chat/react/general/query-string-sending-multiple-value-to-the-same-parameter~5d029da0-e7da-443d-a4b2-1529ca7b4f82, но я не могу использовать массив в моем случае, потому что у меня есть несколько фильтров. Я полагаю, мне нужно создать объект вроде:

options = {
     difficulty: [junior, mid],
     category: [javascript],
     created before: 2019-09-23 17:34:21,
     created after: 2019-09-12 17:34:21
} 

, а теперь как добавить ключи и значения из такого объекта в uri, чтобы это выглядело так, как ожидает бэкэнд?

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 19 июня 2020

Параметры кодирования с помощью encodeURI перед переходом к ax ios могут решить вашу проблему.

Если вам нужно передать параметры со специальными символами (например, '[', ']'. ..et c) вы должны указать параметр в виде строки '["junior", "mid"]' вместо того, чтобы указывать параметр в виде массива. (При передаче в виде массива скобки просто удаляются)

var params = '["junior","mid"]'
encodeURI(params) // it returns "%5B%22junior%22,%22mid%22%5D"

var params = ["junior","mid"]
encodeURI(params) // it returns "junior,mid"

...