UNPKG

2.57 kBJavaScriptView Raw
1var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
2
3// require (PrototypeObject.js)
4import axios from 'axios';
5
6// axios 默认配置
7// axios.defaults.timeout = 5000
8axios.defaults.headers.post['Content-Type'] = 'application/jsoncharset=UTF-8';
9
10// 构建get请求参数, get请求需要把url和data拼接起来
11function buildGetUrl(url, params) {
12 if (!params || Object.isEmptyObject(params)) {
13 return url;
14 }
15 if (typeof params === 'string') {
16 return url + '?' + params;
17 }
18 if (Object.type(params) === 'json') {
19 return url + '?' + Object.params(params);
20 }
21 return url;
22}
23
24// 封装成Api类
25var Api = {
26 onError: function onError(error) {
27 console.warn(error);
28 },
29 setBaseURL: function setBaseURL(baseURL) {
30 axios.defaults.baseURL = baseURL;
31 },
32 request: function request(url) {
33 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
34
35 // 设置method
36 var method = params.method === 'get' ? 'get' : 'post';
37 // 设置头
38 var head = params.head || {};
39 // 设置options
40 var options = params.options || {};
41 // 设置data
42 var data = params.data || {};
43 return axios(_extends({
44 url: method === 'get' ? buildGetUrl(url, data) : url,
45 method: method,
46 headers: _extends({}, head),
47 data: method === 'get' ? null : data
48 }, options));
49 },
50 post: function post(url) {
51 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
52
53 return this.request(url, Object.assign({}, params, { method: 'post' }));
54 },
55 get: function get(url, params) {
56 return this.request(url, Object.assign({}, params, { method: 'get' }));
57 },
58 all: function all(requests) {
59 var _this = this;
60
61 // requests: [{url: '', params: {}}]
62 var methods = requests.map(function (request) {
63 return _this.request(request.url, request.params);
64 });
65 return axios.all(methods);
66 }
67
68 // 响应拦截器
69};axios.interceptors.response.use(function (response) {
70 var result = response.data || response;
71 if (typeof result === 'string') {
72 try {
73 return JSON.parse(result);
74 } catch (error) {
75 console.log('result转换JSON失败' + error);
76 return result;
77 }
78 }
79 return result;
80}, function (error) {
81 if (Api.onError) Api.onError(error);
82 return Promise.reject(error);
83});
84
85export default Api;
\No newline at end of file