Vue + Axios mixin
Posted rexunil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue + Axios mixin相关的知识,希望对你有一定的参考价值。
/**
* axios + vue
*/
let baseUrl = `/api`;
let mixin = {
data: function() {
return {
params: {
page: 1,
rows: 10,
sort: "id",
order: "desc",
keyword: ""
},
fileUrl: `${baseUrl}/file/upload`,
imageUrl: `${baseUrl}/image`
};
},
methods: {
/**
* GET 请求
* @param url 请求地址
* @param params 请求参数, 不支持数组嵌套
* // 支持
* params = {
* type: [‘js‘, ‘ts‘]
* }
*
* // 不支持
* params = {
* type: [[‘js‘], ‘ts‘]
* }
*/
getData: async function(url, params = {}) {
let queryStringArr = [];
if (params && Object.keys(params).length > 0) {
Object.keys(params).forEach(key => {
let value = params[key];
if (Array.isArray(value)) {
value.forEach(item => {
queryStringArr.push(`${key}=${item}`);
});
} else {
if (value) {
queryStringArr.push(`${key}=${value}`);
}
}
});
}
let queryString = queryStringArr.join("&");
url = queryString ? `${url}?${queryString}` : url;
let requestUrl = `${baseUrl}/${url}`;
let resp = await axios.get(requestUrl);
let result = resp["data"];
return result;
},
/**
* POST 提交 json
* @param url 提交地址
* @param body 提交数据 json
*/
postData: async function(url, data) {
let requestUrl = `${baseUrl}/${url}`;
let resp = await axios.post(requestUrl, data);
let result = resp["data"];
return result;
},
/**
* 提交表单
* @param url 提交地址
* @param formData 表单
* @param config 请求配置
*/
postFormData: async function(
url,
formData,
config = { headers: { ContentType: "application/x-www-form-urlencoded" } }
) {
let requestUrl = `${baseUrl}/${url}`;
let resp = await axios.post(requestUrl, formData, config);
let result = resp["data"];
return result;
}
}
};
以上是关于Vue + Axios mixin的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段14——Vue的axios网络请求封装