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 110
| class Request { constructor(options = {}) { this.baseURL = options.baseURL || '' this.timeout = options.timeout || 60000 this.header = options.header || {} this.beforeRequest = options.beforeRequest this.afterRequest = options.afterRequest }
beforeRequest(config) { const token = uni.getStorageSync('token') if (token) { config.header.Authorization = `Bearer ${token}` } return config }
afterRequest(response) { const { statusCode, data } = response if (statusCode >= 200 && statusCode < 300) { return data } return Promise.reject(response) }
request(options = {}) { options.baseURL = options.baseURL || this.baseURL options.timeout = options.timeout || this.timeout options.header = { ...this.header, ...options.header } options.method = options.method || 'GET'
if (this.beforeRequest) { options = this.beforeRequest(options) }
return new Promise((resolve, reject) => { uni.request({ ...options, url: options.baseURL + options.url, success: (res) => { if (this.afterRequest) { try { const data = this.afterRequest(res) resolve(data) } catch (error) { reject(error) } } else { resolve(res.data) } }, fail: (err) => { reject(err) } }) }) }
get(url, data = {}, options = {}) { return this.request({ url, data, method: 'GET', ...options }) }
post(url, data = {}, options = {}) { return this.request({ url, data, method: 'POST', ...options }) }
put(url, data = {}, options = {}) { return this.request({ url, data, method: 'PUT', ...options }) }
delete(url, data = {}, options = {}) { return this.request({ url, data, method: 'DELETE', ...options }) } }
export default new Request({ baseURL: process.env.VUE_APP_BASE_API, timeout: 10000, header: { 'Content-Type': 'application/json' } })
|