HTTP AJAX请求如何将字典类型的数据转化为FormData

浏览器用fetch()进行AJAX请求时,POST过去的数据是以表单的形式。将字典的形式的数据转化为表单数据可以用URLSearchParams

const dictToFormData = (obj) => {
    let formData = new URLSearchParams();
    for (var key in obj) {
        formData.append(key, obj[key]);
    }
    return formData
}

这样,可以将要发送的数据先以字典的形式定义,然后转化为表单数据。例如

export const fetchAccessToken = () => {
    let url = `${baseUrl}/oauth/token`;
    let data = {
        grant_type: 'password',
        client_id: 2,
        client_secret: 'client_secret',
        username: 'username',
        password: 'password==',
        scope: '*'
    }
    let formData = dictToFormData(data);

    return fetch(url, {
        method: 'POST',
        mode: 'cors',
        body: formData
    })
        .then(res => res.json())
        .catch(ex => ex)
}