如何在ReactJS中使用多个baseURL axios?

Dha*_*r S 1 reactjs react-redux axios react-hooks

我有一个配置文件。我为整个应用程序设置 baseURL,并为整个 API 请求保存不记名令牌。在这里我需要添加另一个 api 。我不知道如何添加另一个 baseURL 并在我的 API 请求中使用它。在这里我分享我所做的代码。

基本 URL 文件:

import axios from 'axios';
axios.defaults.baseURL = http://localhost:3000/summary;

const setAuthToken = (token) => {
  if (token) {
    axios.defaults.headers.common.Authorization = `Bearer ${token}`;
  } else {
    delete axios.defaults.headers.common.Authorization;
  }
};

export default setAuthToken;
Run Code Online (Sandbox Code Playgroud)

API 操作文件:

export const login = ({ email, password }) => async (dispatch) => {

  const userData = {
    username: email,
    password,
  };

  try {
    const res = await axios.post('/license-api/auth/login', userData, config);
    dispatch({
      type: LOGIN_SUCCESS,
      payload: res.data.token,
    });
  } catch (error) {
    dispatch({
      type: LOGIN_FAIL,
    });

  }
};
Run Code Online (Sandbox Code Playgroud)

我需要在基本 URL 文件中添加另一个像这样的 url

axios.defaults.baseURL = http://localhost:6000/profile
Run Code Online (Sandbox Code Playgroud)

如何添加这个并在 API 操作文件中使用它。

请在这件事上给予我帮助。

提前致谢

Fra*_*ion 5

如前所述,您可以创建两个axios 实例并根据需要使用它们:

在您的BASE URL文件中:

import axios from 'axios';

const setAuthToken = (token) => {
  if (token) {
    axios.defaults.headers.common.Authorization = `Bearer ${token}`;
  } else {
    delete axios.defaults.headers.common.Authorization;
  }
};

const mainAxios = axios.create({
  baseURL: 'http://localhost:3000/summary'
});

const profileAxios = axios.create({
  baseURL: 'http://localhost:6000/profile'
});

export default setAuthToken;
export { mainAxios, profileAxios };
Run Code Online (Sandbox Code Playgroud)

然后在您的API ACTION文件中:

import { profileAxios } from 'path/to/baseurl';

export const login = ({ email, password }) => async (dispatch) => {

  const userData = {
    username: email,
    password,
  };

  try {
    const res = await profileAxios.post('/license-api/auth/login', userData, config);
    dispatch({
      type: LOGIN_SUCCESS,
      payload: res.data.token,
    });
  } catch (error) {
    dispatch({
      type: LOGIN_FAIL,
    });

  }
};
Run Code Online (Sandbox Code Playgroud)