Обработка ошибок экземпляра Http с помощью класса ES6 - PullRequest
0 голосов
/ 23 октября 2019

Я реорганизовал http-экземпляр с axios и добавил обработку ошибок, например 403 error. Этот код использует конфигурацию axios и Interceptors. Мне нужно добавить обработку ошибок в этот класс.

import axios from 'axios';
import { constantCase } from 'change-case';

const _enable_logger = Symbol('_enable_logger');
const _instance = Symbol('_instance');
const _middleware = Symbol('_middleware');

class HttpInstance {
    static [_enable_logger] = false;

    static [_instance] = null;

    static [_middleware](state, status, data, callback) {
        if (HttpInstance[_enable_logger]) {
            const log_state = constantCase(state).padEnd(8, ' ');
            const log_status = constantCase(status).padEnd(8, ' ');
        }
        return callback(data);
    }

    static getInstance() {
        return this[_instance];
    }

    static configure({ enable_logger, ...config }) {
        HttpInstance[_enable_logger] = enable_logger;
        HttpInstance[_instance] = axios.create(config);
    }

    static setRequestInterceptors(success = Promise.resolve, failure = Promise.reject) {
        HttpInstance[_instance].interceptors.request.use(
            request => HttpInstance[_middleware]('request', 'success', request, success),
            request => HttpInstance[_middleware]('request', 'failure', request, failure),
        );
    }

    static setResponseInterceptors(success = Promise.resolve, failure = Promise.reject) {
        HttpInstance[_instance].interceptors.response.use(
            response => HttpInstance[_middleware]('response', 'success', response, success),
            response => HttpInstance[_middleware]('response', 'failure', response.response, failure),
        );
    }
}

export default HttpInstance;

Теперь мне нужно добавить обработку ошибок axios к перехватчикам.

...