Change the default base url for axios

前端 未结 4 1282
耶瑟儿~
耶瑟儿~ 2021-02-01 12:42

I have configured my axios like this

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

Vue.prototype.$axios = axios.create(ax         


        
相关标签:
4条回答
  • 2021-02-01 13:02

    From axios docs you have baseURL and url

    baseURL will be prepended to url when making requests. So you can define baseURL as http://127.0.0.1:8000 and make your requests to /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/',
    
    
    0 讨论(0)
  • 2021-02-01 13:18

    Putting my two cents here. I wanted to do the same without hardcoding the URL for my specific request. So i came up with this solution.

    To append 'api' to my baseURL, I have my default baseURL set as,

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

    Then in my specific request, after explicitly setting the method and url, i set the baseURL to '/'

    axios({
        method:'post',
        url:'logout',
        baseURL: '/',
       })
       .then(response => {
          window.location.reload();
       })
       .catch(error => {
           console.log(error);
       });
    
    0 讨论(0)
  • 2021-02-01 13:19
    1. Create .env.development, .env.production files if not exists and add there your API endpoint, for example: VUE_APP_API_ENDPOINT ='http://localtest.me:8000'
    2. In main.js file, add this line after imports: axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT

    And that's it. Axios default base Url is replaced with build mode specific API endpoint. If you need specific baseURL for specific request, do it like this:

    this.$axios({ url: 'items', baseURL: 'http://new-url.com' })
    
    0 讨论(0)
  • 2021-02-01 13:22

    Instead of

    this.$axios.get('items')
    

    use

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

    If you don't pass method: 'XXX' then by default, it will send via get method.

    Request Config: https://github.com/axios/axios#request-config

    0 讨论(0)
提交回复
热议问题