最近在參與一個項目過程中遇到一個問題,相信大部分人都遇到過:
在后端與前端約定好application/json格式傳遞數據時,因為后台是go強類型語言,在定義api接口時,某些字段要求是整型類型,但是對於前端來說輸入框或者從url中的search取到的參數都是字符串,不得不進行前端類型轉換。
咋一看,對於接口參數比較少的api前端轉換沒有什么,但是對於一般的交互復雜,參數比較多的接口,要對大部分參數進行類型轉換就是一種吃力不討好的活。好在后端同學還支持另一種的前后端數據交互格式,即multipart/form-data。通過該格式后端取到前端傳遞的數據就是數字了(即使前端傳遞的是字符串),而不像json格式獲取的是字符串。這樣,就不需要額外對前端獲取的數據進行特殊轉換了。下面就來說說form-data。
multipart/form-data是基於post方法來傳遞數據的,並且其請求內容格式為Content-Type: multipart/form-data,用來指定請求內容的數據編碼格式。
const instance = axios.create({
baseURL: "https://api.it120.cc",
//設置axios為form-data
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}]
})
