vue 项目 基于axios 对常用5种(POST、GET、PUT、DELETE、PATCH)请求进行封装

2023-11-04

一、 安装axios

使用 npm: npm install axios --save
使用 cnpm: cnpm install axios --save
使用 yarn: yarn add axios --save
建议使用cnpm !!!

二、src目录下新建lib文件夹lib文件夹下新建request.js

在这里插入图片描述

三、配置axios 进行封装

import axios from 'axios'
import store from '@/store'

// 环境判断设置baseURL
let baseURL = process.env.NODE_ENV === 'development' ? 'dev.com' : process.env.NODE_ENV === 'production' ? 'pro.com' : 'test.com'

// 定义请求头 使用JSON格式

axios.defaults.baseURL = baseURL // Default base path

axios.defaults.headers.post['Content-Type'] = 'application/json;charSet=UTF-8'

axios.defaults.headers.get['Content-Type'] = 'application/json;charSet=UTF-8'

axios.defaults.headers.put['Content-Type'] = 'application/json;charSet=UTF-8'

axios.defaults.headers.delete['Content-Type'] = 'application/json;charSet=UTF-8'

axios.defaults.headers.patch['Content-Type'] = 'application/json;charSet=UTF-8'

// 添加请求拦截器
axios.interceptors.request.use((config) => {
  // 携带token 身份验证
  let Token = store.getters['token']
  if (Token) {
    config.headers.Authorization = `Bearer ${Token}`
  }
  return config
}, (error) => {
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use((response) => {
  if (response.status !== 200) {
    console.log('请求信息', response)
    return Promise.reject(new Error('Error'))
  } else {
    return response
  }
}, (error) => {
  console.log(`err${error}`)
  return Promise.reject(error)
}
)

导出post、get、delete、put、patch方法

export default {
  /**

  * get 方法封装

  * @param url

  * @param params

  * @returns {Promise}

  */

  get (url, params = {}) {
    return new Promise((resolve, reject) => {
      // 若使用this.$http.get('qyolg5_1GB3ak1aU2jmKq1nWpMs.js', {bu: 'DiUrXmptcGdhZJ8BogErlAEr'}) 方式传参 必须使用 {params:params}
      // 若使用this.$http.get('qyolg5_1GB3ak1aU2jmKq1nWpMs.js?bu=DiUrXmptcGdhZJ8BogErlAEr') 方式传参 必须使用 params
      axios.get(url, {params: params}).then(res => {
        resolve(res.data)
      }).catch(err => {
        reject(err)
      })
    })
  },

  /**

  * post

  * @param url

  * @param params

  * @returns {Promise}

  */

  post (url, params = {}) {
    return new Promise((resolve, reject) => {
      axios.post(url, params)
        .then(res => {
          resolve(res.data)
        }, err => {
          reject(err)
        })
    })
  },

  /**

  * delete 方法封装

  * @param url

  * @param params

  * @returns {Promise}

  */

  delete (url, params = {}) {
    return new Promise((resolve, reject) => {
      axios.delete(url, params).then(res => {
        resolve(res.data)
      }).catch(err => {
        reject(err)
      })
    })
  },

  /**

  * put 方法封装

  * @param url

  * @param params

  * @returns {Promise}

  */

  put (url, params = {}) {
    return new Promise((resolve, reject) => {
      axios.put(url, params).then(res => {
        resolve(res.data)
      }).catch(err => {
        reject(err)
      })
    })
  },

  /**

  * patch 方法封装

  * @param url

  * @param params

  * @returns {Promise}

  */

  patch (url, params = {}) {
    return new Promise((resolve, reject) => {
      axios.patch(url, params).then(res => {
        resolve(res.data)
      }).catch(err => {
        reject(err)
      })
    })
  }
}

四、main.js 引入使用

import request from './lib/request' // 全局请求
// 全局请求
Vue.prototype.$http = request

五、页面中使用

this.$http.post('path', {params})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 项目 基于axios 对常用5种(POST、GET、PUT、DELETE、PATCH)请求进行封装 的相关文章

随机推荐

  • 三极管驱动继电器详解

    http www 21ic com jichuzhishi analog basic 2015 08 24 638790 html
  • 基于STM32的多功能心电信号监测系统设计

    1 系统总体方案设计 系统由STM32F103微处理器模块 ADS1292R心电采集模块 LMT70体表温度传感器模块 ESP8266无线WiFi模块 MMA955L加速度计模块 系统电源 PC服务端等组成 STM32F103作为主控制器实
  • 2.4 Verilog HDL语句

    语句 1 赋值语句 结构说明语句 阻塞与非阻塞 1 1 赋值语句 1 1 1 连续赋值语句assign 1 1 2 过程赋值语局 和 lt 1 2 结构说明语句 1 2 1 结构说明语句always 1 2 2 结构说明语句initial
  • 【机器学习】噪声数据的理解

    文章目录 一 噪声数据 1 1 分箱 1 2 回归 1 3 聚类 1 4 其他 二 数据清理作为一个过程 2 1 偏差检测 2 1 1 使用 元数据 关于数据的数据 2 1 2 编码格式 存在使用不一致 数据表示不一致 2 1 3 字段过载
  • C语言编程中的8位、16位、32位整数的分解与合并

    在单片机的编程中对于8位 16位 32位整数的分解与合并用的比较多 今天做了简要学习 后面还需要加以总结 练习在VC 6 0编程环境中进行 源程序 include
  • pikachu靶场--SQL inject--数字型(post)/字符型(get)/搜索型/xx型注入【4.1】~【4.4】

    目录 一 概述 二 数字型注入 post 三 字符型注入 get 四 搜索型注入 以搜索k为例 五 xx型注入 一 概述 在owasp发布的top10排行榜里 注入漏洞一直是危害排名第一的漏洞 其中注入漏洞里面首当其冲的就是数据库注入漏洞
  • python 变量赋值 修改之后 原值改变

    python 是一种动态语言 因此变量的类型和值 在运行时均可改变 当我们将一个变量赋值给另一个变量时 实际上是将变量的引用地址传递给新的变量 这意 味着新旧变量将指向同一个位置 因此 在更改其中一个变量的值时 另一个变量的值也会被更改 i
  • pig对应sql的基本命令

    1 从文件导入数据 1 Mysql Mysql需要先创建表 CREATE TABLE TMP TABLE USER VARCHAR 32 AGEINT IS MALE BOOLEAN CREATE TABLE TMP TABLE 2 AGE
  • 【Java】final关键字的细节注意(八)

    这节内容较简单 而且内容较少 课程源自韩顺平老师的Java课程 final关键字的使用 final的需要注意的细节
  • Android UI 基础-坐标系、角度(弧度)、颜色

    目录 1 坐标系 1 1 屏幕坐标系和数学坐标系的区别 1 2 View的坐标系 1 3 MotionEvent中 get 和 getRaw 的区别 1 4 核心要点 2 角度与弧度 2 1 角度与弧度的定义 2 2 角度和弧度的换算关系
  • linux 进入目录命令

    直接进入计算机目录下 常用指令 cd home 进入 home 目录 cd 返回上一级目录 cd 返回上两级目录 cd 进入个人的主目录 cd user1 进入个人的主目录 cd 返回上次所在的目录 ls 显示文件或目录 l 列出文件详细信
  • 移动端常见meta设置

    1 设置viewport 这句话设置viewport的宽为设备的宽 禁止用户进行缩放 此外 常见参数设置 a width 宽度 数值 device width 默认为980 b height 高度 数值 device height c in
  • 手写一个根据目录自动生成的路由

    文章目录 一 起因 二 思索 三 测试效果 四 项目代码 一 起因 最近研究了一下阿里dva的quickstart 其中路由配置是手动添加 如下 先将要显示的页面导入router js 然后配置 其中path products 是配置的路由
  • 在pycharm中配置变量

    实验目的 python run classifier py task name MRPC do train true do eval true data dir GLUE DIR MRPC vocab file BERT BASE DIR
  • es 索引类型与分词器调整与迁移

    索引最好起别名 方便索引调整 1 创建新索引 PUT index v2 settings number of shards 5 number of replicas 1 mappings doc dynamic strict propert
  • Python爬虫中文乱码问题

    我们在爬虫输出内容时 常常会遇到中文乱码情况 以如下网址为例 https chengdu chashebao com yanglao 19077 html 在输出内容时 出现如下图的情况 解决爬虫中文乱码的步骤 网址编码为gbk 查看网页源
  • shell与shell脚本(一)基本概念与常用的shell命令

    前言 像linux windows等的操作系统 都很大程度上地便利了我们操作计算机的能力 计算机之所以能高效处理用户指令 是因为CPU 更细致地讲 是因为CPU中的内核 也就是我们所说的运算器 控制器和寄存器 当然 我们在使用计算机是 不可
  • 四、同步方法与异步方法及回调函数

    解释一下同步方法与异步方法以及回调函数的关系 若不想很深入的了解这方面内容 可以记住以下结论 对于同时有同步方法和对应异步方法的函数 我们常用异步方法 用独立线程去处理该函数 提高用户的体验 异步方法由于我们需要等待某种事件的发生 例如当前
  • mysql插入数据时,在数据库和表的编码都是utf-8的情况下,还是出现乱码

    Mysql插入数据时 在数据库和表的编码都是utf 8的情况下还是会出现乱码 解决方法 首先先确定自己的数据库的编码是否是utf 8 查看数据库字符集 将sct换为自己的数据库的名字 SHOW CREATE DATABASE sct 会看到
  • vue 项目 基于axios 对常用5种(POST、GET、PUT、DELETE、PATCH)请求进行封装

    一 安装axios 使用 npm npm install axios save 使用 cnpm cnpm install axios save 使用 yarn yarn add axios save 建议使用cnpm 二 src目录下新建l