73 lines
1.7 KiB
JavaScript
73 lines
1.7 KiB
JavaScript
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() |