Axios: Obtenir un tableau de paramètres avec la valeur de la clé

Créé le 20 sept. 2017  ·  3Commentaires  ·  Source: axios/axios

Salut,

J'ai cherché, mais je ne trouve pas le moyen de le faire. Fondamentalement, je veux envoyer une demande GET avec un paramètre de tableau comme celui-ci

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

j'ai essayé ça

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

Mais toujours pas de chance :(

Un indice ?

Merci

Commentaire le plus utile

Salut @ghprod , tout d'abord, je tiens à préciser que je ne suis pas un contributeur à cette bibliothèque ni que je l'utilise, mais je passais par là et j'ai vu ce problème et j'ai décidé d'enquêter un peu sur le code.

Axios ne prend pas en charge ce type d'encodage par défaut mais il vous permet de fournir un sérialiseur personnalisé. Vous pouvez accomplir cela très facilement avec le code suivant :

// Axios include here...

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

Pour simplifier les choses, j'ai cherché un peu sur Google les bibliothèques de sérialiseur de chaîne de requête et j'ai trouvé qs qui prend en charge les navigateurs et les nodejs. Vous pouvez l'utiliser comme sérialiseur de cette façon :

// 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.
});

Vous verrez peut-être ceci : filter%5Bpost%5D=3 au lieu de filter[post]=3 , c'est parce que l'encodage d'URL est activé. Vous pouvez le désactiver de cette façon :

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

Faites-moi savoir si cela a fonctionné.
Salutations.

Tous les 3 commentaires

Salut @ghprod , tout d'abord, je tiens à préciser que je ne suis pas un contributeur à cette bibliothèque ni que je l'utilise, mais je passais par là et j'ai vu ce problème et j'ai décidé d'enquêter un peu sur le code.

Axios ne prend pas en charge ce type d'encodage par défaut mais il vous permet de fournir un sérialiseur personnalisé. Vous pouvez accomplir cela très facilement avec le code suivant :

// Axios include here...

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

Pour simplifier les choses, j'ai cherché un peu sur Google les bibliothèques de sérialiseur de chaîne de requête et j'ai trouvé qs qui prend en charge les navigateurs et les nodejs. Vous pouvez l'utiliser comme sérialiseur de cette façon :

// 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.
});

Vous verrez peut-être ceci : filter%5Bpost%5D=3 au lieu de filter[post]=3 , c'est parce que l'encodage d'URL est activé. Vous pouvez le désactiver de cette façon :

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

Faites-moi savoir si cela a fonctionné.
Salutations.

Ca marche.. :+1:

Merci beaucoup @ngonzalvez

Passe une bonne journée :)

salut, j'ai besoin d'aide concernant axios - comment puis-je obtenir une valeur de l'entrée et la mettre en tant que valeur sur un paramètre pour axios.get ; disons pour une fonction de recherche que je construis - une partie de l'url est un paramètre de requête.

voici le code
axios
.get('http://localhost:8080/customer/search?hint=da')

où indice = "searchText"

s'il vous plaît aider.

Merci!

Cette page vous a été utile?
0 / 5 - 0 notes