【问题标题】:How to pass dynamic parameters to axios instance如何将动态参数传递给axios实例
【发布时间】:2020-10-12 05:57:54
【问题描述】:

我刚刚阅读了一篇关于如何使用 axios HERE 使您的 API 请求 DRY 的 css-tricks 文章。现在做出这样的反应就可以了:

export default axios.create({
  baseURL: 'https://mysite/v3',
  headers: {
    'content-type': 'application/json'
  }
})

如果我想向这个实例传递额外的参数怎么办? IE。我有另一个参数,我想像这样的标题:

'X-USER-ACCESS-TOKEN': sessionToken,

如果我有多个其他选项要传递给标题怎么办?

【问题讨论】:

标签: javascript reactjs axios fetch


【解决方案1】:

要动态传递headers,您可以导出一个以options 作为参数并返回axios 的新实例的函数:

// utils/custom-axios.js

export default function(options = {}) {
  const { 
    headers = {} 
  } = options;
  
  return axios.create({
    baseURL: "https://mysite/v3",
    headers: {
      "Content-Type": "application/json",
      ...headers
    }
  });
}

那么你可以通过以下方式使用它:

const axios = require("./utils/custom-axios");

const options = { 
  headers: { "X-USER-ACCESS-TOKEN": "secret" } 
};

axios(options)
  .post("./user.json", formData)
  .then(...)
  .catch(...);

// alternatively, don't pass any options 
axios()
  .post("./user.json", formData)
  .then(...)
  .catch(...);

【讨论】:

  • 这更多的是我正在寻找的东西,尝试过类似的东西,让我试试这个,让你知道
【解决方案2】:

如果我说得对,您想传递不同调用的标头,而不是使用基本配置为所有请求设置它们?

axios.get('url', { headers: 'X-USER-ACCESS-TOKEN': sessionToken }) 呢?

【讨论】:

  • 您好,谢谢,但这似乎不起作用,控制台中也不会出现任何错误。
  • 如何确定它不起作用?您是否检查了发送的实际请求?
猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2019-08-06
  • 2018-08-15
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多