Chapter 5: Instantiation and Global Configuration

Haiyue
3min

Chapter 5: Instantiation and Global Configuration

Learning Objectives

  1. Understand the concept of Axios instances
  2. Master creating and configuring Axios instances
  3. Learn to set global default configurations
  4. Understand configuration priority mechanisms
  5. Implement multi-environment configuration management

5.1 Axios Instantiation

Creating Instances

// Create axios instance
const apiClient = axios.create({
  baseURL: 'https://api.example.com/v1',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// Instances for different services
const userAPI = axios.create({
  baseURL: 'https://user-service.com/api'
});

const paymentAPI = axios.create({
  baseURL: 'https://payment-service.com/api',
  timeout: 30000
});

5.2 Global Configuration

Default Configuration

// Global default configuration
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 10000;
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.headers.post['Content-Type'] = 'application/json';

5.3 Configuration Priority

Configuration priority from high to low:

  1. Request configuration
  2. Instance configuration
  3. Global configuration
// Configuration priority demonstration
axios.defaults.timeout = 10000; // Global configuration

const instance = axios.create({
  timeout: 5000 // Instance configuration, overrides global
});

instance.get('/api/data', {
  timeout: 3000 // Request configuration, highest priority
});

5.4 Multi-Environment Configuration

// Environment configuration management
class EnvironmentConfig {
  constructor() {
    this.configs = {
      development: {
        baseURL: 'http://localhost:3000/api',
        timeout: 10000
      },
      testing: {
        baseURL: 'https://test-api.example.com',
        timeout: 15000
      },
      production: {
        baseURL: 'https://api.example.com',
        timeout: 5000
      }
    };
  }

  getConfig(env = 'development') {
    return this.configs[env] || this.configs.development;
  }

  createInstance(env) {
    const config = this.getConfig(env);
    return axios.create(config);
  }
}

const envConfig = new EnvironmentConfig();
const apiClient = envConfig.createInstance(process.env.NODE_ENV);

Chapter Summary

  • Instantiation provides isolation and reusability
  • Global configuration affects all requests
  • Configuration priority ensures flexibility
  • Multi-environment configuration supports different deployment environments

Key Points

  • Use different instances for different services
  • Set reasonable global defaults
  • Understand configuration priority to avoid conflicts
  • Environment configuration improves maintainability