天天看點

簡單封裝 axios

簡單封裝 axios

//設定baseURL
const baseURL = 'http://localhost:3000';
//建立執行個體
const instance = axios.create({
    baseURL,
    timeout: 1000
})

const request = ({ url, method = 'GET', params, data, withCredentials = false, headers={'Content-Type':'application/json'} }) => {
    return new Promise((resovle, reject) => {
        switch (method.toUpperCase()) {
        //判斷請求類型
            case 'POST':
                let redata = {};
                //判斷發送的資料類型    預設json     
                if (headers['Content-Type'] === 'application/x-www-form-urlencoded') {
                    const p = new URLSearchParams();
                    for (var key in data) {
                        p.append(key, data[key])
                    }
                    redata = p;
                    
                } else {
                    redata = data
                }
                instance.post(url, data = redata, {
                        withCredentials,
                        headers
                    }).then(res => resovle(res))
                    .catch(err => reject(err))
                break;
            case 'PUT':
                instance.put(url,  params,{ withCredentials })
                .then(res => resovle(res))
                .catch(err => reject(err))
                break;
            case 'DELETE':
                instance.delete(url, { params, withCredentials })
                .then(res => resovle(res))
                .catch(err => reject(err))
                break;
            default:
                instance.get(url, { params, withCredentials })
                    .then(res => resovle(res))
                    .catch(err => reject(err))
                break;
        }
    })
}
           

繼續閱讀