使用 axios 和 nuxt 调用服务器和客户端 API 的不同 baseURL

Dav*_*evy 2 javascript vue.js axios nuxt.js

假设我正在开发一个具有多个微服务的平台,Nuxt 前端服务就是其中之一。我在 nuxt 中间件(同时在服务器和客户端运行)中使用 Axios。在 nuxt 服务内部,API baseURL 是本地机器的内部调用,但从客户端来看,baseURL 当然是公共应用程序域。

我可以使用服务器的请求对象,或者配置文件,或者区分运行环境来解决。我提到的每个选项都可以工作,但现在我正在寻找不同客户端与服务器环境变量的最佳实践。

中间件文件:

import axios from 'axios'

export default function ({ route }) {
  return axios.get('api/some-data');
}
Run Code Online (Sandbox Code Playgroud)

来自服务器的请求应该调用“ http://internal-service:SOME_PORT/api/some-data

来自客户端的请求应调用“ http://my-domain.com/api/some-data

Dav*_*evy 9

我在写问题时找到了答案..

nuxt.config.js文件中:

  axios: {
    baseURL: 'http://internal-service:5000',
    browserBaseURL: 'http://my-domain.com' //can use environment variables to fill both..
  },
Run Code Online (Sandbox Code Playgroud)

  • “技巧”是“baseURL”是默认值,这对我来说有点奇怪,因为我认为客户端 URL 应该是实际的默认值。 (2认同)