a#x#i#o#s封装
封装的js文件如下:
/* 用于修改 axios 的一些公用配置,具体参看文档 */
import axios from 'axios'
import store from '@/store/index.js'
import qs from 'qs'
import { isJSON } from '@/utils/utils'
import { getToken } from '@/common/js/cache'
// import { ROOT_URL } from '@/configs/config'
axios.defaults.transformRequest = (data, headers) => {
if (store.getters.token) {
headers['accesstoken'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
if (headers['Content-Type'] === 'application/x-www-form-urlencoded' && data && Object.prototype.toString.call(data) === '[object Object]') {
data = qs.stringify(data)
}
return data
}
const newAxios = axios.create({
timeout: 1500000
})
newAxios.interceptors.request.use(config => {
return config
}, err => {
return Promise.reject(err)
})
newAxios.interceptors.response.use(response => {
const accesstoken = response.headers.accesstoken
// debugger
const res = isJSON(response.data) ? response.data : JSON.parse(response.data)
if (accesstoken && isJSON(res.data)) {
res.data.accesstoken = accesstoken
}
return response.data
}, err => {
if (err.code === 'ECONNABORTED' && err.message.indexOf('timeout') !== -1) {
// Message.error('请求超时。。。')
console.log('请求超时。。。')
}
console.log(err)
return Promise.reject(err)
})
export function request (_param) {
const {
method = 'get',
// `responseType` 表示服务器响应的数据类型,可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
responseType = 'json', // 默认的
headers = {},
url = '',
params,
data,
...otherData
} = _param
if (!url) {
return new Promise((resolve, reject) => {
reject(new Error('url is null'))
})
}
const _method = method.toLowerCase()
if (_method === 'get') {
return newAxios({
responseType,
url,
headers,
method,
params: params || data || otherData
})
}
if (_method === 'post' || _method === 'delete' || _method === 'put') {
if (!headers.hasOwnProperty('Content-Type')) {
headers['Content-Type'] = 'application/x-www-form-urlencoded'
}
if (params && data) {
return newAxios({
responseType,
url,
headers,
method,
params,
data
})
} else {
const { start, limit, ...resetData } = otherData
return newAxios({
responseType,
url,
headers,
method,
params: params || { start, limit },
data: data || resetData
})
}
}
}
export default newAxios
接下来就是其他文件作为公用的请求进行使用了,以登陆为例子:
import { request } from '@/common/js/ajax'
import MD5 from 'crypto-js/md5'
import { getToken } from '@/common/js/cache'
export function login ({ userNo, password }) {
const url = '/v1/security/logon'
return request({
url,
method: 'post',
data: {
userNo,
password: MD5(password).toString()
}
})
}
a#x#i#o#s封装的更多相关文章
- [C#] 简单的 Helper 封装 -- RegularExpressionHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- iOS开发之App间账号共享与SDK封装
上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...
- Ajax实现原理,代码封装
都知道实现页面的异步操作需要使用Ajax,那么Ajax到是怎么实现异步操作的呢? 首先需要认识一个对象 --> XMLHttpRequest 对象 --> Ajax的核心.它有许多的属性和 ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- 封装集合(Encapsulate Collection)
封装就是将相关的方法或者属性抽象成为一个对象. 封装的意义: 对外隐藏内部实现,接口不变,内部实现自由修改. 只返回需要的数据和方法. 提供一种方式防止数据被修改. 更好的代码复用. 当一个类的属性类 ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
- CSharpGL(7)对VAO和VBO的封装
CSharpGL(7)对VAO和VBO的封装 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入门参考 ...
- Swift -- 对AFN框架的封装
Swift -- 对AFN框架的封装 一.封装AFN的目的 简单的说: 解耦 日常工作中,我们一般都不会去直接使用AFNetWorking来直接发送网络请求,因为耦合性太强,假设有多个控制器都使用AF ...
随机推荐
- C#保存图片到文件夹区分8位和24位
1.保存图像--24位位图(显示的图像,包括增加结果到界面上的数据) Image image2 = default(Image); image2 = cogRecordDisplay1.CreateC ...
- log4net.dll配置以及在项目中应用
1,首先在项目中引用log4net.dll,然后项目中添加一个配置文件log4net.config <?xml version="1.0" encoding="ut ...
- hdu6071[最短路+解不等式] 2017多校4
求出所有,从2走到x所需的花费在对 t = 2*min(d1,2, d2,3) 模运算下, 所有剩余系的最短路即可(把一个点拆成 t 个点, 每个点代表一种剩余系), 知道了所有剩余系就可以凑出答案 ...
- 2013 Dhaka 区域赛
A.uva 12709 Falling ANTS 首先按照H排序,然后按照L*H*W排序 #include<iostream> #include<cstdio> #includ ...
- BZOJ 1015: [JSOI2008]星球大战starwar【并查集】
题目可以表述成:给定一个无向图G,每次删除它的一个点和与点相关的边集,每次询问该操作后图G的连通度(连通分量的个数).和上一题一样都是考察逆向思维,虽然删除点的做法不会,但是每次加点后询问连通度却是并 ...
- 学习shell脚本之乘法口诀
脚本如下: #!/bin/bash for i in 'seq 1 9' do for j in 'seq 1 $i' do k=$[$i*$j] echo -ne "$j"&qu ...
- 如何解决"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path"
今天我在eclipse上搭建新项目时,莫名其妙的出现这个错误,如下: The superclass "javax.servlet.http.HttpServlet" was not ...
- 点击不同按钮,加载不同的页面(不使用iframe的情况下)
<button id="button1">Load Html1</button> <button id="button2"> ...
- 查看Linux每个进程的流量和带宽
原文:https://blog.csdn.net/monkeynote/article/details/45867803 作为一个系统管理员,有时候需要搞清楚一台机器上的哪个进程占用了较高的网络带宽. ...
- form表单提交file
form表单提交文件,这毫无疑问不是个好办法.但是,存在既有意义.既然H5都还让着东西存在着,呢么必然有其意义. form表单中的input type=file这个空间,不得不说奇丑无比!问题是还不能 ...