簡單封裝 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;
}
})
}