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
2 years ago
|
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()
|