我正在努力学习vue.所以我制作了一个小应用程序,可以显示来自API的新闻文章,在另一个视图中,允许用户登录到另一台服务器.

为此,我使用Axios.我知道我在某个时候让它工作得很好,但今天当我开始我的项目时,让两个API同时工作是不可能的.

这是我的登录服务:

import axiosTrainingAPI from 'axios'

axiosTrainingAPI.defaults.baseURL = 'https://api.**********.com'

const trainingAPI = {
  login (credentials) {
    return new Promise((resolve, reject) => {
      axiosTrainingAPI.post('/services/auth.php', credentials)
        .then(response => {
          resolve(response.data)
        }).catch(response => {
          reject(response.status)
        })
    })
  }
}

export default trainingAPI

以下是我的新闻服务:

import axiosGoogleNewsAPI from 'axios'

axiosGoogleNewsAPI.defaults.baseURL = 'https://newsapi.org'

const googleNewsAPI = {
  getPosts (newsId) {
    return new Promise((resolve, reject) => {
      axiosGoogleNewsAPI.get(`/v2/everything?q=${newsId}&sortBy=publishedAt&apiKey=***********`)
        .then(response => {
          resolve(response.data)
        }).catch(response => {
          reject(response.status)
        })
    })
  }
}

export default googleNewsAPI

这两个服务都位于不同的JS文件中,并在不同的vue文件中导入,但现在它们似乎无法共存,而且总是有一个服务覆盖另一个服务的baseURL(不总是相同的),就像Axios实例在这两种情况下都是相同的一样.因此,有时第一个服务使用第二个服务的baseURL,有时第二个服务使用第一个服务的baseURL...

我不知道"import"的确切范围,因为它对我来说很新,但这两个实例都在不同的文件中,有不同的名称,所以我真的不明白它们是如何混淆的.除非"导入"总是调用模块的同一个实例,但我如何使用2个API?为什么它昨天起作用了...我很困惑.

推荐答案

您需要 for each API创建一个自定义配置,每个API都有一个不同的baseURL.

var instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

Vue.js相关问答推荐

Vue CDN的html工作,但v—如果不工作

Visual Studio代码中的VUE/VLAR扩展不断崩溃:JS/TS语言服务立即崩溃5次…

我可以将Created()中内置的内容传递给Provide属性吗?

Vuetify 3 改变 Select 的 colored颜色

点击屏幕的任何位置都会禁用v-overlay

Vuetify 复选框:如何停止点击事件?

如何在 vuejs 自定义指令中传递动态参数

使用 vee-validate 在 vue js 中进行验证有错误

apache上的Vue-router,子目录下的SPA,只能通过重定向访问页面

如何像 React 中的 {...props} 一样在 Vue 中解构 props?

Vue 和 TypeScript 所需的props

在 Vue.js 中,为什么我们必须在导入组件后导出它们?

Vue更改宽度和内容

使用 vue-router 的默认子路由

Nuxt.js - API 调用的最佳场所

中文而不是英文的Element UI分页

了解 Nuxt.js 中的State状态和Getters:Getters不起作用

如何让 Vue 在 shadow dom 中工作

如何在 Vue.js 中延迟 @keyup 处理程序

vue 未在实例上定义,但在渲染期间引用