API傳遞陣列的方法分享,搭配Axios與qs,讓專案更好維護!

更新於 發佈於 閱讀時間約 4 分鐘


若你的專案是使用 Axios 作為管理API的工具,那麼未來有天你可能會遇到「想要傳陣列資料給後端」或是「後端要求傳遞數組資料」的狀況,以下提供你幾種解決方式,選擇適合你的吧!

前提

一般來說,呼叫API傳遞參數,通常是一個Key一個Value,像是StringBooleanNumber這類的,但是當你想要傳遞Array這個型態的資料時就會遇到這個問題。

// 先不管其他的,讓我們呼叫API看看結果​
axios({
method: 'get',
url: 'api',
params: {
currency:['c1','c2']
}
});

// 傳出去的結果
api?currency[]=c1&currency[]=c2

後端收到 currency[]=c1&currency[]=c2,可能會跟你說他不能用或者是說他還要再處理資料等等的狀況,這時候可能會要求你重新處理。那麼就需要溝通,後端想要收到什麼樣子的資料,這邊列出兩種給前端夥伴參考:
(又或者你的後端夥伴覺得他處理就好可能今天你就不會看到這篇文章了XD)

(1) currency=c1&currency=c2

(2)"['c1','c2']"

這兩種解決方式都可以,你們講好就行囉!

解決方法➊:使用qs套件

蠻完善的處理方式,因為套件提供Array格式非常多,你可以選擇你需要的。

第一步:下載 npm qs

npm i qs
import qs from 'qs'

第二步:在 Axios 使用

// 使用 paramsSerializer + qs轉換格式
axios({
method: 'get',
url: 'api',
params: {
currency:['c1','c2']
}
paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'repeat' })
}})
});

// 最後傳出去的結果
// 後端會收到 currency = 'c1' 和 currency = 'c2'
api?currency=c1&currency=c2
  • qs 提供 Array 傳遞的格式
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'

解決方法➋:將陣列轉成字串

簡單暴力的方法,但是後端需要自己再將資料拆解出來。

axios({
method: 'get',
url: 'api',
params: {
currency: JSON.stringify(['c1','c2'])
}
});

// 最後傳出去的結果
// 後端會收到 currency="['c1','c2']"
api?currency=['c1','c2']

結語

今天提供了兩種處理方式給各位工程師參考,方法有很多種只要可以解決問題,雙方也都好處理那就好囉!如果你遇到任何問題也可以在下方留言,若我有空會回覆的:D

留言
avatar-img
留言分享你的想法!
avatar-img
卡比的工程師之旅的沙龍
7會員
15內容數
開發之路有你有我有卡比,收錄各種開發的技術分享與疑難雜症解★☆
2024/08/07
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
2024/08/07
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
2024/01/04
問ChatGPT前端專案架構建議
Thumbnail
2024/01/04
問ChatGPT前端專案架構建議
Thumbnail
2024/01/03
JavaScript重組資料:flatMap與map的差異
Thumbnail
2024/01/03
JavaScript重組資料:flatMap與map的差異
Thumbnail
看更多
你可能也想看
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
JavaScript 套件,頁碼 Pagination.js 搭配 axios API 請求範例
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
JSON(JavaScript Object Notation)是AJAX(參考:[PHP][AJAX]介紹)常用的資料交換格式。在PHP有提供函數,可以將資料轉換成JSON。除外JSON比XML快速且簡單。 語法 資料是由鍵和值(Key-value)組成。 鍵和值之間用「:」區隔。 資料之
Thumbnail
JSON(JavaScript Object Notation)是AJAX(參考:[PHP][AJAX]介紹)常用的資料交換格式。在PHP有提供函數,可以將資料轉換成JSON。除外JSON比XML快速且簡單。 語法 資料是由鍵和值(Key-value)組成。 鍵和值之間用「:」區隔。 資料之
Thumbnail
Axios 如何處理陣列數組資料的傳遞,使用qs套件快速完成吧!
Thumbnail
Axios 如何處理陣列數組資料的傳遞,使用qs套件快速完成吧!
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 身為專業的軟體開發者的我們, 除了讓程式會動之外, 也
Thumbnail
您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 身為專業的軟體開發者的我們, 除了讓程式會動之外, 也
Thumbnail
呼叫API,並透過API響應的內容取到需要的值
Thumbnail
呼叫API,並透過API響應的內容取到需要的值
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News