Axios: キー値を持つパラメータ配列を取得します

作成日 2017年09月20日  ·  3コメント  ·  ソース: axios/axios

やあ、

検索しましたが、方法が見つかりません。 基本的に私はこのような配列パラメータでGETリクエストを送信したい

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

私はこれを試しました

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

しかし、それでも運はありません:(

ヒントはありますか?

ありがとう

最も参考になるコメント

こんにちは@ghprod 、まず最初に、私はこのライブラリの寄稿者でも使用していないことを明確にしたいのですが、通りかかったときにこの問題を見て、コードを少し調査することにしました。

Axiosはデフォルトでその種のエンコーディングをサポートしていませんが、カスタムシリアライザーを提供することができます。 次のコードを使用すると、これを非常に簡単に実行できます。

// Axios include here...

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

簡単にするために、クエリ文字列シリアライザーライブラリを少しグーグルで検索し、ブラウザーとnodejsをサポートするqsを見つけました。 この方法でシリアライザーとして使用できます。

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

たぶんあなたはこれを見るでしょう: filter%5Bpost%5D=3代わりにfilter[post]=3 、それはURLエンコードが有効になっているからです。 次の方法で無効にできます。

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

それがうまくいったかどうか私に知らせてください。
よろしく。

全てのコメント3件

こんにちは@ghprod 、まず最初に、私はこのライブラリの寄稿者でも使用していないことを明確にしたいのですが、通りかかったときにこの問題を見て、コードを少し調査することにしました。

Axiosはデフォルトでその種のエンコーディングをサポートしていませんが、カスタムシリアライザーを提供することができます。 次のコードを使用すると、これを非常に簡単に実行できます。

// Axios include here...

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

簡単にするために、クエリ文字列シリアライザーライブラリを少しグーグルで検索し、ブラウザーとnodejsをサポートするqsを見つけました。 この方法でシリアライザーとして使用できます。

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

たぶんあなたはこれを見るでしょう: filter%5Bpost%5D=3代わりにfilter[post]=3 、それはURLエンコードが有効になっているからです。 次の方法で無効にできます。

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

それがうまくいったかどうか私に知らせてください。
よろしく。

それは動作します..:+ 1:

どうもありがとう

すてきな一日を :)

こんにちは、私はaxiosに関するヘルプが必要です-入力から値を取得し、それをaxios.getのパラメーターの値として配置するにはどうすればよいですか? 私が構築している検索関数について言う-URLの一部はクエリパラメータです。

これがコードです
アクシオス
.get( 'http:// localhost:8080 / customer / search?hint = da')

ここで、hint = "searchText"

助けてください。

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価