我对创建 API 包装器和使用 es6 类从 axios 进行扩展很感兴趣。这怎么可能? axios 有一个方法 .create() 可以让你生成一个新的 axios 对象
class Api extends Axios {
constructor(...args){
super(..args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
我知道我可以访问这个 let instance = axios.create()
。
有什么想法吗?
尝试 1
import axios from 'axios'
const Axios = axios.create()
class Api extends Axios {
constructor (...args) {
super(...args)
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
let api = new Api()
api.cancelOrder('hi')
.then(console.log)
.catch(console.log)
尝试 2
import axios from 'axios'
class Axios {
constructor () {
return axios.create()
}
}
class Api extends Axios {
constructor () {
super()
this.defaults.baseURL = 'https://api.com'
}
cancelOrder (id) {
return this.put(`/cancel/order/${id}`)
}
}
let api = new Api()
console.log(api.__proto__)
api.cancelOrder('hi')
.then(console.log)
.catch(console.log)
最佳答案
axios
当前不导出它在内部使用的 Axios
对象。
.create()
方法仅实例化一个新实例。
// Factory for creating new instances
axios.create = function create(defaultConfig) {
return new Axios(defaultConfig);
};
我创建了一个导出 Axios
类的 pr。
https://github.com/reggi/axios/commit/7548f2f79d20031cd89ea7c2c83f6b3a9c2b1da4
还有一个 github 问题:
关于javascript - 使用 es6 类扩展 Axios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217716/