这里分享出我个人封装的一个axios,我会尽量每行注释,希望对大家有所帮助。

1. 安装

全局执行代码

npm install axios;

2. 编写全局axios文件(附件里有代码)

在src目录中创建一个axios目录,里面创建一个index.js文件

写上全局index.js代码

import axios from 'axios'//引入axios
const methodType = 'get' | 'post' | 'delete' | 'put'//设置全局提交类型
const DataParamsMethod = ['post', 'delete', 'put']//设置数据提交的类型 export class Http { //定义全局http事件
header
httpOpts
constructor() {
this.header = {} //设置访问的header头部
this.httpOpts = { //设置默认的访问参数
method: 'get', //访问类型
noHandleError: false, //访问失败
noHandle401: false, //访问401
noHandle403: false, //访问403
noHandle500: false //访问500
}
} //定义类库中的get事件
get(url, data = {}, opts={}) {
opts.method = 'get' //修改全局提交类型
return this.request(url, data, opts) // 调用方法,开始访问
}
//定义类库中的post事件
post(url, data = {}, opts={}) {
opts.method = 'post'//修改全局提交类型
return this.request(url, data, opts)// 调用方法,开始访问
}
//总访问方法
request(url, data = {}, opts={}) {
opts = { ...this.httpOpts, ...opts } // 导入全局类型等数据
const contentType = 'application/json' //定义返回头头部
return new Promise((resolve, reject) => { //定义promise事件,开始访问
const method = opts.method || 'get' //定义访问类型
void axios({
url, //访问地址
baseURL: process.env.baseURL || process.env.apiUrl || 'https://static.popodv.com', //设置访问前缀,可以设置总访问的前缀
data: data ? data : {},//post设置数据
params: opts.method === 'get' ? data : {},//get设置数据
timeout: 60 * 1000, // 请求超时
headers: {
...this.header, //设置headers头部
'content-type': contentType//设置返回头头部
},
method //设置访问类型
})
.then((res) => { //当有回调时
if (res.status === 200) {
return resolve(res.data) //返回数据
} else if (res.status === 500) { //访问报错,参数问题
return resolve(res.data) //返回数据,方便代码操作
}
})
.catch(err => {//总访问报错
return reject(err)//调用错误回调
})
})
}
}

3. 编写api文件

在src目录中创建一个api目录,里面创建一个index.js文件

写上各个接口的访问代码

// 引入axios封装文件
import { Http } from '@/axios/index.js'
//定义全局axios事件
const axios = new Http() // get方法案例
export function getTest () {
  return axios.get('/data/attr/gfs.json')
} // post方法案例
export function postTest (name) {
  return axios.post('https://static.popodv.com/data/attr/gfs.json',{
    name:name
  })
}

4. 页面引用

页面上引入

import {getTest} from '@/api/index.js'

调用代码

async mounted() {
  const res = await getTest();
  if(res.status == 200){
    console.log(res.data)
  }
}

效果图:

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

Axios的正确食用方法的更多相关文章

  1. tcpdump 的正确食用方法

    目录 tcpdump 使用笔记 重要报文头 字段表 ip header tcp header 基础使用 高级版本 指定ttl(通过ttl能够确定系统的类型) tcpdump 使用笔记 重要报文头 字段 ...

  2. vue 使用 axios 时 post 请求方法传参无法发送至后台

    axios 时 post 请求方法传参无法发送至后台报错如下 Response to preflight request doesn't pass access control check: No ' ...

  3. thinkphp3.2 cli模式的正确使用方法

    最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多, ...

  4. Linux重启inotify配置max_user_watches无效被恢复默认值8192的正确修改方法

    Linux下Rsync+inotify-tools实现数据实时同步中有一个重要的配置就是设置Inotify的max_user_watches值,如果不设置,当遇到大量文件的时候就会出现出错的情况. 一 ...

  5. MyEclipse10的正确破解方法

    无法转载,故给出原文链接,以供需要者. MyEclipse10的正确破解方法

  6. [转]MySQL忘记密码的正确解决方法

    http://database.51cto.com/art/201005/201986.htm 以下的文章主要介绍的是MySQL忘记密码的正确解决方法,在实际操作中如果你忘记MySQL密码是一件很头痛 ...

  7. webpack快速入门——实战技巧:watch的正确使用方法,webpack自动打包

    随着项目大了,后端与前端联调,我们不需要每一次都去打包,这样特别麻烦,我们希望的场景是,每次按保存键,webpack自动为我们打包,这个工具就是watch! 因为watch是webpack自带的插件, ...

  8. .Net core 下的ConfigurationManager类正确引用方法

    大家在项目中经常会用到需要引用配置文件的情况,这也是我偶然间遇到的问题,菜鸟一枚,如有需纠正多谢指点. 正题 在不先引用using的情况下直接写 ConfigurationManager.AppSet ...

  9. SpringBoot 中 @RequestBody的正确使用方法

    SpringBoot 中 @RequestBody的正确使用方法 最近在接收一个要离职同事的工作,接手的项目是用SpringBoot搭建的,其中看到了这样的写法: @RequestMapping(&q ...

随机推荐

  1. [luogu6466]分散层叠算法

    做法1 对于每一个询问,直接暴力在每一个序列中二分查询 时间复杂度为$o(nk)-o(k\log n)$ 做法2 将所有序列合并后排序,并对每一个元素预处理出每个序列中第一个大于等于其的元素(位置), ...

  2. [hdu7023]Yet Another Matrix Problem

    关于$f(x)$的条件,将$C=A\times B$代入,即$\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{r}A_{i,k}B_{k,j}=x$ 调换枚举顺序,即$ ...

  3. [atAGC052D]Equal LIS

    令$f_{i}$表示以$i$为结尾的最长上升子序列,显然可以快速预处理 令$L=\max_{i=1}^{n}f_{i}$,当$L$为偶数,考虑如下构造-- 将所有$f_{i}\le \frac{L}{ ...

  4. vue3 高阶 API 大汇总,强到离谱

    高阶函数是什么呢? 高阶函数英文名叫:Higher Order function ,一个函数可以接收一个或多个函数作为输入,或者输出一个函数,至少满足上述条件之一的函数,叫做高阶函数. 前言 本篇内容 ...

  5. R语言与医学统计图形-【16】ggplot2几何对象之标签与文本

    ggplot2绘图系统--添加标签与文本.数学表达式.条形图文本.注释 1. 文本与标签添加 geom_label的文本将以标签形式出现,即文本会带有一个背景色. geom_text则是纯文本形式展示 ...

  6. words in English that contradict themselves

    [S1E10, TBBT]Leonard: I don't get it. I already told her a lie. Why would I replace it with a differ ...

  7. A Child's History of England.10

    In the next reign, which was the reign of Edward, surnamed The Elder, who was chosen in council to s ...

  8. day01 MySQL发展史

    day01 MySQL发展史 今日内容概要 数据库演变史 软件开发架构 数据库本质 数据库中的重要概念 MySQL下载与安装 基本SQL语句 今日内容详细 数据库演变史 # 1.文件操作阶段 jaso ...

  9. day10 负载均衡

    day10 负载均衡 负载均衡反向代理 正向代理:即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端. # (内部上网) 客户端 <-> 代理 -> 服务端 反向代理即 ...

  10. KMP算法思路

    题目 给定一个字符串\(S\),求\(M\)字符串是否是\(S\)字符串中的子串.如果是,返回\(M\)对应\(S\)的第一个下标,否则返回-1. 例如:S串为a b c d a b c d a b ...