我被要求进行 API 调用以发送数据。
在 vue 中单击时,我正在触发此事件
async facebookDataToSend () {
let campaignID = await this.$store.getters['CurrentInstance/id']
this.$axios.post(process.env.API_BASE_URL + 'faceeBookCampaign', { campaignID: campaignID }, { withCredentials: true })
},
但是后来,我被告知要使用一些 xyz.js 文件中已经存在的 API 函数。
我的 xyz.js 文件看起来像这样..
const rest = {
something: axios.create({
baseURL: process.env.API_BASE_URL,
withCredentials: true
}),
setClient: function (client) {
this.something = axios.create({
baseURL: process.env.API_BASE_URL,
withCredentials: true,
params: {
__somethingClient: client
}
})
this.client = client
}
}
在这里,我无法理解如何使用此实例进行 api 调用所以我查看了他们已经进行 api 调用的代码并看到了类似这样的内容
const API = {
url: '/whateverHtml/',
method: 'post',
withCredentials: true,
data: {
'schemaType': 'something-event', // TODO FIXME
'field': 'description', // TODO FIXME
'html': this.model[this.field.key]
}
api.something.request(API).then(result => {
而且我无法理解代码。对于初学者
什么是请求?我在
something
中看不到我的任何方法或属性在我的rest
多变的第二他们为什么使用
withCredentials: true
在他们的API
当他们已经在 rest
中将属性设置为 true 时的对象目的]使用
axios.create({
的专业人士有哪些?即他们所做的比我最初所做的 this.$axios.post(
最佳答案
request
是由 axios
定义的方法.链接到 docs .request
允许您使用所需的任何动词(POST、GET、DELETE、PUT)进行 HTTP 调用。最有可能的 axios 调用 request
从所有其他辅助方法( get
, post
)内部,但这是一个实现细节。使用 request
的优势之一是您不必对 HTTP 动词(POST、GET ...)进行硬编码,您可以在运行时根据您的输入进行设置。
我看到他们设置 withCredentials
的两个原因:
setClient
在 something
之前可能会或可能不会被调用something
的定义就足够了意识到客户端正在使用凭据,并且您不需要任何关于如何 rest
的额外信息作品。 我不认为要求您使用
something
归结为 axios.$post
的优势对比 axios.create
.它可能更多地与如何组织代码有关。使用单独模块与调用
axios
相比的一些优势直接地xyz
文件随时间增长,您可以调用 faceeBookCampaign
最终成为 rest
上的一种方法多变的。最终使用 this.client
更有意义而不是 something
但这取决于开发人员。 (1) 我说 id 在某种程度上使您解耦,因为需要保留语义,以便一切正常。返回的对象需要有一个接受配置对象的请求方法。配置需要符合与 axios 想要的相同的结构。但是,你总是可以写一个 adapter为此,您实际上已与 axios 解耦。
关于javascript - 了解 Axios 创建的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54975443/