Axios的包装函数

时间:2019-03-04 08:11:12

标签: javascript reactjs axios

如何为axios创建包装器功能

我想从一个函数返回axios,以便如果我的项目切换到另一个获取api,就可以轻松完成

我正在做这样的事情

 import axios from 'axios'
export function apiCall(){
    axios.defaults.headers.common = {
    "X-Requested-With": "XMLHttpRequest",
    "X-CSRFToken": "example-of-custom-header"
    };
    return axios

 }

在所有操作中,我都在使用

import apiCall from './somepath

function fetchContent(){
  return apiCall.get('http://localhost:3003/')
}

但是我得到TypeError: _ApiCall__WEBPACK_IMPORTED_MODULE_3__.default.get is not a function

3 个答案:

答案 0 :(得分:1)

尝试return apiCall().get('...')-强调apiCall()之后的多余括号

答案 1 :(得分:1)

要使用已定义的axios包装器模块,您需要将apiCall作为如下函数调用:

import apiCall from './somepath

function fetchContent(){
  /* Add () after apiCall */
  return apiCall().get('http://localhost:3003/')
}

答案 2 :(得分:1)

此代码有2处错误。

  1. 由于apicCall().get是一个函数,因此应为apiCall
  2. 由于您使用的是非默认导出,因此应使用import {apiCall} from './somepath'

但是,我建议您这样做:

import axios from 'axios';

axios.defaults.headers.common = {
    "X-Requested-With": "XMLHttpRequest",
    "X-CSRFToken": "example-of-custom-header"
};
export default axios;

您可以这样做:

import axios from './somepath'

,然后像平常一样使用axios api,因为那将是同一对象。