【问题标题】:How to make a dynamic baseURL in axios如何在axios中制作动态baseURL
【发布时间】:2020-10-18 04:33:39
【问题描述】:

假设我在给定服务中定义了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 以使其动态化?

【问题讨论】:

    标签: javascript vue.js axios nuxtjs


    【解决方案1】:

    您应该能够使用 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/(检查控制台网络选项卡以查看请求)

    【讨论】:

    • 谢谢,我试过了,但参数没有附加到 URL
    • 某些版本的 Axios 存在未解决的问题。尝试使用 v0.18.1 或等待 v0.20.0 可以在这里查看:github.com/axios/axios/issues/2190
    • @KarinC 我认为我应该将 axios 版本降级到 v0.18.1
    • 您好 BoussadjraBrahim,对此感到抱歉。我使用了预先存在的小提琴和添加的 axios,并在那里复制了你的 sn-p。小提琴中 axios 的版本是 (0.16.2) unpkg.com/axios@0.16.2/dist/axios.js 。我不知道上面提到的问题。 @KarinC 感谢您的帮助,谢谢!
    猜你喜欢
    • 2020-08-17
    • 1970-01-01
    • 2019-10-22
    • 2019-01-24
    • 2020-01-21
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多