怎麼發送屬性相同,值不一樣的axios請求(url?name=1&name=2&name=3)?

咱們發送的get請求通常是這樣的url?id=1&name=2&gender=3&height=5,也就是屬性都是不一樣的,axios默認發送的格式也是這樣的。蛋疼的是,有時候後端要求的格式是這樣的url?name=1&name=2&name=3&name=5,屬性都相同,值不一樣,是否是有點奇葩,這TM是什麼鬼。可是,有時又沒辦法讓後端改,那就只有想辦法搞,沒想到還真的能夠。javascript

axios能夠經過添加paramsSerializer將參數序列化實現,下面看下具體代碼怎麼寫。java

1. 代碼怎麼寫?

// 傳進來的參數是這樣的
let params = { name: [1, 2, 3, 5] }

export function get(url, params = {}) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params,
        // 用於發送這種格式的請求,url?name=1&name=2&name=3
        paramsSerializer: params => {
          return QS.stringify(params, { indices: false });
        }
      })
      .then(res => {
        resolve(res.data);
      })
      .catch(err => {
        reject(err.data);
      });
  });
}

其中的{ indices: false }參數也是必須的!發送的請求效果以下:
ios

2. 示例代碼下載

能夠複製以上代碼運行查看使用效果,也能夠到GitHub: https://github.com/Jackyyans/code123下載,更多示例將會持續更新,歡迎關注。git

相關文章
相關標籤/搜索