Вы можете сделать так, как хочет бекэндер.
Проблема в Axios. GET-параметры, если они содержат многомерные массивы/объекты он преобразовывает в json представление, оставляя лишь линей массив верхнего уровня. В общем-то правильно (это уже отметил
Владимир ), GET для запроса данных, и параметры запроса обычно идут списком.
Но всё же протокол позволяет представлять и массивы, как линейные, так и многомерные. jQuery, кстати, в этом смысле так и делает.
В общем к сути. Вы можете использовать штатные возможности Axios для трансформации параметров запроса:
let arr = [1,2,3];
let val = 'BMW';
let payload = {
names : arr,
values: {
brand: val,
},
};
axios.get('http://site.ru?id=1', {
params: payload,
paramsSerializer: function(params) {
let tmp = [];
params.names.forEach(item => {tmp.push(`names[]=${item}`)});
for (let name in params.values) {
if (!params.values.hasOwnProperty(name)) continue;
tmp.push(`values[${name}]=${params.values[name]}`);
}
return tmp.join('&');
},
}).then( ...
В результате запроса программист получит данные в массиве &_GET примерно в таком виде:
Array
(
[id] => 1
[names] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[values] => Array
(
[brand] => BMW
)
)
Сериализатор придется писать под формат данных, или попробовать сообразить что-то универсальное.