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

封装Axios

1、安装axios插件

npm i axios

2、根据项目需求:比如一个项目使用多个后端服务 那么baseURL需要动态传入,或者不同的请求设置不同的请求头字段

src/utils/request.js

import axios from 'axios';

class Request {
  constructor(props) {
    this.init(props);
  }
  init(props) {
    let servicesParams = {
      baseURL:
        props && props.baseURL ? props.baseURL : process.env.VUE_APP_BASE_API,
      timeout: props && props.timeout ? props.timeout : 10000,
      // 跨域用   请求头带cookie
      withCredentials: props && props.withCredentials === false ? false : true,
      headers: {
        'Content-Type':
          props && props.ContentType
            ? props.ContentType
            : 'application/json;charset=utf-8',
        'uniplatform': props && props.uniplatform ? props.uniplatform : 'NBPT',
      },
    };
    // 创建axios实例
    const service = axios.create(servicesParams);
    service.interceptors.request.use(
      async function (request) {
        return request;
      },
      function (error) {
        return Promise.reject(error);
      }
    );
    service.interceptors.response.use(
      (response) => {
        if (response.status === 200) {
          return response.data;
        }
        Promise.reject();
      },
      (error) => {
        return Promise.reject(error);
      }
    );
    this.service = service;
  }
}
class RequestInit extends Request {
  init(props) {
    super.init(props);
    return this.service;
  }
}
const request = new Request().service;
const requestInit = new RequestInit();

export { request, requestInit };

3、使用举例

src/api/modules/detail.js

import { requestInit } from '@/utils/request.js';

let servicesRefParams = {
  baseURL: process.env.VUE_APP_BASE_NXGP_API,
  uniplatform: 'CREF',
};
let request1 = requestInit.init(servicesRefParams);

export function getRefReleased(val) {
  return request1({
    url: process.env.VUE_APP_VERSION + `/resources/released`,
    method: 'GET',
    headers: {
      version: val,
    },
  });
}

页面调用:

import { getRefReleased} from '@/api/modules/detail.js';

getRefReleased('xxx');


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

相关文章:

  • Linux内核中的InfiniBand核心驱动:verbs.c分析
  • 【C】本地变量与全局变量
  • 2024年博客之星主题创作|2024年度感想与新技术Redis学习
  • 快速学习GO语言总结
  • WPF2-在xaml为对象的属性赋值
  • 【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例
  • MySQL的启停登陆与退出
  • Ubuntu系统Psi4 使用conda安装及编译安装
  • 前端基础——HTML傻瓜式入门(2)
  • 使用verilog编写一个猜数游戏设计及其testbench
  • vue框架渲染原理
  • 软考78-上午题-【面向对象技术3-设计模式】-结构型设计模式01
  • 进程学习--02
  • Vue2前端权限控制实战
  • reverse_iterator实现
  • cesium.js加载模型后,重新设置旋转角度属性值
  • 管理类联考–复试–英文面试–问题--规划介绍原因做法
  • FFmpeg查看所有支持的编码/解码器/封装/解封装/媒体格式/滤镜
  • Wireshark抓包工具的使用
  • 【PyTorch】基础学习:一文详细介绍 torch.save() 的用法和应用
  • Dockerfile 语法详解
  • 免费开源软件:思通数科舆情系统应对社会热点事件
  • 设计模式 — — 单例模式
  • 【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】
  • 腾讯云2核2G免费服务器申请流程,2024免费服务器入口
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FormLink)