Axios получить с параметром массив - PullRequest
0 голосов
/ 17 сентября 2018

Я создаю один запрос get с axios:

this.$axios.get('/cidade/',{
          params: {
            q: result,
          }
        })
        .then((response) => {
          this.cidades = response.data;
        })
        .catch(function (error) {
          // handle error
          // eslint-disable-next-line
          console.log(error);
        })
        .then(function () {

          // always executed
        });

но мой результат - массив [123asdas1, asdasd2312], и когда axios исполняет запрос, он создает этот URL:

http://localhost:8081/cidade/?q[]=5b9cfd0170607a2e968b0a1e&q[]=5b9cfd0170607a2e968b0a1d

так можно ли удалить [] из параметра q? как?

ТКС

1 Ответ

0 голосов
/ 17 сентября 2018

При составлении строки запроса, в которой одно поле имеет несколько значений (т. Е. Если бы это был массив), тогда не существует стандарта, в котором указано, как оно должно быть закодировано в строке запроса, однако большинство веб-серверов принимают этот синтаксис:

http://localhost:8081/cidade/?q[]=value1&q[]=value2

, поэтому axios по умолчанию использует его. Проверьте ваш веб-сервер, чтобы убедиться, что он правильно читает параметр в виде массива.

Если вы хотите принудительно закодировать его каким-либо другим способом, просто преобразуйте массив в строку в любом формате, который вам нужен, и отправьте его как одно значение:

this.$axios.get('/cidade/', {
  params: {
    q: JSON.stringify(result)
  }
})
http://localhost:8081/cidade/?q=[value1,value2]

(символы [ и ] могут быть в процентах .)

Как правило, этот синтаксис не может различать строку "[value1,value2]" и массив [value1, value2], поэтому веб-серверу придется выбирать один или другой. Опять же, все это зависит от вашего веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...