美文网首页
axios封装

axios封装

作者: 用技术改变世界 | 来源:发表于2021-04-23 14:47 被阅读0次

    import axios from 'axios';

    import { ContextService } from '@wit-vue/common';

    import { IObjectConfig } from '../../model/interface/axios.interface';

    import { StorageService } from '@wit-vue/storage';

    import InterceptorService from './interceptor';

    /* 创建实例 */

    const instance = axios.create({

        baseURL: ContextService.getContext().config.get('GRACE_SERVICE_URL') + '/service/v1',

        headers: {

            'Content-Type': 'application/json',

            'Cache-Control': 'no-cache'

        },

        responseType: 'json',

        validateStatus: status => {

            return status >= 200 && status < 500;

        }

    });

    instance.interceptors.request.use(

        async config => {

            await StorageService.getSessionStorageByKey('token').then(assertion => {

                let assertionValue = assertion ? assertion : sessionStorage.getItem('token');

                const token = assertionValue;

                if (token) {

                    config.headers['Access-Token'] = token;

                }

            });

            return config;

        },

        (error: any) => {

            return Promise.reject(error);

        }

    );

    instance.interceptors.response.use(

        response => {

            // 处理json问题

            if (response.config.url.endsWith('.json')) {

                return response.data;

            }

            if (response.data.code === '1') {

                if (response.data.data || response.data.data === null) {

                    return response.data.data;

                } else {

                    return response.data;

                }

            } else {

                let url = response.config.baseURL + response.config.url;

                InterceptorService.getHintMessage(response.data, url);

                return response.data;

            }

        },

        error => {

            return Promise.reject(error);

        }

    );

    /* 输出实例 */

    export const RestfulClientService = {

        get(obj: IObjectConfig) {

            return Promise.resolve(

                instance.get(obj.url, {

                    params: obj.data ? obj.data : {}

                })

            );

        },

        post(obj: IObjectConfig) {

            return Promise.resolve(instance.post(obj.url, obj.data ? obj.data : {}));

        },

        delete(obj: IObjectConfig) {

            return Promise.resolve(

                instance.delete(obj.url, {

                    data: obj.data ? obj.data : {}

                })

            );

        },

        put(obj: IObjectConfig) {

            return Promise.resolve(instance.put(obj.url, obj.data ? obj.data : {}));

        },

        patch(obj: IObjectConfig) {

            return Promise.resolve(

                instance.patch(obj.url, {

                    data: obj.data ? obj.data : {}

                })

            );

        }

    };

    相关文章

      网友评论

          本文标题:axios封装

          本文链接:https://www.haomeiwen.com/subject/ouvcrltx.html