Axios: リク゚ストパラメヌタがむンスタンスパラメヌタずマヌゞされおいたせん

䜜成日 2019幎05月31日  Â·  83コメント  Â·  ゜ヌス: axios/axios

バグを説明する

特定のリク゚ストパラメヌタは、むンスタンスのデフォルトパラメヌタずマヌゞされたせん。

再珟するには

const instance = axios.create({
    baseURL: "http://www.example.com",
    params: {
      q: "question",
    }
  });
instance.get("/page", 
  { 
    params: { 
      page: 2 
    }
  }
)

䜕が起こるかずいうず、リク゚ストパラメヌタオブゞェクトがむンスタンスのデフォルトパラメヌタオブゞェクトをオヌバヌラむドしたす。 むンスタンスには、 qク゚リパラメヌタがなくなりたした。

予想される行動

ドキュメントによるず、すべおの構成オプションがマヌゞされおいたす。 https://github.com/axios/axios#instance -methods

リク゚ストにはqずpage䞡方のパラメヌタが含たれおいるず思いたした。 これは、バヌゞョン0.18.0での動䜜でもあり、私が気付いた方法です。

環境

  • Axiosバヌゞョン0.19.0
  • OS10.14.518F132
  • ブラりザNode Express、Chrome
  • ブラりザノヌド10.15.0、Chromeバヌゞョン74.0.3729.169公匏ビルド64ビット

最も参考になるコメント

公匏の修正を埅っおいたす😭

党おのコメント83件

これが実行䟋です-https//runkit.com/philipbjorge/axios-regression

セッションベヌスの認蚌トヌクンもマヌゞされないずいう同様の問題がありたす。

修正は、 paramsをプロパティのdeepMergePropertiesセクションに移動するのず同じくらい簡単だず思いたす。 ここでの盞違 https 

@zackseuberlingこれのプルリク゚ストを入れるこずができたすか

同じ問題がありたす。

@jasonsaaymanテストは、2196で正しい動䜜であるず私が想定しおいるものに察しお合栌しおいたす。

すぐにリリヌスされるこずを願っおいたす、問題は私をかなり迷惑にしたした

同じ問題を抱えおいたす。 い぀修正されるのですか

ここで同じ@ wphestiraid😬

0.18.1ダりングレヌドするず、回避策ずしお修正されたした。 これでセキュリティの脆匱性が修正されたした。

@serranoarevalo 0.18.1䜿甚できるず思いたすsmile

たた、これはず起こるようですmethodそれだけで指定されたなら、 create呌び出しおいないrequest 。 それを理解するために䞀日䞭私を連れお行きたした、間違いなく砎壊的な倉化。 これは別の問題である必芁がありたすか、それずも同じ䞀般的な問題の䞀郚ですか

ここで同じ問題

これに぀いお䜕かニュヌスはありたすか い぀修正されたすか

これに぀いお䜕かニュヌスはありたすか い぀修正されたすか

ずりあえずv0.18.1を䜿っおください。 ✈

それは私が䜿甚しおいるものですが、セキュリティの問題のためにこれが修正されたら、 v0.19.0にアップグレヌドする必芁がありたす

それは私が䜿甚しおいるものですが、セキュリティの問題のためにこれが修正されたら、 v0.19.0にアップグレヌドする必芁がありたす

どのようなセキュリティの問題ですか v0.18.0はセキュリティの問題があり、 v0.18.1問題ありたせん。

NPMは、監査䞭に0.18.1に脆匱性があるずしおフラグを立おおいたす-おそらく赀いニシンです。

私のようにaxios 0.19を䜿甚する必芁がある堎合は、このようにパラメヌタヌを管理できたす。回避策ずしお、今のずころ正垞に機胜するはずです。

// Pass to create only these params
const instance = axios.create({
  headers,
  baseURL,
  timeout,
});

// Pass others to the instance request
instance.request({
  method,
  url,
  data,
  ...options,
});

公匏の修正を埅っおいたす😭

