Axios: Obtenha a matriz de parâmetros com o valor-chave

Criado em 20 set. 2017  ·  3Comentários  ·  Fonte: axios/axios

Oi,

Eu estou procurando, mas não consigo encontrar a maneira de fazer isso. Basicamente, eu quero enviar uma solicitação GET com um parâmetro de matriz como este

GET /comments?filter[post]=3&filter[author]=12

Eu tentei isso

params: {
  filter: {post: 3, author: 12}
}

Mas ainda sem sorte :(

Alguma dica?

Obrigado

Comentários muito úteis

Olá @ghprod , antes de mais quero deixar claro que não sou colaborador desta biblioteca nem a utilizo, mas estava de passagem e vi este problema e resolvi investigar um pouco o código.

O Axios não oferece suporte a esse tipo de codificação por padrão, mas permite que você forneça um serializador personalizado. Você pode fazer isso facilmente com o seguinte código:

// Axios include here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: customSerializerFunc
});

Para simplificar, pesquisei no Google por bibliotecas serializador de querystring e encontrei qs que tem suporte para navegadores e nodejs. Você pode usá-lo como um serializador desta maneira:

// Include axios and qs here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: qs.stringify  // If this doesnt work, append .bind(qs) to the end of this line.
});

Talvez você veja isto: filter%5Bpost%5D=3 vez de filter[post]=3 , isso porque a codificação de URL está habilitada. Você pode desativá-lo desta forma:

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: function(params) {
        return qs.stringify(params, { encode: false });
    }
});

Deixe-me saber se funcionou.
Cumprimentos.

Todos 3 comentários

Olá @ghprod , antes de mais quero deixar claro que não sou colaborador desta biblioteca nem a utilizo, mas estava de passagem e vi este problema e resolvi investigar um pouco o código.

O Axios não oferece suporte a esse tipo de codificação por padrão, mas permite que você forneça um serializador personalizado. Você pode fazer isso facilmente com o seguinte código:

// Axios include here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: customSerializerFunc
});

Para simplificar, pesquisei no Google por bibliotecas serializador de querystring e encontrei qs que tem suporte para navegadores e nodejs. Você pode usá-lo como um serializador desta maneira:

// Include axios and qs here...

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: qs.stringify  // If this doesnt work, append .bind(qs) to the end of this line.
});

Talvez você veja isto: filter%5Bpost%5D=3 vez de filter[post]=3 , isso porque a codificação de URL está habilitada. Você pode desativá-lo desta forma:

axios.get('/user', {
    params: {
        filter: {post: 3, author: 12} 
    },
    paramsSerializer: function(params) {
        return qs.stringify(params, { encode: false });
    }
});

Deixe-me saber se funcionou.
Cumprimentos.

Funciona ..: +1:

Muito obrigado @ngonzalvez

Tenha um ótimo dia :)

oi, preciso de ajuda sobre axios - como faço para obter um valor de entrada e colocá-lo como um valor em um parâmetro para axios.get; digamos, para uma função de pesquisa que estou criando - parte do url é um parâmetro de consulta.

aqui está o código
axios
.get ('http: // localhost: 8080 / customer / search? hint = da')

onde hint = "searchText"

por favor ajude.

obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

helmus picture helmus  ·  3Comentários

Adman picture Adman  ·  3Comentários

emaincourt picture emaincourt  ·  3Comentários

airtonix picture airtonix  ·  3Comentários

reggi picture reggi  ·  3Comentários