Кодировать несколько параметров запроса с помощью vue-resource без `[]` s - PullRequest
0 голосов
/ 22 октября 2018

Я запрашиваю REST API, используя vue-resource $http.get через:

this.$http.get('/api', {
    params: {
        id: [1,2,3],
    },
});

, и это производит запрос

/api?id[]=1&id[]=2&id[]=3

Но мойконечная точка ожидает

/api?id=1&id=2&id=3

Есть ли способ указать vue-resource кодировать несколько параметров, как этот?

Я бы хотел избежать создания собственной строки запроса, но это альтернативаможно придумать.

1 Ответ

0 голосов
/ 22 октября 2018

Рассматривая внутреннюю реализацию параметров запроса serialize функция vue-resource, могу сказать - нет, нет способа настроить функцию сериализации параметров запроса в vue-resource.

Не существует стандартного способа передавать коллекцию значений через строку запроса, поэтому формат более специфичен для фреймворка.И хотя по умолчанию vue-resource и axios используют формат скобок для сериализации массивов, второй позволяет настраивать пользовательскую функцию сериализации запросов с помощью опции paramsSerializer.

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

Вы можете использовать библиотеку qs.js для решения вашей проблемы

qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });

Или вот пример пользовательской функции из другого ответа , но измененной по вашему запросу:

JSFiddle

...