axios 判断不同环境来使用不同的适配器

266 阅读1分钟
import { AxiosAdapter, AxiosResponse } from 'axios';
import { is, Platforms } from '@providers/platform';
import bridgeAdapter from './adapters/bytedance.adapter';
import get from 'lodash/get';

export function getDefaultAdapter(): AxiosAdapter {
  if ([Platforms.liveStream, Platforms.aweme, Platforms.newsArticle, Platforms.newsArticleLite].some(is)) {
    return bridgeAdapter;
  }

  if (typeof XMLHttpRequest !== 'undefined') {
    return require('axios/lib/adapters/xhr');
  }

  return require('axios/lib/adapters/http');
}

export function checkResponse<T>(response: AxiosResponse<T>) {
  if (get(response, 'data.st')) {
    throw response;
  }
  return response;
}