如何覆盖特定请求的设置axios覆盖默认值?

时间:2017-11-01 19:31:20

标签: javascript axios

使用axios promise库时,它允许您设置查询默认值以用于所有请求,如下所示:

axios.defaults.baseURL = 'localhost:3000'
axios.defaults.headers.common['Token'] = window.localStorage.authtoken || null
axios.defaults.headers.post['Content-Type'] = 'application/json'

虽然只有一个API可以查询,但是现在我有多个API,我的客户端应用程序需要与之交互,有没有办法用自己的配置设置多个baseURL?或者有没有办法告诉axios忽略特定请求的默认值?

// on specific urls I want to override the default base URL
axios.get('localhost:9000/whatever_resource')
.then(result => {
    // whatever
})
.catch(error => {
   // whatever
})

1 个答案:

答案 0 :(得分:2)

您可以为每个API设置一个实例,并使用自己的基本网址:https://github.com/axios/axios#creating-an-instance

const firstAPI = axios.create({
    baseURL: 'http://first-api.com'
})
const secondAPI = axios.create({
    baseURL: 'http://second-api.com'
})

然后,您可以在这些实例上使用所有axios方法,例如.get.post

firstAPI.get('hello')
  .then((response) => {
     console.log(response)
  })

secondAPI.post('world')
  .then((response) => {
     console.log(response)
  })