Axios: Parameterarray mit Schlüsselwert abrufen

Erstellt am 20. Sept. 2017  ·  3Kommentare  ·  Quelle: axios/axios

Hi,

Ich habe gesucht, finde aber den Weg nicht. Grundsätzlich möchte ich eine GET-Anfrage mit einem Array-Parameter wie folgt senden

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

Ich habe das probiert

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

Aber immer noch kein Glück :(

Irgendein Hinweis?

Vielen Dank

Hilfreichster Kommentar

Hallo @ghprod , zunächst möchte ich

Axios unterstützt diese Art der Codierung standardmäßig nicht, ermöglicht Ihnen jedoch die Bereitstellung eines benutzerdefinierten Serializers. Dies können Sie ganz einfach mit folgendem Code bewerkstelligen:

// Axios include here...

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

Um es einfacher zu machen, habe ich ein wenig nach Querystring-Serializer-Bibliotheken gegoogelt und qs gefunden, das Browser und nodejs unterstützt. Sie können es auf diese Weise als Serializer verwenden:

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

Vielleicht sehen Sie Folgendes: filter%5Bpost%5D=3 anstelle von filter[post]=3 , weil die URL-Codierung aktiviert ist. Sie können es auf diese Weise deaktivieren:

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

Lass mich wissen, ob es funktioniert hat.
Grüße.

Alle 3 Kommentare

Hallo @ghprod , zunächst möchte ich

Axios unterstützt diese Art der Codierung standardmäßig nicht, ermöglicht Ihnen jedoch die Bereitstellung eines benutzerdefinierten Serializers. Dies können Sie ganz einfach mit folgendem Code bewerkstelligen:

// Axios include here...

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

Um es einfacher zu machen, habe ich ein wenig nach Querystring-Serializer-Bibliotheken gegoogelt und qs gefunden, das Browser und nodejs unterstützt. Sie können es auf diese Weise als Serializer verwenden:

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

Vielleicht sehen Sie Folgendes: filter%5Bpost%5D=3 anstelle von filter[post]=3 , weil die URL-Codierung aktiviert ist. Sie können es auf diese Weise deaktivieren:

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

Lass mich wissen, ob es funktioniert hat.
Grüße.

Es funktioniert.. :+1:

Vielen Dank @ngonzalvez

Ich wünsche ihnen einen wunderbaren Tag :)

Hallo, ich brauche Hilfe bezüglich Axios - wie bekomme ich einen Wert von der Eingabe und setze ihn als Wert auf einen Parameter für axios.get; sagen wir für eine Suchfunktion, die ich baue - ein Teil der URL ist ein Abfrageparameter.

hier ist der code
Axios
.get('http://localhost:8080/customer/search?hint=da')

wo hint = "searchText"

bitte helfen.

Danke!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen