@iel/axios-ext-response-wrap
Version: 
Axios response result wrapper.
39 lines (38 loc) • 992 B
JavaScript
import { isPlainObject } from '@iel/axios-ext-utils';
/**
 * `success` 格式适配器
 *
 * @example
 * ```js
 * // 需要后端返回的数据格式
 * const responseData = {
 *    success: true,
 *    data: null,
 *    message: ''
 * }
 * ```
 */
const adaptor = function (responseData) {
    var _a, _b;
    let isAdaption = false;
    const result = {
        error: false,
        data: null,
        message: ''
    };
    const shouldHaveKeys = ['success', 'data', 'message'];
    if (isPlainObject(responseData) && shouldHaveKeys.every((key) => key in responseData)) {
        isAdaption = true;
        result.error = !((_a = responseData.success) !== null && _a !== void 0 ? _a : true);
        result.data = (_b = responseData.data) !== null && _b !== void 0 ? _b : null;
        result.message = result.error ? responseData.message : '';
    }
    else {
        result.data = responseData;
    }
    return {
        isAdaption,
        result
    };
};
export default adaptor;