|
@@ -55,9 +55,28 @@ class Http { |
|
@@ -55,9 +55,28 @@ class Http { |
55
|
}
|
55
|
}
|
56
|
|
56
|
|
57
|
/**
|
57
|
/**
|
|
|
58
|
+ * 处理接口返回状态码
|
|
|
59
|
+ */
|
|
|
60
|
+ _handleDataCode(data, code, url) {
|
|
|
61
|
+ let result = {};
|
|
|
62
|
+
|
|
|
63
|
+ code = code || 200;
|
|
|
64
|
+ if (_.toNumber(data.code) === _.toNumber(code)) {
|
|
|
65
|
+ _.unset(data, 'code');
|
|
|
66
|
+ _.forEach(data, (value, key) => {
|
|
|
67
|
+ _.set(result, key, value);
|
|
|
68
|
+ });
|
|
|
69
|
+ } else {
|
|
|
70
|
+ log.error(`API: ${url} return code not ${code}`);
|
|
|
71
|
+ }
|
|
|
72
|
+ return result;
|
|
|
73
|
+ }
|
|
|
74
|
+
|
|
|
75
|
+
|
|
|
76
|
+ /**
|
58
|
* 调用接口
|
77
|
* 调用接口
|
59
|
*/
|
78
|
*/
|
60
|
- _requestFromAPI(options, cacheOption, reqId) {
|
79
|
+ _requestFromAPI(options, param, reqId) {
|
61
|
const timer = new Timer();
|
80
|
const timer = new Timer();
|
62
|
const method = options.method || 'get';
|
81
|
const method = options.method || 'get';
|
63
|
|
82
|
|
|
@@ -71,9 +90,15 @@ class Http { |
|
@@ -71,9 +90,15 @@ class Http { |
71
|
return Promise.reject(API_BAD_RETSULT);
|
90
|
return Promise.reject(API_BAD_RETSULT);
|
72
|
}
|
91
|
}
|
73
|
|
92
|
|
|
|
93
|
+ // 处理返回数据状态码
|
|
|
94
|
+ if (param && param.code) {
|
|
|
95
|
+ result = this._handleDataCode(result, param.code, options.url);
|
|
|
96
|
+ }
|
|
|
97
|
+
|
74
|
// 写缓存, 否则返回 Slave 缓存服务器的数据
|
98
|
// 写缓存, 否则返回 Slave 缓存服务器的数据
|
75
|
- if (config.useCache && cacheOption) {
|
|
|
76
|
- const cacheTime = _.isNumber(cacheOption) ? cacheOption : 60;
|
99
|
+ if (options.method === 'get' && config.useCache &&
|
|
|
100
|
+ param && param.cache) {
|
|
|
101
|
+ const cacheTime = _.isNumber(param.cache) ? param.cache : 60;
|
77
|
const catchErr = (err) => {
|
102
|
const catchErr = (err) => {
|
78
|
log.error(`cache: ${err.toString()}`);
|
103
|
log.error(`cache: ${err.toString()}`);
|
79
|
};
|
104
|
};
|
|
@@ -92,7 +117,7 @@ class Http { |
|
@@ -92,7 +117,7 @@ class Http { |
92
|
log.error(`API: ${options.url}?${qs.stringify(options.qs)}`);
|
117
|
log.error(`API: ${options.url}?${qs.stringify(options.qs)}`);
|
93
|
|
118
|
|
94
|
// 使用缓存的时候,读取二级缓存
|
119
|
// 使用缓存的时候,读取二级缓存
|
95
|
- if (config.useCache && cacheOption) {
|
120
|
+ if (config.useCache && param && param.cache) {
|
96
|
return this._requestFromCache(options, true);
|
121
|
return this._requestFromCache(options, true);
|
97
|
}
|
122
|
}
|
98
|
return Promise.resolve(API_CALL_FAIL);
|
123
|
return Promise.resolve(API_CALL_FAIL);
|
|
@@ -103,9 +128,10 @@ class Http { |
|
@@ -103,9 +128,10 @@ class Http { |
103
|
* 读取缓存
|
128
|
* 读取缓存
|
104
|
* @param {[object]} options
|
129
|
* @param {[object]} options
|
105
|
* @param {[boolean]} slave true: 读取二级缓存
|
130
|
* @param {[boolean]} slave true: 读取二级缓存
|
|
|
131
|
+ * @param {[object]} param 请求API处理参数
|
106
|
* @return {[type]}
|
132
|
* @return {[type]}
|
107
|
*/
|
133
|
*/
|
108
|
- _requestFromCache(options, slave) {
|
134
|
+ _requestFromCache(options, slave, param) {
|
109
|
const reqId = this._getReqId(options);
|
135
|
const reqId = this._getReqId(options);
|
110
|
const getCache = slave ? cache.getFromSlave : cache.get;
|
136
|
const getCache = slave ? cache.getFromSlave : cache.get;
|
111
|
|
137
|
|
|
@@ -122,14 +148,14 @@ class Http { |
|
@@ -122,14 +148,14 @@ class Http { |
122
|
|
148
|
|
123
|
// 读取缓存失败,并且不是二级缓存的时候,调用 API
|
149
|
// 读取缓存失败,并且不是二级缓存的时候,调用 API
|
124
|
if (!slave) {
|
150
|
if (!slave) {
|
125
|
- return this._requestFromAPI(options, true, reqId);
|
151
|
+ return this._requestFromAPI(options, param, reqId);
|
126
|
}
|
152
|
}
|
127
|
}).catch(() => {
|
153
|
}).catch(() => {
|
128
|
log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL);
|
154
|
log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL);
|
129
|
|
155
|
|
130
|
// 读取缓存失败,并且不是二级缓存的时候,调用 API
|
156
|
// 读取缓存失败,并且不是二级缓存的时候,调用 API
|
131
|
if (!slave) {
|
157
|
if (!slave) {
|
132
|
- return this._requestFromAPI(options, true, reqId);
|
158
|
+ return this._requestFromAPI(options, param, reqId);
|
133
|
}
|
159
|
}
|
134
|
|
160
|
|
135
|
return Promise.resolve(API_CALL_FAIL);
|
161
|
return Promise.resolve(API_CALL_FAIL);
|
|
@@ -140,10 +166,10 @@ class Http { |
|
@@ -140,10 +166,10 @@ class Http { |
140
|
* 使用 get 请求获取接口
|
166
|
* 使用 get 请求获取接口
|
141
|
* @param {[string]} url
|
167
|
* @param {[string]} url
|
142
|
* @param {[object]} data
|
168
|
* @param {[object]} data
|
143
|
- * @param {[bool or number]} cacheOption 使用数字时,数字表示缓存时间
|
169
|
+ * @param {[object]} param 数据处理参数
|
144
|
* @return {[type]}
|
170
|
* @return {[type]}
|
145
|
*/
|
171
|
*/
|
146
|
- get(url, data, cacheOption) {
|
172
|
+ get(url, data, param) {
|
147
|
const options = {
|
173
|
const options = {
|
148
|
url: `${this.ApiUrl}${url}`,
|
174
|
url: `${this.ApiUrl}${url}`,
|
149
|
qs: data.client_secret ? data : sign.apiSign(data),
|
175
|
qs: data.client_secret ? data : sign.apiSign(data),
|
|
@@ -153,19 +179,21 @@ class Http { |
|
@@ -153,19 +179,21 @@ class Http { |
153
|
};
|
179
|
};
|
154
|
|
180
|
|
155
|
// 从缓存获取数据
|
181
|
// 从缓存获取数据
|
156
|
- if (config.useCache && cacheOption) {
|
|
|
157
|
- return this._requestFromCache(options);
|
182
|
+ if (config.useCache && param && param.catch) {
|
|
|
183
|
+ return this._requestFromCache(options, false, param);
|
158
|
}
|
184
|
}
|
159
|
|
185
|
|
160
|
- return this._requestFromAPI(options, cacheOption);
|
186
|
+ return this._requestFromAPI(options, param);
|
161
|
}
|
187
|
}
|
162
|
|
188
|
|
163
|
/**
|
189
|
/**
|
164
|
- * post
|
|
|
165
|
- * @param url String
|
|
|
166
|
- * @param data Obejct
|
190
|
+ * 使用 post 请求获取接口
|
|
|
191
|
+ * @param {[string]} url
|
|
|
192
|
+ * @param {[object]} data
|
|
|
193
|
+ * @param {[object]} param 数据处理参数
|
|
|
194
|
+ * @return {[type]}
|
167
|
*/
|
195
|
*/
|
168
|
- post(url, data) {
|
196
|
+ post(url, data, param) {
|
169
|
const options = {
|
197
|
const options = {
|
170
|
url: `${this.ApiUrl}${url}`,
|
198
|
url: `${this.ApiUrl}${url}`,
|
171
|
form: data.client_secret ? data : sign.apiSign(data),
|
199
|
form: data.client_secret ? data : sign.apiSign(data),
|
|
@@ -174,7 +202,7 @@ class Http { |
|
@@ -174,7 +202,7 @@ class Http { |
174
|
timeout: 3000
|
202
|
timeout: 3000
|
175
|
};
|
203
|
};
|
176
|
|
204
|
|
177
|
- return this._requestFromAPI(options);
|
205
|
+ return this._requestFromAPI(options, param);
|
178
|
}
|
206
|
}
|
179
|
|
207
|
|
180
|
all(list) {
|
208
|
all(list) {
|