Axios: Получить массив параметров со значением ключа

Созданный на 20 сент. 2017  ·  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
});

Чтобы упростить задачу, я немного погуглил библиотеки сериализатора запросов и нашел qs, который поддерживает браузеры и nodejs. Вы можете использовать его как сериализатор следующим образом:

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

Чтобы упростить задачу, я немного погуглил библиотеки сериализатора запросов и нашел qs, который поддерживает браузеры и nodejs. Вы можете использовать его как сериализатор следующим образом:

// 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:

Большое спасибо @ngonzalvez

Хорошего дня :)

привет, мне нужна помощь по поводу axios - как мне получить значение из ввода и поместить его в качестве значения параметра для axios.get; скажем, для функции поиска, которую я создаю - часть URL-адреса является параметром запроса.

вот код
аксиомы
.get ('http: // localhost: 8080 / customer / search? hint = da')

где подсказка = "searchText"

пожалуйста помоги.

Благодарность!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги