当前位置: 首页 > article >正文

vue2.0中axios请求配置

vue2.0中axios请求配置

  • 一、vue2.0项目中
    • 1.配置
    • 2.使用
  • 二、vue2.0+ts项目中如何配置
    • 1.配置
    • 2.使用

一、vue2.0项目中

1.配置

// axios.js
import axios from 'axios';
import { Message } from 'element-ui';
import router from '../../router/index.js';
//创建axios实例

const service = axios.create({
  timeout: 600000, // 请求超时时间
  withCredentials: false,
});
//请求拦截
service.interceptors.request.use(
  config => {
    config.headers['Content-Type'] = 'application/json';
    config.headers['aiToken'] = JSON.parse(localStorage.getItem('token'));
    config.url = process.env.VUE_APP_WEB_API + config.url;
    // get请求缓存处理
    if (config.params) {
      config.params.f_rnd = new Date().getTime();
    } else {
      config.params = {
        f_rnd: new Date().getTime(),
      };
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

//响应拦截器
service.interceptors.response.use(
  response => {
    let data = response.data;
    if (response.config.isExport) {
     //配置是为了下载返回二进制文档流时候
      return response;
    }
    if (data.code === 200) {
      return data;
    } else {
      if (data.code === 1015) {
        Message({
          type: 'error',
          offset: 12,
          message: '登录/授权已经过期,请重新登录',
          duration: 5000,
        });
        router.push({ path: '/login' });
        return;
      }
      Message({
        showClose: true,
        message: data.message || data.msg,
        duration: 2000,
        type: 'error',
      });
      return Promise.reject(data);
    }
    // return data;
  },
  error => {
    console.log('error:' + error); // 用于调试
    return Promise.reject(error);
  }
);

export default service;

2.使用

// api.js
import request from '@/assets/js/axios.js';


export function wordClould(params) {
  return request({
    url: `url`,
    method: 'get',
    params,
  });
}

export function adviserWordClould(data) {
  return request({
    url: 'url',
    method: 'post',
    data,
  });
}

二、vue2.0+ts项目中如何配置

1.配置

// axios.ts
import axios from 'axios';
import { AxiosResponse, InternalAxiosRequestConfig, AxiosError } from 'axios';
import { Message } from 'element-ui';

const request = axios.create({
  timeout: 50000,
  withCredentials: false,
});

/**
 **********************************请求拦截
 */
request.interceptors.request.use(
  //在函数中使用名为 config 的参数,并且该参数必须符合 InternalAxiosRequestConfig<any> 这个自定义类型的定义。
  function (config: InternalAxiosRequestConfig<any>) {
    // Do something before request is sent
    if (config.headers) {
      config.headers['Authorization'] = 'token';
    }
    config.url = process.env.VUE_APP_WEB_API + config.url;
    return config;
  },
  function (error: AxiosError) {
    // Do something with request error
    return Promise.reject(error);
  }
);

// 名为 status 的数值属性
interface responseConfig {
  // 响应结果包含status,0 是成功
  status: number;
}
/**
 ********************************** 响应拦截
 */
request.interceptors.response.use(
  function (response: AxiosResponse<responseConfig>) {
    if (response.data.status === 200) {
      return response;
    }

    Message.error('后台接口异常,请联系管理员');
    return Promise.reject(response);
  },
  function (error: AxiosError) {
    return Promise.reject(error);
  }
);

export default request;

2.使用

// types.ts

/**
 * 任意类型的参数
 */
export interface paramsType {
  [key: string]: any;
}

// api.ts
import request from '../utils/axios';
import { paramsType } from '../utils/types';

/**
 * 登录接口
 * @param userData
 * @returns
 */
export function ApiLogin(data: paramsType) {
  return request({
    method: 'POST',
    url: 'url',
    data,
  });
}

/**
 * 获取菜单
 * @param params
 * @returns
 */
export function APIGetMenu(params: paramsType) {
  return request({
    method: 'GET',
    url: 'url',
    params,
  });
}


http://www.kler.cn/a/288186.html

相关文章:

  • 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • 从0开始学习--Day26--聚类算法
  • JSON.stringify的应用说明
  • 聊天服务器(9)一对一聊天功能
  • Mysql篇-三大日志
  • 云运维基础
  • 结合Vue与Mybatis-plus优雅的设计分页展示
  • 详细解说一下Python中的递归和基例
  • IJCAI-信也科技杯全球AI大赛-华东师范大学亚军队伍分享
  • 以下是一些常见的浏览器倒计时测试方法:
  • 从误删到重生:2024年数据恢复软件市场新趋势与精选工具
  • VirtualBox 中 Ubuntu 系统在桥连模式下网络适配器启动过慢或连接失败
  • 如何本地搭建Whisper语音识别模型
  • MySQL5.6迁移到DM8
  • FastAPI 进阶:使用 Pydantic 验证器增强 Query 参数验证
  • 数据结构-二叉树的遍历和线索二叉树
  • 《C++打造高效网络爬虫:突破数据壁垒》
  • CentOS全面停服,国产化提速,央国企信创即时通讯/协同门户如何选型?
  • 技术指南:5分钟零成本实现本地AI知识库搭建
  • 论文笔记: Boosting Object Detection with Zero-Shot Day-Night Domain Adaptation
  • 力扣229题详解:求众数 II 的多种解法与模拟面试问答
  • ELK日志服务收集SpringBoot日志案例
  • 【每日刷题】Day106
  • CentOS 安装 NVIDIA 相关软件包时出现依赖问题
  • 四层神经网络,反向传播计算过程;四层神经网络中:y的函数公式是什么
  • MySQL的事务认识