Entonces, el backend (que no está bajo mi control) requiere una cadena de consulta como esta:
http://example.com/?foo=5&foo=2&foo=11 Pero axios usa el objeto JS para enviar los parámetros de solicitud:
axios.get('http://example.com/', { foo: 5 });Y obviamente dicho objeto no puede tener múltiples campos con la misma clave.
¿Cómo puedo enviar una solicitud con varios campos con la misma clave?
De la documentación de axios en la configuración de solicitud
// `params` are the URL parameters to be sent with the request // Must be a plain object or a URLSearchParams object params: { ID: 12345 },Para usar esto en una solicitud, harías
var request = { params: { foo: [5, 2, 11] } } axios.get('http://example.com/', request);El único problema con el uso de un enfoque de objeto simple es que los parámetros de matriz se agregan como
http://example.com/?foo[]=5&foo[]=2&foo[]=11 Para obtener una solicitud sin [] como desee, puede usar URLSearchParams
var params = new URLSearchParams(); params.append("foo", 5); params.append("foo", 2); params.append("foo", 11); var request = { params: params }; axios.get('http://example.com/', request);Esto resultará en una solicitud como
http://example.com/?foo=5&foo=2&foo=11En la configuración de solicitud de Axios, puede anular la serialización de parámetros y luego usar el módulo QS NPM para serializar la matriz con el modo de repetición
let params = { foo: [5, 2] } axios.get('path/to/api/',{params}) // URL : https://path/to/api?foo[]=5&foo[]=2 let myAxios = axios.create({ paramsSerializer: params => Qs.stringify(params, {arrayFormat: 'repeat'}) }) myAxios.get('path/to/api/',{params}) // URL : https://path/to/api?foo=5&foo=2Agregar más detalles a la respuesta aceptada de @nhydock. Cuando tu lo hagas
var request = {foo: [5, 2, 11] }axios.get(' http://ejemplo.com/ ', solicitud);
Para la aplicación django, puede recibirlos como
self.request.query_params.getlist('foo')además.