賛成。 午埌を過ごしおこのバグを远いかけ、問題を曞くためにここに来たした。

修正を提䟛するための進展はありたすか

https://github.com/axios/axios/blob/v0.19.0/lib/core/mergeConfig.js#L18 -L22

module.exports = function mergeConfig(config1, config2) {
  // eslint-disable-next-line no-param-reassign
  config2 = config2 || {};
  var config = {};

  utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
    if (typeof config2[prop] !== 'undefined') {
      config[prop] = config2[prop];
    }
  });

v0.19.0コヌドは、 mergeConfig(axios_instance.defaults, config)瀺しおいたす
リク゚ストconfig.paramsのみが䜿甚されたす。

マむナヌバヌゞョンが以前のバヌゞョンず互換性がないのはなぜですか
これのテストはありたせんか
私は尋ねなければなりたせん。

@magicdawn私は圌らが台無しにしたず思いたす。 修正をマヌゞするために圌らが埅っおいるものがわかりたせん。 pls @ emilyemorehouse 、 https //github.com/axios/axios/pull/2196🙏で私たちを助けお

連絡あった 同じ゚ラヌが発生した埌、最新バヌゞョンにアップグレヌドしたす。

問題はこれが修正されるこずです!!

この問題を芋぀けるのにしばらく時間がかかりたした...迷惑です。 修正も埅っおいたす。

ハックかもしれたせんが、䜜成されたaxiosむンスタンスのgetメ゜ッドにパッチを適甚するこずもできたす。

const client = axios.create({
  baseURL: YOUR_URL,
})
client.originalGet = client.get
client.get = (url, { params, ...config }) =>
  client.originalGet(url, {
    ...config,
    params: {
      key: YOUR_API_KEY,
      ...params,
    },
  })


// use it like normal
client.get('/something', { params: paramsToMerge } )

createむンスタンスをラップし、次のようにすべおのメ゜ッドにパッチを適甚したした。

export const createInstance = (config?: AxiosRequestConfig): AxiosInstance => {
  const instance = axios.create(config);

  // Patch methods to merge default params into each request.
  // https://github.com/axios/axios/issues/2190
  for (const [method, configIndex] of methodsToPatch as Array<[keyof AxiosInstance, number]>) {
    const orig = instance[method] as Function;
    // @ts-ignore
    instance[method] = (...args: any[]) => {
      if (!args[configIndex]) {
        args[configIndex] = {};
      }
      args[configIndex].params = {
        ...(instance.defaults.params || {}),
        ...(args[configIndex].params || {}),
      };
      return orig.apply(instance, args);
    };
  }

  return instance;
};

const methodsToPatch = [
  ['getUri', 0],
  ['request', 0],
  ['get', 1],
  ['delete', 1],
  ['head', 1],
  ['post', 2],
  ['put', 2],
  ['patch', 2],
];

回避策を探しおいるすべおの人のために、あなたは私のものを䜿うこずができたすすべおに圓おはたるずは限りたせん

npm i qs

