更改axios的默认基本URL

时间:2017-11-21 07:31:56

标签: javascript vuejs2

我已经配置了这样的axios

const axiosConfig = {
baseURL: 'http://127.0.0.1:8000/api',
timeout: 30000,
};

Vue.prototype.$axios = axios.create(axiosConfig)

在我的组件中,我打电话为

this.$axios.get('items').then()..

现在上面的工作,但我想更改baseURL而不影响全局基本URL,以便在我的组件中我可以简单地使用没有api端点所以

我试过

this.$axios.baseURL = "http://127.0.0.1:8000;
this.$axios.get()..//this is still in api endpoint

我该怎么做?

4 个答案:

答案 0 :(得分:4)

而不是

this.$axios.get('items')

使用

this.$axios({ url: 'items', baseURL: 'http://new-url.com' })

如果您未通过method: 'XXX',则默认情况下会通过get方式发送。

请求配置: https://github.com/axios/axios#request-config

答案 1 :(得分:3)

  1. 创建 .env.development .env.production 文件(如果不存在),然后在其中添加您的API端点,例如:VUE_APP_API_ENDPOINT ='http://localtest.me:8000'
  2. 在main.js文件中,在导入后添加以下行:axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT

就是这样。 Axios默认基本URL替换为特定于构建模式的API端点。 如果您需要特定请求的特定baseURL,请按以下步骤操作:

this.$axios({ url: 'items', baseURL: 'http://new-url.com' })

答案 2 :(得分:2)

在这里放两分钱。我想做同样的事情而不用硬编码特定请求的URL。所以我想出了这个解决方案。

要将'api'附加到我的baseURL,我将默认的baseURL设置为

axios.defaults.baseURL = '/api/';

然后在我的特定请求中,在明确设置方法和网址后,我将baseURL设置为'/'

axios({
    method:'post',
    url:'logout',
    baseURL: '/',
   })
   .then(response => {
      window.location.reload();
   })
   .catch(error => {
       console.log(error);
   });

这是我的项目中经过测试且可以正常工作的解决方案。希望这对其他人有帮助。 :)

答案 3 :(得分:1)

axios docs中,您有 baseURL url

发出请求时,

baseURL将前置url。因此,您可以将baseURL定义为http://127.0.0.1:8000并向/url发出请求

// 
`url` is the server URL that will be used for the request
  url: '/user',

  // `baseURL` will be prepended to `url` unless `url` is absolute.
  // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
  // to methods of that instance.
  baseURL: 'https://some-domain.com/api/',