You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.7 KiB
73 lines
1.7 KiB
class Request { |
|
constructor(options = {}) { |
|
// 请求的根路径 |
|
this.baseUrl = options.baseUrl || '' |
|
// 请求的 url 地址 |
|
this.url = options.url || '' |
|
// 请求方式 |
|
this.method = 'GET' |
|
// 请求的参数对象 |
|
this.data = null |
|
// header 请求头 |
|
this.header = options.header || {} |
|
this.beforeRequest = null |
|
this.afterRequest = null |
|
} |
|
|
|
get(url, data = {}) { |
|
this.method = 'GET' |
|
this.url = this.baseUrl + url |
|
this.data = data |
|
return this._() |
|
} |
|
|
|
post(url, data = {}) { |
|
this.method = 'POST' |
|
this.url = this.baseUrl + url |
|
this.data = data |
|
return this._() |
|
} |
|
|
|
put(url, data = {}) { |
|
this.method = 'PUT' |
|
this.url = this.baseUrl + url |
|
this.data = data |
|
return this._() |
|
} |
|
|
|
delete(url, data = {}) { |
|
this.method = 'DELETE' |
|
this.url = this.baseUrl + url |
|
this.data = data |
|
return this._() |
|
} |
|
|
|
_() { |
|
// 清空 header 对象 |
|
this.header = {} |
|
// 请求之前做一些事 |
|
this.beforeRequest && typeof this.beforeRequest === 'function' && this.beforeRequest(this) |
|
// 发起请求 |
|
return new Promise((resolve, reject) => { |
|
let weixin = wx |
|
// 适配 uniapp |
|
if ('undefined' !== typeof uni) { |
|
weixin = uni |
|
} |
|
weixin.request({ |
|
url: this.url, |
|
method: this.method, |
|
data: this.data, |
|
header: this.header, |
|
success: (res) => { resolve(res) }, |
|
fail: (err) => { reject(err) }, |
|
complete: (res) => { |
|
// 请求完成以后做一些事情 |
|
this.afterRequest && typeof this.afterRequest === 'function' && this.afterRequest(res) |
|
} |
|
}) |
|
}) |
|
} |
|
} |
|
|
|
export const $http = new Request() |