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
| // 引入状态码statusCode
| const statusCode = require('./statusCode')
| // 定义请求路径, BASEURL: 普通请求API; CBASEURL: 中台API,不使用中台可不引入CBASEURL
| const { BASEURL } = require('./config')
| // 定义默认参数
| const defaultOptions = {
| data: {},
| ignoreToken: false,
| form: false,
| }
| /**
| * 发送请求
| * @params
| * method: <String> 请求方式: POST/GET
| * url: <String> 请求路径
| * data: <Object> 请求参数
| * ignoreToken: <Boolean> 是否忽略token验证
| * form: <Boolean> 是否使用formData请求
| */
| function request (options) {
| let _options = Object.assign(defaultOptions, options)
| let { method, url, data, ignoreToken, form } = _options
| const app = getApp()
| // 设置请求头
| let header = {}
| if (form) {
| header = {
| 'content-type': 'application/x-www-form-urlencoded'
| }
| } else {
| header = {
| 'content-type': 'application/json' //自定义请求头信息
| }
| }
| if (!ignoreToken) {
| // 从全局变量中获取token
| let token = app.globalData.token
| header.Authorization = `Bearer ${token}`
| }
| return new Promise((resolve, reject) => {
| wx.request({
| url: BASEURL + url,
| data,
| header,
| method,
| success: (res) => {
| let { statusCode: code } = res
| if (code === statusCode.SUCCESS) {
| if (res.data.code !== 0) {
| // 统一处理请求错误
| showToast(res.data.errorMsg)
| reject(res.data)
| return
| }
| resolve(res.data)
| } else if (code === statusCode.EXPIRE) {
| app.globalData.token = ''
| showToast(`登录过期, 请重新刷新页面`)
| reject(res.data)
| } else {
| showToast(`请求错误${url}, CODE: ${code}`)
| reject(res.data)
| }
| },
| fail: (err) => {
| console.log('%c err', 'color: red;font-weight: bold', err)
| showToast(err.errMsg)
| reject(err)
| }
| })
| })
| }
|
| // 封装toast函数
| function showToast (title, icon='none', duration=2500, mask=false) {
| wx.showToast({
| title: title || '',
| icon,
| duration,
| mask
| });
| }
|
| function get (options) {
| return request({
| method: 'GET',
| ...options
| })
| }
|
| function post (options) {
| // url, data = {}, ignoreToken, form
| return request({
| method: 'POST',
| ...options
| })
| }
|
| module.exports = {
| request, get, post
| }
|
|