request,js

request,js

javascript 复制代码
// import { MessageBox, Message } from 'element-ui'
import axios from 'axios'
import store from '@/store'
import { getToken } from '@/utils/auth'
import { doEncrypt, doDecryptStr } from '@/utils/smUtil' // get token from cookie
import { encryptDes, decryptDes, encryptAes, decryptAes } from '@/utils/cryptoUtil' // get token from cookie

const needEncrypt = false // 是否需要加密
// const needEncryptDes = false // 是否需要des加密
const needEncryptAes_S = false // 是否需要des加密
const needEncryptAes_R = false // 是否需要des解密

const iv = '553456qwdscfrtgb'
const aesKey = 'efsdfe124587jshqcgszmghstcw54735'
const urls = ['/efUser/login', 'efapi/uavsystem/efUser/login']
// create an axios instance
const service = axios.create({
    // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
    baseURL: 'efapi/pointcloud', // url = base url + request url

    timeout: 45000 // request timeout
})
// request interceptor
service.interceptors.request.use(
    config => {
        if (config.data && config.data.timeout) {
            config.timeout = config.data.timeout * 1000 + 1000
        }
        if (store.getters.token) {
            config.headers['token'] = store.getters.token
        } else if (getToken()) {
            // 刷新页面时,store.getters.token 没值,从cookie获取
            config.headers['token'] = getToken()
        }
        if (needEncrypt) {
            const encrypt = urls.findIndex(item => (item = config.url))
            if (encrypt < 0) {
                config.data = doEncrypt(config.data, store.getters.sm2publicKey)
                // console.log('请求[加密]:' + config.url)
            } else {
                // console.log('请求[不加密]:' + config.url)
            }
        }
        if (needEncryptAes_S) {
            config.data = { 'data': encryptAes(config.data, aesKey, iv) };
        }
        config.cancelToken = new axios.CancelToken(cancel => {
            window._axiosPromiseArr.push({ cancel });
        });
        console.log('window._axiosPromiseArr', window._axiosPromiseArr);

        return config
    },
    error => {
        // do something with request error
        console.log('拦截器error', error) // for debug
        return Promise.reject(error)
    }
)

// response interceptor
service.interceptors.response.use(
    /**
     * 对Http请求返回数据进行处理
     * Determine the request status by custom code
     * Here is just an example
     * You can also judge the status by HTTP Status Code
     */
    response => {
        let datas = response.data
        const httpStatus = response.status
        if (httpStatus === 200) {
            if (needEncrypt) {
                datas = doDecryptStr(datas, store.getters.sm2privateKey)
            }
            if (needEncryptAes_R) {
                const dataContent = datas.data
                datas = decryptAes(dataContent, aesKey, iv)
            }
        }
        return datas
    },
    error => {
        console.log('request error:' + error) // errError: timeout of 10000ms exceeded
        if (axios.isCancel(error)) {
            console.log('取消请求');
            return Promise.reject('取消请求');
        }
        let message = error.message // timeout of 10000ms exceeded
        if (message.indexOf('timeout of') >= 0 && message.indexOf('exceeded') >= 0) {
            message = message.replace('timeout of', '执行超时 ')
            message = message.replace('exceeded', '')
            error.message = message
        }
        return Promise.reject(error)
    }
)

export default service

store -business.js

javascript 复制代码
import * as businessApi from '@/api/business';
const getDefaultState = () => {
    return {
        name: 'point'
    }
}
const state = getDefaultState()

const mutations = {}

const actions = {
    getDangerPointList({ commit, state }, data) {
        return new Promise((resolve, reject) => {
            businessApi.getDangerPointList(data).then(response => {
                resolve(response)
            }).catch(error => {
                reject(error)
            })
        })
    },
}
export default {
    namespaced: true,
    state,
    mutations,
    actions
}
javascript 复制代码
import request from '@/utils/request'
// import axios from 'axios'
// const { CancelToken } = axios
// let cancel = ''
export function getDangerPointList(formdata) {
    return request({
        url: '/business/dangerPoint/querylist',
        method: 'post',
        data: formdata,
        timeout: 45000 // 设置超时时间为30秒
    })
}

页面请求

javascript 复制代码
        async queryDangerPointList(showMsg) {
            try {
                const formData = new FormData();
                formData.append('startTime', this.formInline.startTime.getTime());
                formData.append('endTime', this.formInline.endTime.getTime()); //
                formData.append('mark', this.formInline.name)
                const res = await this.$store.dispatch('business/getDangerPointList', formData)
                const { code, message, data } = res;
                if (code === 1) {
                    this.formatTowerData(data)
                    if (showMsg) {
                        this.$message.success('查询成功');
                    }
                } else {
                    this.showToast(message, 'error');
                }
            } catch (err) {
                this.showToast(err, 'error');
            }
        },
相关推荐
不吃土豆的马铃薯5 分钟前
C++ 高性能网络缓冲区 Buffer 源码解析
linux·服务器·开发语言·网络·c++
数据法师20 分钟前
QuickSay :基于 Qt 的轻量级快捷短语管理工具
开发语言·qt
caimouse34 分钟前
Reactos 第1章 概述
c语言·开发语言·架构
.千余43 分钟前
【C++】C++继承入门(下):友元、静态成员与菱形继承的底层逻辑
开发语言·c++·笔记·学习·其他
小短腿的代码世界1 小时前
行情快照与增量更新引擎:Qt在高频交易数据分发中的核心架构——你的行情推送为什么延迟了500ms?
开发语言·qt·架构
初中就开始混世的大魔王1 小时前
6 Fast DDS-传输层
开发语言·c++·中间件·信息与通信
xiaofeichaichai1 小时前
ES 新特性九年速览:从 ES2016 到 ES2024
前端·javascript·es6
啊森要自信1 小时前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython
花北城1 小时前
【C#】ABP框架服务端开发
开发语言·c#·abp
电商API_180079052471 小时前
Python 实现闲鱼商品列表批量采集,接口异常重试机制搭建
大数据·开发语言·数据库·爬虫·python