Vue.js(18)之 axios简单封装
基于vue-cli2.x封装axios
src目录

axios.js
import axios from 'axios'
import { Indicator, Toast } from 'mint-ui'
// request 拦截器
axios.interceptors.request.use(config => {
Indicator.open({ text: '加载中...', spinnerType: 'snake' })
return config
}, err => {
Indicator.close();
Toast({ message: '请检查您的网络连接并重试', duration: 2000, className: 'mToast' })
return Promise.reject(err)
})
// response 拦截器
axios.interceptors.response.use(
config => {
Indicator.close();
return config
}, err => {
Indicator.close();
Toast({ message: '请检查您的网络连接并重试', duration: 2000 })
Promise.reject(err)
}
)
export default axios
config.js
// 在 axios中,利用QS包装data数据
import Qs from 'qs'
const config = {
baseURL: 'http://www.****.top:8888/',
url: '',
method: 'get',
params: {},
data: {},
timeout: 100000,
withCredentials: false,
responseType: 'json',
headers: {
'Content-Type': 'application/json'
},
maxContentLength: 10000,
maxRedirects: 5,
transformResponse: [function(data) {
return data
}],
paramsSerializer: function(params) {
return Qs.stringify(params)
},
onUploadProgress: function(progressEvent) {
// console.log('onUploadProgress...');
},
onDownloadProgress: function(progressEvent) {
// console.log('onDownloadProgress...');
}
}
export default config
fetch.js
// 引入 请求拦截 配置
import $axios from "./axios"
// 引入 请求参数 配置
import config from './config'
config.headers.Authorization = window.sessionStorage.getItem('token') || ''
// 封装成自己的方法
fetch = async function(url, method, request, other) {
let response
if(method == 'post') {
config.data = request
response = await $axios.post(url, request, config)
} else if(method == 'get') {
config.params = request
response = await $axios.get(url, config)
}
console.log(response)
return response
}
export default fetch
测试

.vue文件
<template>
<div>
<hr>
<h1 @click="postJson">login-postJson</h1>
<hr>
<h1 @click="getJson">getJson</h1>
<hr>
<h1 @click="getUserList">getUserList</h1>
</div>
</template>
<script>
import mix from './Apitest-mixins.ts'
export default {
mixins: [mix]
}
</script>
.ts文件
import fetch from '../../request/fetch.js'
export default {
methods: {
async postJson() {
const params = {
"username": "admin",
"password": "123456"
}
let { data: res } = await fetch('/login', 'post', params)
window.sessionStorage.setItem('token', res.data.token)
console.log(res)
},
async getJson() {
let { data: res } = await fetch('/roles', 'get')
console.log(res)
},
async getUserList() {
let params = {
query: 'a',
pagenum: 2,
pagesize: 10
}
const { data: res } = await fetch('/users', 'get', params )
console.log(res)
}
}
}

遗留bug
请求头???百度了2天,问了同事也没有解决了,自己都奔溃了

Vue.js(18)之 axios简单封装的更多相关文章
- axios简单封装
写在最前面 新手前端刚刚接触vue,感觉真的好用.项目中需要使用axios,然后学习了一下.借鉴网上一些大佬的经验,现在分享一下axios的简单封装,如果有什么错误的地方,请大家指出. axios安装 ...
- Vue.js的安装及简单使用
一.Vue简介 二.Vue.js的安装 2.1.npm安装 2.1.1.node.js介绍及安装 简介: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基 ...
- vue-axios当只调用vue.js又需要axios请求多时
可以将axios方法封装一个函数 (function () { ASK = { get:function (url,data,succFun,errFun) { axios.get(url,{ par ...
- vue axios 简单封装以及思考
先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️ https://github.com/axios/axios 下面是简单 ...
- vue.js中使用Axios
Axios为vue2.0官方推荐HTTP请求工具,之前的是vue-resource 在使用的过程中总结了两种使用方式: 1.和vue-resource使用类似 引入:import axios from ...
- 在使用Vue.js中使用axios库时,遇到415错误(不支持的媒体类型(Unsupported media type))
知识点:vue2.0中使用axios进行(put,post请求时),遇到415错误 解决办法:在axios的第三个参数config中,设置请求头信息'Content-Type': 'applicati ...
- vue.js提交按钮时简单的if判断表达式示例
简单的业务需求如下,看图说话 1:当充值金额没有填写的时候,会有Toast小弹框提示"请输入有效的充值金额" if (!this.money) { console.log('mon ...
- Vue.js(20)之 封装字母表(是这个名字吗0.0)
HTML结构: <template> <div class="alphabet-container"> <h1>alphabet 组件</ ...
- Vue.js(19)之 封装calendar组件
效果 需求 1.实现一个日历组件,如图: 2.显示某天的事项: 3.事项是模拟父组件请求接口返回的,数据格式如下: [ { id: '232', date: '2019-06-01', info: ' ...
随机推荐
- 题解 CF1131C 【Birthday】
CF大水题 题意:给你n个人,他们的身高是a[i],让你将这几个人排成一个环,使得他们两两之间身高差的和最小. 思路:简单到爆了,恶意评分上蓝.直接将那几个人排个序,然后按序左右放就行了,也就是说1号 ...
- k-近邻算法的优缺点及拓展思考
//2019.08.03晚#k-近邻算法的拓展思考与总结1.k-近邻算法是一种非常典型的分类监督学习算法,它可以解决多分类的问题:另外,它的整体思想简单,效果强大.它也可以用来解决回归问题,使用的库函 ...
- 配置gem5-gpu docker版
1 安装docker:wget -qO- https://get.docker.com/ | sh,启动服务:sudo service docker start 2 把非root用户添加到docker ...
- javascript中退出语句break,continue和return 比较
在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止. 首先:break和continue两个 ...
- 实验吧-杂项-pilot-logic、ROT-13变身了
1.pilot-logic 题上说password藏在文件里,直接丢到Winhex里,搜索pass就拿到flag了. 有的大佬提供了另一种方法,题上说是一个磁盘文件,有一个处理磁盘文件的软件autop ...
- JuJu团队11月29号工作汇报
JuJu团队11月29号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 于达 生成所有mini batch, 支持不同batch_size 优化代码 熟悉julia 婷婷 ...
- UVA - 536 Tree Recovery (二叉树重建)
题意:已知先序中序,输出后序. #pragma comment(linker, "/STACK:102400000, 102400000") #include<cstdio& ...
- .NET配置问题
Ext.NET MVC 配置问题总结 随着VS版本和.NET MVC版本.EF的版本的不断更新,虽然很多功能随着版本的提升而更完善,但对于旧版本开发的软件就有点悲催了,或许很多开发者都遇到 ...
- Java8集合框架——HashSet源码分析
本文的目录结构: 一.HashSet 的 Javadoc 文档注释和简要说明 二.HashSet 的内部实现:内部属性和构造函数 三.HashSet 的 add 操作和扩容 四.HashSet 的 r ...
- Spring Boot2(004):关于 Build Systems (构建系统)
Spring Boot Ref 建议使用 maven 或者 gradle 来进行依赖管理和应用构建. 一.Dependency Management(依赖管理) Spring Boot 的每个版本都会 ...