与 axios 的 Http
配置
对于 Web 请求,你还可以使用库 axios 。
它很容易配置。为此,你可以创建文件 axios.js,例如:
import * as axios from 'axios';
var instance = axios.create();
instance.defaults.baseURL = serverURL;
instance.defaults.timeout = 20000;]
//...
//and other options
export { instance as default };
然后在任何你想要的文件中使用它。
要求
为了避免对后端的每个服务使用模式 Swiss knife
,你可以在文件夹中为集成功能创建单独的文件及其方法:
import axios from '../axios';
import {
errorHandling
} from '../common';
const UserService = {
getCallToAction() {
return axios.get('api/user/dosomething').then(response => response.data)
.catch(errorHandling);
},
}
export default UserService;
测试
有一个特殊的 lib 来测试 axios: axios-mock-adapter 。
使用此 lib,你可以设置 axios 任何你想要测试它的响应。你还可以为 axois’es 方法配置一些特殊错误。你可以将它添加到在 prevous 步骤中创建的 axios.js 文件中:
import MockAdapter from 'axios-mock-adapter';
var mock = new MockAdapter(instance);
mock.onAny().reply(500);
例如。
Redux 商店
有时你需要添加头文件授权令牌,你可能存储在 redux 商店中。
在这种情况下,你将需要另一个具有此功能的文件 interceptors.js:
export function getAuthToken(storeContainer) {
return config => {
let store = storeContainer.getState();
config.headers['Authorization'] = store.user.accessToken;
return config;
};
}
接下来在根组件的构造函数中,你可以添加以下内容:
axios.interceptors.request.use(getAuthToken(this.state.store));
然后你的所有请求都将跟随你的授权令牌。
正如你所看到的,axios 是一个非常简单,可配置且有用的库,适用于基于 react-native 的应用程序。