配列を FormData.append(k, v) で追加すると文字列になる
カンマで区切られた文字列になる。
const favorites = ['music', 'video games', 'YouTube', 'movies']
const formData = new FormData()
formData.append('favorites', favorites)
// → favorites: 'music,video games,YouTube,movies'
配列で送るサンプルコード
- lodash (配列、オブジェクト操作が簡単になるライブラリ) インストール済み
- axios (簡単に http 通信ができるライブラリ) インストール済み
- append(key + '[]', v) がポイント
import _ from 'lodash'
import axios from 'axios'
let sendParams = {
id: 1,
name: 'smith',
favorites: ['music', 'video games', 'YouTube', 'movies']
}
function send(sendParams, callback) {
let formData = new FormData()
_.forEach(sendParams, (value, key) => {
if (Array.isArray(value)) {
_.forEach(value, (v, _) => {
formData.append(key + '[]', v)
})
} else {
formData.append(key, value)
}
})
axios({
method: 'post',
baseURL: 'https://sample.com',
url: '/users',// https://sample.com/users
data: formData,
})
.then((response) => {
// handle success
callback(null, response.data)
})
.catch((error) => {
// handle error
if (error.response) {
callback(error.response.status, error.response.data)
return
}
// 503: Service Unavailable
callback(503, error.message)
})
.finally(() => {
// always executed
})
}
send(sendParams, (error, data) => {
console.log(error)
console.log(data)
})
下記のようなパラメータで送信できる
id: 1
name: 'smith'
favorites[]: 'music'
favorites[]: 'video games'
favorites[]: 'YouTube'
favorites[]: 'movies'