UNPKG

whalecloud-dxp-api-react-native

Version:

This section explains how to use the SDK and illustrates it with an example: - This chapter is essential to learn - For specific business development, see [Bussiness Scenario](https://www.digchan.info/en-US/dxp/user-sso/sign-up) - The Business Scenario pr

100 lines (92 loc) 3.38 kB
import 'react-native-url-polyfill/auto'; import axios, { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios'; import { Configuration } from './src/index'; import * as dxp from './src/api'; // 创建 Axios 实例 const axiosInstance: AxiosInstance = axios.create(); // 动态 headers 的存储 let dynamicHeaders: Record<string, string> = {}; // 动态打开log 输出 let openConfigLog: boolean = false; // 动态打开log 输出 let accessToken: string = ''; export const setDXPRequestHeaders = (headers: Record<string, string>): void => { dynamicHeaders = headers; }; export const setDXPConfigLog = (configLog: boolean): void => { openConfigLog = configLog; }; const getDXPAccessToken = () => { return accessToken }; // 添加请求拦截器 axiosInstance.interceptors.request.use( (config: InternalAxiosRequestConfig): InternalAxiosRequestConfig => { // 在发送请求之前将动态属性添加到请求头 config.headers = { ...config.headers, ...dynamicHeaders, } as any; if (openConfigLog) { console.log('===================================='); console.log('config info', config); console.log('===================================='); } return config; }, (error: any): Promise<any> => { return Promise.reject(error); } ); // 添加响应拦截器 axiosInstance.interceptors.response.use( (response: AxiosResponse): AxiosResponse => { if(response.data.token){ accessToken = response.data.token } return response; }, (error: any): any => { return { code: error?.code || '', message: error?.message || '', data: error?.response?.data || '', status: error?.response?.status || 404, responseURL: error?.response?.request?.responseURL || '', }; } ); // 创建配置对象 export const configuration = new Configuration({ basePath: '', // 替换为您的 API 基础 URL baseOptions: { axiosInstance, }, }); // 使用泛型来定义 createApiInstance 的返回类型 const createApiInstance = <T>(ApiClass: new (config: Configuration) => T): T => { const apiInstance = new ApiClass(configuration); (apiInstance as any).axios = axiosInstance; // 将 axiosInstance 直接赋值给 API 实例 return apiInstance; }; // 创建 API 实例对象 export const DXPApi = { AgreementManagementApi: createApiInstance(dxp.AgreementManagementApi), CommonManagementApi: createApiInstance(dxp.CommonManagementApi), ContentManagementApi: createApiInstance(dxp.ContentManagementApi), CustomerBalanceManagementApi: createApiInstance(dxp.CustomerBalanceManagementApi), CustomerBillManagementApi: createApiInstance(dxp.CustomerBillManagementApi), CustomerManagementApi: createApiInstance(dxp.CustomerManagementApi), PackageAdvantageApi: createApiInstance(dxp.PackageAdvantageApi), ProductCatalogManagementApi: createApiInstance(dxp.ProductCatalogManagementApi), ProductOrderingApi: createApiInstance(dxp.ProductOrderingApi), PromotionManagementApi: createApiInstance(dxp.PromotionManagementApi), SubscriberManagementApi: createApiInstance(dxp.SubscriberManagementApi), UserManagementApi: createApiInstance(dxp.UserManagementApi), UserManagementLinkApi: createApiInstance(dxp.UserManagementLinkApi), axiosInstance, setDXPRequestHeaders, setDXPConfigLog, configuration, getDXPAccessToken };