# 1. 描述:在react中通用请求数据
# 2. 使用:
(1)fetch
import { message } from 'antd';
/**
* 主要params参数
* @params inpVal {string} 输入的请求地址url
* @params textValue {string} 输入的文本数据
* @return {Promise}
*/
var requestData = {
post(inpVal, textValue) {
return new Promise((resolve, reject) => {
if (!inpVal) {
message.error('请输入URL!');
return;
}
if (!inpVal.includes('http')) {
message.error('该协议无法post');
return;
}
fetch(inpVal, {
method: 'post',
headers: {
Accept:
'application/json,text/plain,*/*' /* 格式限制:json、文本、其他格式 */,
'Content-Type': 'text/plain,charset=UTF-8',
},
body: textValue,
})
.then((response) => {
return response.json();
})
.then((data) => {
resolve(data);
})
.catch((error) => {
console.log('post请求出错', error);
});
});
},
};
export default requestData;
// 其它页面导入使用
let rqdata = await requestData.post(inpVal, textValue);
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
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
(2)axios
/envconfig/envconfig
/**
* 全局配置文件
*/
let baseURL;
let imgUrl = '//elm.cangdu.org/img/';
if(process.env.NODE_ENV === 'development'){
baseURL = '//api.cangdu.org';
}else{
baseURL = '//api.cangdu.org';
}
export default {imgUrl, baseURL}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Server.js
import axios from 'axios';
import envconfig from '@/envconfig/envconfig';
/**
* 主要params参数
* @params method {string} 方法名
* @params url {string} 请求地址 例如:/login 配合baseURL组成完整请求地址
* @params baseURL {string} 请求地址统一前缀 ***需要提前指定*** 例如:http://cangdu.org
* @params timeout {number} 请求超时时间 默认 30000
* @params params {object} get方式传参key值
* @params headers {string} 指定请求头信息
* @params withCredentials {boolean} 请求是否携带本地cookies信息默认开启
* @params validateStatus {func} 默认判断请求成功的范围 200 - 300
* @return {Promise}
* 其他更多拓展参看axios文档后 自行拓展
* 注意:params中的数据会覆盖method url 参数,所以如果指定了这2个参数则不需要在params中带入
*/
export default class Server {
axios(method, url, params){
return new Promise((resolve, reject) => {
if(typeof params !== 'object') params = {};
let _option = params;
_option = {
method,
url,
baseURL: envconfig.baseURL,
timeout: 30000,
params: null,
data: null,
headers: null,
withCredentials: true, //是否携带cookies发起请求
validateStatus:(status)=>{
return status >= 200 && status < 300;
},
...params,
}
axios.request(_option).then(res => {
resolve(typeof res.data === 'object' ? res.data : JSON.parse(res.data))
},error => {
if(error.response){
reject(error.response.data)
}else{
reject(error)
}
})
})
}
}
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
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
api.js
import Server from './server';
class API extends Server{
/**
* 用途:上传图片
* @url https://elm.cangdu.org/v1/addimg/shop
* 返回status为1表示成功
* @method post
* @return {promise}
*/
async uploadImg(params = {}){
try{
let result = await this.axios('post', '//elm.cangdu.org/v1/addimg/shop', params);
if(result && result.status === 1){
return result;
}else{
let err = {
tip: '上传图片失败',
response: result,
data: params,
url: '//elm.cangdu.org/v1/addimg/shop',
}
throw err;
}
}catch(err){
throw err;
}
}
/**
* 用途:获取记录数据
* @url https://api.cangdu.org/shopro/data/record
* 返回http_code为200表示成功
* @method get
* @return {promise}
*/
async getRecord(params = {}){
try{
let result = await this.axios('get', `/shopro/data/record/${params.type}`);
if(result && (result.data instanceof Object) && result.http_code === 200){
return result.data;
}else{
let err = {
tip: '获取记录数据失败',
response: result,
data: params,
url: 'https://api.cangdu.org/shopro/data/record',
}
throw err;
}
}catch(err){
throw err;
}
}
/**
* 用途:获取商品数据
* @url https://api.cangdu.org/shopro/data/products
* 返回http_code为200表示成功
* @method get
* @return {promise}
*/
async getProduction(params = {}){
try{
let result = await this.axios('get', '/shopro/data/products', params);
if(result && (result.data instanceof Object) && result.http_code === 200){
return result.data.data||[];
}else{
let err = {
tip: '获取商品数据失败',
response: result,
data: params,
url: 'https://api.cangdu.org/shopro/data/products',
}
throw err;
}
}catch(err){
throw err;
}
}
/**
* 用途:获取佣金数据
* @url https://api.cangdu.org/shopro/data/balance
* 返回http_code为200表示成功
* @method get
* @return {promise}
*/
async getBalance(params = {}){
try{
let result = await this.axios('get', '/shopro/data/balance', params);
if(result && (result.data instanceof Object) && result.http_code === 200){
return result.data.data||{};
}else{
let err = {
tip: '获取佣金数据失败',
response: result,
data: params,
url: 'https://api.cangdu.org/shopro/data/balance',
}
throw err;
}
}catch(err){
throw err;
}
}
}
export default new API();
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
使用
let result = await API.uploadImg({data: formdata});
1
# 参考
https://github.com/bailicangdu/react-pxq