动态

详情 返回 返回

[axios] 版本升級,特性變更記錄(高版本post請求異常) - 动态 详情

axios 原版本 0.19.2,升級到0.27.2 出現了部分post請求發送異常的情況。
經查發現雖然大版本號同為0,但是0.27.2的內部邏輯有變更。
(0.27.2版本去掉了一些0.19.2版本中的對config的兼容性處理),導致0.19.2中不規範的api使用方式在0.27.2中無法生效。

問題發生在使用類似於下面這種形式發送post請求。
axios.post(url[, data[, config]])

一個正常發送的post請求是這樣的

axios.post('/baseUrl/info', 
  {
    fundId: "000001",
    type: "bond"
  },
  {
  headers: {
      "Content-Type": "application/json"
  }
  timeout: 8000
  }
);

簡化一下場景,想發送一個post請求

const data = {
  fundId: "000001",
  type: "bond"
};

// 正常使用
axios.post('/baseUrl/info', data);

在0.19.2版本中,下面這段代碼

const data = {
  fundId: "000001",
  type: "bond"
};

// 不規範使用
axios.post('/baseUrl/info', {}, {data});

也可以正常發送post請求。 (在0.19.2中 data作為config中的key,會被解析為reqBody)

注意:
這是axios@0.19.2對config.data字段的兼容處理,axios的文檔中,明確的指出data應該使用axios.post(url[, data[, config]]) 這種方式發送。

在axios@0.27.2中,實測這種對config中data字段的兼容性處理被刪除了。
即 axios@0.27.2中,當data作為config的key放置在第三個參數的位置傳入post方法,這個config.data參數不會被解析。

因此使用 axios.post('/baseUrl/info', {}, {data}); 形式傳入data會丟失reqBody。

同步更新到自己的語雀
https://www.yuque.com/dirackeeko/blog/mgfhw7l6bmst4nmf

user avatar grewer 头像 xiaolei_599661330c0cb 头像 yqyx36 头像 huyouxueboshi 头像 russell221 头像 baqidemakebei 头像 chumendeshijie_68fa2aee8a3d5 头像 bradenhan 头像 echeverra 头像 mingxuann 头像 coder_64d08a0a77d68 头像 viewweiwu 头像
点赞 16 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.