api.js
1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
* 接口公共访问方法
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/3/28
*/
var rp = require('request-promise');
var errUtil = require('../util/error');
const API_URL = 'http://testapi.yoho.cn:28078';
// 最好有后端提供的各接口对应什么服务器说明,接口文档
// const DEV_API_URL = 'http://devapi.yoho.cn:58078';
// const SERVICE_URL = 'http://testservice.yoho.cn:28077';
// const YOHOBUY_URL = 'http://www.yohobuy.com';
// const API_OLD = 'http://test2.open.yohobuy.com';
class API {
constructor() {
this.headers = {
'User-Agent': 'YOHO WEB NODE' // TODO: 请求的服务端是否有要求格式,是否添加
};
this.timeout = 5000;
// TODO: 后端接口是否需求签名校验未知,如果需要需要添加
}
get(url, data) {
return rp({
url: `${API_URL}${url}`,
headers: this.headers,
timeout: this.timeout,
qs: data
}).catch(errUtil.apiError);
}
/**
* multi get
* @params: urls => Array[Object[url[string], data[object]]]
*/
multiGet(urls) {
var rps = [];
for (let el of urls.values()) {
rps.push(rp({
url: `${API_URL}${el.url}`,
headers: this.headers,
timeout: this.timeout,
qs: el.data
}));
}
return Promise.all(rps).then((d) => {
return d;
}).catch(errUtil.apiError);
}
post(url, data) {
return rp({
url: `${API_URL}${url}`,
method: 'post',
headers: this.headers,
timeout: this.timeout,
form: data // TODO: post 请求格式不知后端要求 json 还是 form 提交,需要后续完善
}).catch(errUtil.apiError);
}
}
module.exports = API;