Как использовать несколько базовых топоров ios в ReactJS? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть файл конфигурации. где я устанавливаю 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;

ФАЙЛ ДЕЙСТВИЯ 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,
    });

  }
};

Мне нужно добавить еще один URL-адрес, как это в BASE URL FILE

axios.defaults.baseURL = http://localhost:6000/profile

как добавить этот и использовать это в файле действий API.

Пожалуйста, помогите мне с этим.

Заранее спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Как уже говорилось, вы можете создать два экземпляра топора ios и использовать их по мере необходимости:

В вас 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 };

Тогда в вашем 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,
    });

  }
};
...