@iel/axios-ext-response-wrap
Version: 
Axios response result wrapper.
22 lines (21 loc) • 870 B
JavaScript
import { isArray } from '@iel/axios-ext-utils';
import { getResponseDataByAdaptors, getResponseErrorMsg } from './utils';
/**
 * 元祖响应包装器
 * 使用后将响应数据或错误信息以元祖形式返回。
 */
export default function wrapper(adaptors) {
    const _adaptors = isArray(adaptors) ? adaptors : [adaptors];
    const wrapper = {
        transformResponseData: (response) => {
            const responseData = getResponseDataByAdaptors(response.data, _adaptors);
            if (response.status !== 200)
                return [true, getResponseErrorMsg(response), response];
            return [responseData.error, responseData.error ? responseData.message : responseData.data, response];
        },
        transformResponseError: (error) => {
            return [true, getResponseErrorMsg(error), error];
        }
    };
    return wrapper;
}