File size: 854 Bytes
8086ffb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';

async function Request<T>(config: AxiosRequestConfig): Promise<T> {
  try {
    // Accessing token for subsequent requests
    const token = localStorage.getItem('userToken');
    if (token == null) {
      console.group('get token');
    } else {
      axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
    }
    const response: AxiosResponse<T> = await axios(config);
    return response.data;
  } catch (error) {
    if (axios.isAxiosError(error)) {
      console.error(
        `API call failed with status: ${error.response?.status}`,
        error.message
      );
      throw new Error(`API call failed: ${error.response?.status}`);
    } else {
      console.error('An unexpected error occurred', error);
      throw error;
    }
  }
}

export default Request;