與 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 的應用程式。