Javascript API客户端与Axios客户端

时间:2020-10-01 14:30:33

标签: javascript reactjs react-native redux axios

我正在使用redux-axios-middleware开发React Native应用程序。我一直在使用axios客户端访问API,如下所示:

const clients = {
  default: {
    client: axios.create({
      baseURL: "https://sandbox.iexapis.com",
      responseType: "json",
      params: {
        token: "",
      },
    }),
  },
  newsClient: {
    client: axios.create({
      baseURL: "https://newsapi.org/v2",
      responseType: "json",
      params: {
        apiKey: "",
      },
    }),
  },
  finnhub: {
    client: axios.create({
      baseURL: "https://finnhub.io/api/v1",
      responseType: "json",
      params: {
        token: "",
      },
    }),
  },
};
const persistedReducer = persistReducer(persistConfig, reducers);

const store = createStore(
  persistedReducer,
  applyMiddleware(multiClientMiddleware(clients))
);
const persistor = persistStore(store);

export default { store, persistor };

但是,Finnhub api提供了自己的客户端,建议的用法如下:(来自文档)

const finnhub = require('finnhub');
 
const api_key = finnhub.ApiClient.instance.authentications['api_key'];
api_key.apiKey = "<API_KEY>" // Replace this
const finnhubClient = new finnhub.DefaultApi()
 
// Stock candles
finnhubClient.stockCandles("AAPL", "D", 1590988249, 1591852249, {}, (error, data, response) => {
    console.log(data)
}); 

那么,问题是我该如何使用带有redux-axios-middleware的客户端?如果我能够做到这一点,那么使用API​​的客户端和我的操作方式(在axios客户端内部)有什么区别

1 个答案:

答案 0 :(得分:1)

提供的软件包通常可以帮助用户开始使用API​​。如果API的身份验证令牌需要刷新,这特别有用。如果您可以阅读文档并制定所需的API调用,则可以继续使用Axios实例,而不使用提供的包。该软件包只是增加了一些其他抽象,但是如果您查看源代码,它将最终进行与您可能直接进行的相同的api调用。