如何将axios创建为javascript类服务以处理多个基本url

时间:2018-08-22 15:47:58

标签: javascript react-native axios

我正在创建一个应用程序,其中有10个商人,每个商人都有自己的api网址,例如:-

http://example1.example.com:8080/api/v1/
http://example2.example.com:8080/api/v1/
http://example3.example.com:8080/api/v1/
...
http://example4.example.com:8080/api/v1/

在应用程序的登录屏幕之前,有一个屏幕,用户需要先选择一个商人,然后将使用所选商人调用登录api。登录用户后,有一个选项可以在用户单击时切换商户,然后执行相同的过程。怎么做?我只尝试了一位商人。 我也遵循了https://codeburst.io/how-to-call-api-in-a-smart-way-2ca572c6fe86,但没有得到任何解决方案。 这是我的代码:-

import axios from 'axios';
import { AsyncStorage } from "react-native";
import { store } from '../app';

const getSessionToken = async () => {
   let user = ''
   try {
      user = await AsyncStorage.getItem('currentUser');
   } catch (error) {
      // Error retrieving data
      console.log(error.message);
   }
   return user;
}

// Set config defaults when creating the instance
const instance = axios.create({
   baseURL: 'https://example1.example.com:8080/api/v1/'
});

// function to set the header
export function setAxiosHeaders() {
   // jwt interceptors
   let token = null;
   getSessionToken().then(user => {
      if (user) {
         let ip = store.getState().appInitializer.ip;
         token = JSON.parse(user).session_token;
         instance.defaults.headers.common['Ip'] = ip
         instance.defaults.headers.common['Authorization'] = `Bearer ${token}`;
      }
   })

}

export default instance;

0 个答案:

没有答案