代码之家  ›  专栏  ›  技术社区  ›  Boussadjra Brahim

如何在axios中创建动态baseURL

  •  1
  • Boussadjra Brahim  · 技术社区  · 5 年前

    假设我有 baseURL 在给定服务中定义如下:

    import axios from 'axios'
    
    const myAPI = axios.create({
      baseURL: 'https://api.domaine.com/',
      withCredentials: false,
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json'
      }
    })
    
    export default {
    
      getUsers(){
         MyAPI.get('/users?order=desc&sort=name');
       },
    
      getUser(id){
          MyAPI.get('/users/'+id+'?order=desc&sort=name');
    
      }
    ....
     
    
    }
    

    在这个例子中 ?order=desc&sort=name 对于每个请求重复,如何将其添加到baseURL并使其动态化,如:

     baseURL: 'https://api.domaine.com/%s?order=desc&sort=name',
    

    哪里 %s 可以被替换为 '/users/'+id '/users/' ,有可能是这样的,或者有其他方法来解析URL使其动态化?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Georgy    5 年前

    您应该能够使用params字段,即:

    const myAPI = axios.create({
      baseURL: 'https://api.domaine.com/',
      withCredentials: false,
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json'
      },
      params: {
        order: 'desc',
        sort: 'name'
      }
    })
    

    小提琴: https://jsfiddle.net/kquvw0jy/