Axios: Obtener matriz de parámetros con valor clave

Creado en 20 sept. 2017  ·  3Comentarios  ·  Fuente: axios/axios

Hola,

Estoy buscando, pero no encuentro la manera de hacerlo. Básicamente, quiero enviar una solicitud GET con un parámetro de matriz como este

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

He probado esto

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

Pero aún así no tuve suerte :(

¿Alguna pista?

Gracias

Comentario más útil

Hola @ghprod , antes que nada quiero dejar claro que no soy colaborador de esta biblioteca ni la uso, pero estaba pasando y vi este problema y decidí investigar un poco el código.

Axios no admite ese tipo de codificación de forma predeterminada, pero le permite proporcionar un serializador personalizado. Puede lograr esto muy fácilmente con el siguiente código:

// Axios include here...

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

Para hacerlo más simple, busqué en Google un poco las bibliotecas de serializador de cadenas de consulta y encontré qs que tiene soporte para navegadores y nodejs. Puede usarlo como serializador de esta manera:

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

Tal vez vea esto: filter%5Bpost%5D=3 lugar de filter[post]=3 , eso se debe a que la codificación de URL está habilitada. Puede desactivarlo de esta manera:

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

Avísame si funcionó.
Saludos.

Todos 3 comentarios

Hola @ghprod , antes que nada quiero dejar claro que no soy colaborador de esta biblioteca ni la uso, pero estaba pasando y vi este problema y decidí investigar un poco el código.

Axios no admite ese tipo de codificación de forma predeterminada, pero le permite proporcionar un serializador personalizado. Puede lograr esto muy fácilmente con el siguiente código:

// Axios include here...

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

Para hacerlo más simple, busqué en Google un poco las bibliotecas de serializador de cadenas de consulta y encontré qs que tiene soporte para navegadores y nodejs. Puede usarlo como serializador de esta manera:

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

Tal vez vea esto: filter%5Bpost%5D=3 lugar de filter[post]=3 , eso se debe a que la codificación de URL está habilitada. Puede desactivarlo de esta manera:

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

Avísame si funcionó.
Saludos.

Funciona ...: +1:

Muchas gracias @ngonzalvez

Qué tengas un lindo día :)

hola, necesito ayuda con respecto a axios: ¿cómo obtengo un valor de la entrada y lo pongo como un valor en un parámetro para axios.get? digamos que para una función de búsqueda que estoy construyendo, parte de la URL es un parámetro de consulta.

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

donde hint = "searchText"

por favor ayuda.

¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ghost picture ghost  ·  3Comentarios

altruisticsoftware picture altruisticsoftware  ·  3Comentarios

Adman picture Adman  ·  3Comentarios

reggi picture reggi  ·  3Comentarios

airtonix picture airtonix  ·  3Comentarios