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; } }};

相关文章