Axios调用不适用于生产中的localhost

时间:2018-09-06 13:42:13

标签: node.js vue.js axios

我的标题说明了我的问题,但实际上我正在寻找最佳实践。对于我当前的项目,我正在使用vue.js应用程序调出我在同一盒子上运行的nodejs服务器。在开发中,我只是将http://localhost/api/etc ....硬编码到我的axios调用中,并弄清楚了由于我将两者都部署在生产环境中也可以放在同一个盒子中,所以很好,但是一旦我部署了,我就开始为它获取404 axios电话。我必须重构代码以使用服务器的实际dns名称。

因此,它现在可以工作,但是我感觉好像缺少了一些东西。我不确定这是节点(对于api服务器)还是apache(托管前端)问题。

处理网址的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

通常,人们创建一个模块,该模块导出带有baseUrl的自定义axios实例。我认为这是一个好习惯,因为您可以仅使用相对的url调用端点,并且也将api网址集中在一个位置,从而更容易在development和{{1 }}网址。

my-api-client.js

production

app.js

import axios from 'axios';

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

如果您的javascript版本不支持import { MyApiClient } from './my-api.js'; MyApiClient.get('my-collection').then(... import语句,则可以分别使用exportrequire