APIを呼び出してデータを送信するように求められました。
Click in 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
内にメソッドやプロパティがありません
次に、API
オブジェクトでプロパティをtrueに設定しているのに、rest
オブジェクトでwithCredentials: true
を使用しているのはなぜですか。
axios.create({
を使用するメリットは何ですか。つまり、私が最初に行ったことよりも、彼らが何をしているのかthis.$axios.post(
request
は、axios
によって定義されたメソッドです。 docs へのリンク。
request
を使用すると、任意の動詞(POST、GET、DELETE、PUT)を使用してHTTP呼び出しを行うことができます。ほとんどの場合、axiosは他のすべてのヘルパーメソッド(request
、get
)内からpost
を呼び出しますが、これは実装の詳細です。 request
を使用する利点の1つは、HTTP動詞(POST、GET ...)をハードコーディングする必要がなく、入力に応じて実行時に設定できることです。
彼らがwithCredentials
を設定する理由は2つあります。
setClient
はsomething
の前に呼び出される場合と呼び出されない場合がありますsomething
の動作に関する追加情報は必要ないことを理解するには、rest
の定義を確認するだけで十分です。something
を使用するという要求は、axios.$post
とaxios.create
の利点を結集したものではないと思います。コードの編成方法に関係している可能性があります。
別のモジュールを使用することと、axios
を直接呼び出すことの利点
xyz
ファイルが時間とともに大きくなり、faceeBookCampaign
への呼び出しがrest
変数のメソッドになることを期待しています。 something
ではなくthis.client
を使用する方が理にかなっていますが、これは開発者次第です。(1)私は、すべてが機能するように保持する必要があるセマンティクスがあるため、idはある程度あなたを切り離すと言います。返されるオブジェクトには、構成オブジェクトを受け入れるリクエストメソッドが必要です。 configは、axiosが必要とするものと同じ構造に準拠する必要があります。しかし、いつでも adapter を記述できるため、実際にはaxiosから切り離されています。
request
ここでは設定を受け取り、Promiseを返します。このアプローチは通常、create
を使用して作成されたリクエストオブジェクトを再利用する場合に使用されると思います(少なくとも私の感覚では)。
request
メソッドを使用して、初期構成をAPI
で定義された新しい構成で上書きすると思います。そして、二重のwithCredentials
は見落としです。または、APIは新しい構成オブジェクトを定義しているため、withCredentials
なしで定義すると、create
の構成が上書きされます。
したがって、2回指定されているように見えます。