obtener el parámetro de matriz de objeto de paso de solicitud

Hay una solicitud en la que el parámetro tiene una matriz de objetos. Originalmente era una solicitud posterior, y la interfaz se cambió a una solicitud de obtención más tarde. Luego, los parámetros de la solicitud axios se cambian naturalmente de datos a parámetros.

La solicitud después de la primera modificación es la siguiente: el formato del parámetro de solicitud
para toda la ruta es el siguiente . La razón por la que se convierte en una matriz [atributo del objeto en la matriz]: el valor del objeto está en este formato porque el La solicitud se interceptó antes y se procesó la matriz de solicitud de obtención. El código se muestra a continuación:
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

if (config.method === 'get') {
    
    
    // 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
    config.paramsSerializer = function(params) {
    
    
      return qs.stringify(params, {
    
     arrayFormat: 'repeat' })
    }
  }

Pero el formato de datos requerido por el backend es como esta matriz [el subíndice del objeto en la matriz] Atributo del objeto: el valor del atributo del objeto :
inserte la descripción de la imagen aquí
obviamente está un poco lejos de la diferencia.
Luego, Baidu buscó para ver si podíamos encontrar un método de procesamiento adecuado del método qs.stringify.
arrayFormat Hay varias formas de formatear matrices:

qs.stringify({
    
     a: ['b', 'c'] }, {
    
     arrayFormat: 'indices' })
// 输出结果:'a[0]=b&a[1]=c'
qs.stringify({
    
     a: ['b', 'c'] }, {
    
     arrayFormat: 'brackets' })
// 输出结果:'a[]=b&a[]=c'
qs.stringify({
    
     a: ['b', 'c'] }, {
    
     arrayFormat: 'repeat' })
// 输出结果:'a=b&a=c'
qs.stringify({
    
     a: ['b', 'c'] }, {
    
     arrayFormat: 'comma' })
// 输出结果:'a=b,c'

Luego, el formato de repetición fue el que usé al principio, que obviamente estaba mal, así que probé otros uno por uno.
El formato de los índices: el formato de
inserte la descripción de la imagen aquí
los índices parece ser un poco similar, pero la interfaz requiere .attribute en lugar de [attribute] , por lo que este procesamiento no es aceptable.

Formato de corchetes: ¡
inserte la descripción de la imagen aquí
El formato de corchetes elimina por completo el subíndice! tampoco

formato de coma: el formato de
inserte la descripción de la imagen aquí
coma es para ordenar el objeto por completo. ¡No entiendo muy bien qué tipo de formato de datos es! Por supuesto que no.
Por lo tanto, el método de apelación no funciona, solo el formato de índices parece similar.

Seguí revisando el foro y vi el nuevo uso de qs.stringify . Mirando el mensaje, parece que se logró el formato de datos que quiero. El código es el siguiente:

qs.stringify(data, {
    
     allowDots: true, encode: false })

Como resultado, los parámetros solicitados realmente cumplen con los requisitos del backend:
inserte la descripción de la imagen aquí
la interfaz todavía informa 400 y todavía hay problemas con los parámetros solicitados.

Luego tomé una captura de pantalla de los parámetros en la ruta de solicitud de los dos para compararlos: el
mío:
inserte la descripción de la imagen aquí
requerido por el backend:
inserte la descripción de la imagen aquí
se puede ver claramente que los subíndices en los datos requeridos por el backend no usan corchetes []. Después de verificar, me di cuenta de que se necesita el procesamiento de codificación de URL. Si desea conocer el conocimiento específico de la codificación de URL, puede leer el artículo de Ruan Yifeng sobre el procesamiento de codificación.
Al final, es solo un proceso de codificación de URL más además del proceso qs.stringify original:

if (config.method === 'get') {
    
    
    // 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
    config.paramsSerializer = function(params) {
    
    
      return encodeURI(qs.stringify(params, {
    
     allowDots: true, encode: false }))
    }
  }

La captura de pantalla de la solicitud final es la siguiente, que se convierte con éxito en 200 solicitudes:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43589827/article/details/121397598
Recomendado
Clasificación