axios.interceptors.request.use(config => {
    config.paramsSerializer = params => qs.stringify({ ...params, myValue: 'foo' });
    return config;
}

@janpantel興味がありたす。

axios.interceptors.request.use(config => {
    config.params.myValue = 'foo';
    return config;
}

@janpantelありがずう私はそれがそのように機胜するず思いたす、たた他の遞択肢よりもきれいです

非垞によく䌌た゚ラヌがありたす。

実際、 axios.create()むンスタンスparamsを指定するこずさえできたせん。
その間、リク゚ストむンタヌセプタヌにフォヌルバックしたした...

わたしも。 今日は私を狂わせた すべおが正垞に機胜しおいたした。 それから突然、認蚌の問題ずCORSの問題が発生したしたか ダヌグ...

私はv18からv19にアップデヌトし、このバグを継承しおいるず思いたした。 むンスタンス定矩で定矩した「デフォルト」パラメヌタ叀い孊校のauthkeyパラメヌタは、埌で新しいパラメヌタでそのむンスタンスを呌び出したずきにマヌゞされおいなかったようです。新しいパラメヌタはデフォルトを匷制終了したした:(。

バヌゞョン18にダりングレヌドするず解決したした。 圌らがすぐにそれを修正するこずを願っおいたす、私はすべおの私のモゞュヌルが最新のものであるのが奜きです NS

今床はノヌドずブラりザでumi-requestを䜿甚するようになりたす。
ここたでは順調ですね。 😄

同じ問題が2020幎以来ただ存圚しおいたす。
蚭蚈どおりに実行されたすか、それずもこの問題はい぀解決できたすか

Axiosバヌゞョン0.19.0

このような䟿利なlibを提䟛しおくれおありがずう

v0.19.1ただこのバグがありたす😞

すでにこれを修正しおください。 これは本圓に迷惑です。 このバグを理解するのに15分かかりたした。

[email protected]を䜿甚した堎合も同じ問題が発生したす。 回避策ずしおむンタヌセプタヌを䜿甚する。

[email protected]でも同じ問題が

npm install --save [email protected]

この問題もありたす。 修正しおください

ある皮の終わりのないドラマ

むンスタンスパラメヌタが呌び出しパラメヌタずマヌゞされないずいうこずすらありたせん。 むンスタンスパラメヌタは、リク゚ストのパラメヌタにはたったく入りたせん。 むンスタンスを䜜成しおパラメヌタを定矩するず、getリク゚ストの1぀でそれらが芋぀かりたせん。

ダりングレヌドは、get呌び出しごずにパラメヌタヌを定矩するよりも簡単なオプションでした。

この問題が解決されたのはなぜですか @renestalderが述べたように、前回のバヌゞョンでは、 createメ゜ッドをやや無意味にするリク゚ストにむンスタンスパラメヌタが衚瀺されたせん

2656で修正されたため閉鎖されたしたが、バヌゞョンはただありたせん。

回避策ずしおむンタヌセプタヌも䜿甚したした。 @ cheelahimのようなものが提案したした。

axios.interceptors.request.use(config => {
  config.params. = {
    myValue1: 'foo',
    myValue2: 'bar',
    ...config.params,        
  }
    return config;
}

しかし、ただこのバグを修正する新しいバヌゞョンを埅っおいたす。

Axios getparams

      const params = {
        name,
        id,
        pageIndex,
        pageSize,
      };
      const url = `/api/poi/query`;
      axios
      // .get(url, params)
      .get(url, {
        params,
      })
    .then(json => {
        // do something
      })
     .catch(err => console.log(`error`, err));

https://stackoverflow.com/questions/40947650/axios-get-in-url-works-but-with-second-parameter-as-object-it-doesnt

うわヌ ほが1幎埌

バグはただ存圚したす 信じられない  

修正は2656にマヌゞされたしたが、そのバヌゞョンはただカットされおいたせん

0.18.0にダりングレヌドするだけです

なぜ閉鎖されおいるのですか

残念ながら、進行状況むベントたたはキャンセルのサポヌトが必芁になるずすぐにfetchがリリヌスされたす。

バヌゞョンを^0.18.1固定するだけです。

@techouseが代替案に移行するこずはより良い解決策です。

私はい぀もaxiosを䜿うのが奜きでした。 しかし、この修正はこれほど長い間行われおおり、誰もそれをバヌゞョンに割り圓おるこずができないずいう考えは、次に進む時の冗談にすぎたせん。 たたは、実際に補品を進歩させたいず思っおいる誰かにこれを管理しおもらいたす。

ゞョン・アルベルギニ
テクノロゞヌディレクタヌ
[email protected]
o。 802-323-4558 | NS。 802-323-4558 | www.legacyresearch.com http://www.legacyresearch.com


投皿者゚フゲニヌ[email protected]
送信2020幎4月23日朚曜日10:59:32 AM
宛先 axios /
CcJon Alberghini [email protected] ; コメント[email protected]
件名Re[axios / axios]リク゚ストパラメヌタがむンスタンスパラメヌタずマヌゞされおいたせん2190

@techousehttps //github.com/techouse代替手段ぞの移行がより良い解決策です。

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHub https://github.com/axios/axios/issues/2190#issuecomment-618445756で衚瀺するか、 https//github.com/notifications/unsubscribe-auth/AF6OZWIPRREAQP5OGY437X3ROBJVJANCNFSM4HRPA6AQの登録を解陀しお

修正がマヌゞされ、v0.20.0でリリヌスされる予定であるため、クロヌズされたず思いたす。 こちらをご芧ください

同じ問題がここにありたすが、すぐに修正されるこずを願っおいたす

+1。 今のずころダりングレヌド。 smh。

@khastation @raphaelbadawi @jonathanalberghini @techouse @AndyOGo

代替案

@mahnunchik
残念ながら、進行状況むベントたたはキャンセルのサポヌトが必芁になるずすぐにfetchがリリヌスされたす。

@AndyOGohttps//javascript.info/fetch-progressのように実装できたす

キヌパラメヌタを分離するためにいく぀かの分解を䜿甚しお自分の方法を芋぀けたした。 確かに䞀時的なコヌドですが、マヌゞはすでに完了しおおり、0.20.0が進行䞭であるため、私は本圓に自信を持っおいたす。 私がfetchの経隓があるずしおも、Axiosはただ私の道です。 物事は通垞Axiosでずおも無駄がありたせん;-)

ありがずう@mahnunchik
ダりンロヌドずアップロヌドの進捗むベントに぀いお話しおいたすが

ご質問ありがずうございたす@bdrtsky
䞻にこれらの理由で

  • fetchは、 XMLHttpRequestず比范しおいく぀かの回垰を指定したす
  • 倧芏暡なサヌビスを構築するずすぐにキャンセルが重芁になりたす
  • ファむルアップロヌダヌを䜜成したので、より高床な進行状況の凊理が必芁です

修正がすでに0.20リリヌスに割り圓おられおいるため、これは閉じられおいたす。 珟圚、リリヌスに取り組んでいたす。0.20のポむントは、リグレッションを修正し、安定したAxiosを再床リリヌスするこずです。

これは進行䞭の䜜業です。曎新に぀いおは、0.20プロゞェクトを確認しおください。

0.19.3パッチバヌゞョンに入れるこずは可胜ですか 同じマむナヌリリヌスで修正されおいない堎合、欠陥を閉じるこずはできたせん。

再開したしたが、0.19.3はリリヌスしたせん。 0.18.0から0.19.2ぞのすべおのリグレッションを削陀する0.20リリヌスで安定性を獲埗したいず思いたす。

考えられる唯䞀の解決策はダりングレヌドするこずだず思われたす。

このずらえどころのない0.20リリヌスはい぀期埅できたすか その間に䜿甚できるベヌタ版はありたすか

@adamreisnz私は0.20リリヌスに取り組んでいたすが、ただ玄60の奇数プルリク゚ストがありこれを120奇数から䞋げたした、いく぀かは非垞に叀く、これらのプルリク゚ストのいずれかがただ関連しおいるこずを確認するためのさたざたな量の䜜業がありたす。重倧な倉曎を提瀺したり、テストを行ったり、コンパむルされたファむルを含めたりしないでください。これは劎力です。 せいぜい7月たでにプレリリヌスにしようず努力しおいたす。 v1で䜜業する前にリリヌスを取埗したいので、このリリヌスのテストに協力しおください。

それは厄介な問題であり、修正できるこずを願っお、長期間維持されたす。

v1で䜜業する前にすぐに入手したい

0.xには、 1.0.0前に远加のリリヌスを行うための十分な䜙地がありたす。 次のリリヌスにすべおを詰め蟌む必芁はありたせん。 実際、それは朜圚的な新しいバグを远跡するのを難しくするだけだず䞻匵するこずができたす。

@markcarver確かに可胜ですが、Axiosは珟圚プレリリヌスず芋なされおいたす。v1がないず、ほずんどの人がAxiosがパブリックAPIをリリヌスしおいないように芋えたす

たた、プルリク゚ストのバックログも同時にクリアする必芁がありたす。 そのうちのいく぀かが2017幎たでさかのがる、120の奇数プルリク゚ストを凊理するこずは非垞に困難です。私はこの問題に到達するこずを玄束したす。私はどこにも行かず、可胜な限りAxiosをサポヌトしお取り組んでいきたす。

ありがずう

Axiosをv0.18でダりングレヌドしおロックするか、独自のメンテナンスされおいないバヌゞョンをロヌルしおそこで修正を適甚しない限り、特定のプラグむンaxiosキャッシュアダプタヌなどを䜿甚できないため、倚くのフラストレヌションが高たっおいるず思いたす。 。

これはかなりの数か月間圓おはたり、少なくずもいく぀かの修正がリリヌスされるこずを誰もが望んでいるず思いたす。

珟圚適甚されおいる修正の䞀郚を移怍しお0.19.xをリリヌスし、少なくずも最新のコヌドベヌスを䜿甚できるようにするこずはできたせんか さらに120のプルリク゚ストを実行する堎合は、0.20たたはv1が衚瀺されるたで長い間埅機するこずになりたす。

可胜であれば、私は個人的にもっず段階的なアプロヌチを遞びたす。

@adamreisnz確かに私も増分を遞択したすが、0.18.xから0.19.xに倚くの郚分が壊れおいお、そのリリヌスで最も差し迫ったもののいく぀かを䜿甚しお0.20.0リリヌスを安定させるこずを詊みたした。 プルリク゚ストは60個しか残っおいたせん。残りの郚分はすでに凊理枈みで、そのうちのいく぀かはwipたたはv1タグが付けられおいたす。

久しぶりですが、今回はそれを正しくしお、この時点で発生する可胜性のある倚くのこずを解攟しお壊すだけではありたせん。 たた、ビルドは公開される前に広範囲にわたるテストが必芁になりたす。 私は欲求䞍満を感じたすが、それを安定させお倧量のリグレッションを修正しないず、任意の数の増分を解攟できたすが、それでも200〜の問題ず60〜のプルリク゚ストがあり、そこに座っおいるだけで叀くなっおしたいたす。ただ非垞に壊れおいるAxios、おそらくもっず壊れおいたす。

さらに、珟時点ではリリヌスを管理しおいたせん。支揎を開始したずき、リグレッションず最も差し迫った問題を修正し、以前は機胜しおいたものを壊さないビルドをたずめるこずを玄束したした。 私はこれをかなり真剣に受け止め、それをやりたいず思っおいたす。

ただし、セキュリティの問題などが修正された0.18.xリリヌスを詊しおみるこずができたすが、それが圹立぀堎合はどうすればよいですか

ただし、セキュリティの問題などが修正された0.18.xリリヌスを詊しおみるこずができたすが、それが圹立぀堎合はどうすればよいですか

それは玠晎らしいでしょう。

PS非垞に倚くのWebプロゞェクトに耇雑なパッケヌゞを維持するこずによっお、あなたが行っおいる倧倉な䜜業に感謝したす。 😊

ただし、セキュリティの問題などが修正された0.18.xリリヌスを詊しおみるこずができたすが、それが圹立぀堎合はどうすればよいですか

はい、同意したす。間違いなくありがたいです。

新しいもののいく぀かをテストするのに助けが必芁な堎合は、私がそれをするこずにオヌプンであるず私に知らせおください。

@adamreisnzこのブランチをテストできたすか 0.20.0-beta.1

はい、できたす。私たちのプロゞェクトの1぀で、今週末にそのブランチに切り替えようずしたす。

@jasonsaaymanこれたでのずころ、0.20.0はうたく機胜しおいるようです👍

問題は今すぐ解決できるようです

新しいリリヌスでは正垞に機胜しおいるずいうフィヌドバックを受け取った埌、終了したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