更改axios的默认基url

zdwk9cvp  于 12个月前  发布在  iOS
关注(0)|答案(7)|浏览(163)

我这样配置我的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


我该怎么做?

6ju8rftf

6ju8rftf1#

我想在这里说两句。我想做同样的事情,而不需要为我的特定请求硬编码URL。所以我想出了这个解决方案。
为了将'api'附加到我的baseURL,我将默认的baseURL设置为,

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

字符串
然后,在我的特定请求中,在显式设置方法和url之后,我将baseURL设置为'/'

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

plicqrtu

plicqrtu2#

而不是

this.$axios.get('items')

字符串
使用

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


如果你不传递method: 'XXX',那么默认情况下,它将通过get方法发送。

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

92vpleto

92vpleto3#

1.创建**.env.development**、.env.production文件(如果不存在),并在其中添加您的API端点,例如:VUE_APP_API_ENDPOINT ='http://localtest.me:8000'
1.在main.js文件中,在imports之后添加这一行:axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT
就是这样。Axios默认的基本URL被构建模式特定的API端点替换。如果您需要特定的baseURL用于特定请求,请按照以下方式执行:

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

字符串

uxhixvfz

uxhixvfz4#

如果还有人需要帮助:
您可以直接更改Axios基本URL,以便在您想要使用它的位置使用它

anotherAxiosRequest(){
 axios.defaults.baseURL = http://wwww.example.com
 axios({
   url:'/cats' //=>  http://wwww.example.com/cats
 })
}

字符串
它会改变基本URL
注意,这不会改变main.js中定义的基本URL

umuewwlo

umuewwlo5#

从axios文档中,你有 baseURLurl
在发出请求时,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/',

字符串

de90aj5v

de90aj5v6#

你也可以使用这个(对于nuxt和vue)

this.$axios.defaults.baseURL = 'http://example.com/example'

字符串
这对我来说是一个请求的自定义baseURL

async getDataFromServer({ commit }, payload) {
    commit('setLoadingStatus', true)
    try {
      const page = payload.page || 1
      const sort = payload.sort || 'published_at'

      this.$axios.defaults.baseURL = 'http://example.com/example'
     
      const { data } = await this.$axios.get(`/example`)

      commit('setItOnState', data)
    } catch (e) {
      throw new Error(e)
    } finally {
      commit('setLoadingStatus', false)
    }
  },

js5cn81o

js5cn81o7#

你可以放点像...

axios.get("https://your-url", {baseURL:"")

字符串
这将覆盖这个特定axios请求的axios拦截器中的baseURL。

相关问题