基础axios用法请看axios官网
//依赖于axios对私有ajax进行修改
import Qs from 'qs'
import axios from 'axios'
import router from 'router/index'
import {errorPrompt, loading, closeLoading} from 'util/util'
export const status = {
SUCCESS: '100',
NET_ERR: '101', // 网络连接异常,请稍候再试
BIZ_ERR: '103', // 业务请求异常
NO_AUTH: '104'
}
export function fetch(options) {
return new Promise((resolve, reject) => {
let instance = axios.create({
baseURL: process.env.BASE_API,
timeout: 2000,
headers: {
// "tracecode": window.encodeURIComponent(JSON.stringify({"ua":"","cv":"20161230","token":"3dwo0onUUsPKVJcP8tk","os":"windows10","app":"kind","ws":"1*1","pkey":"f8caf7d7-a5d4-4710-b06f-28a922b6a467"}))
"tracecode": commonBizHeader(isManager(options)),
'Content-Type': 'application/x-www-form-urlencoded'
},
transformRequest: [function (data) {
// Do whatever you want to transform the data
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}]
});
instance.interceptors.request.use(function (response) {
// 请求拦截
loading();
return response;
}, function (error) {
console.log('error 请求拦截 : ', error)
return Promise.reject(error);
});
instance(options)
.then(response => {
const res = response.data;
if (res.errorCode != status.SUCCESS) {
switch (res.errorCode) {
case status.NET_ERR: {
errorPrompt(res.errorMsg)
reject(res)
break;
}
case status.BIZ_ERR: {
errorPrompt(res.errorMsg)
reject(res)
break;
}
case status.NO_AUTH: {
errorPrompt(res.errorMsg)
let session = require("storejs")
if (isManager(options)) { // 管理端
session.remove("managerUserToken")
router.push({path: '/manager/login'})
} else {
session.remove("clientUserToken")
router.push({path: '/client/login'})
}
reject(res)
break
}
}
}
closeLoading();
resolve(res);
}).catch(error => {
closeLoading();
errorPrompt('网络连接错误,请检查您的网络')
console.log('error', error); // for debug
reject(error);
});
});
}
function commonBizHeader (isManager) {
let session = require("storejs");
let params = {}
params['ua'] = window.navigator.userAgent.toLowerCase()
params['cv'] = '123456'
params['ws'] = window.screen.height + '*' + window.screen.width
params['token'] = "123456"
params['os'] = window.navigator.appCodeName
if (isManager) {
params['token'] = session.get('managerUserToken') // 管理 - 用户令牌
} else {
params['token'] = session.get('clientUserToken') // 用户 - 用户令牌
}
params['app'] = 'kind'
let UUID = session.get('pkey')
if (!UUID) {
UUID = getUUID()
window.localStorage.setItem('pkey', UUID)
}
return encodeURIComponent(JSON.stringify(params))
}
function isManager(options) {
return options && options.url && options.url.indexOf("/api/worker") != -1
}
/**
* 获取UUID
* @returns {string}
*/
export function getUUID() {
let len = 32 // 32长度
let radix = 16 // 16进制
let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
let uuid = []
let i
radix = radix || chars.length
if (len) {
for (i = 0; i < len; i++) {
uuid[i] = chars[0 | Math.random() * radix]
}
} else {
var r
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
uuid[14] = '4'
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16
uuid[i] = chars[(i === 19) "htmlcode">
import {fetch} from 'api/fetch'
export const callAuthCode = (userPhone) => {
return fetch({
url: '/api/auth/code',
method: 'post',
data: ({
userPhone: userPhone,
}),
})
}
因为我们这边的后台要求严格区分get/post请求,所以封装的方法调用中必须带有method,如后台已经处理好,全部可进行post请求,则可以参照axios官网里面将方法全部改为.post
关于fetch方法的说明:主要进行封装了请求拦截,响应拦截,默认请求体由json格式转换form格式,当然,这些都是在axios官网里可以找到的,不过是集合下了而已
关于请求头部分请不要直接套用,这是我们这边后台要求特殊配置的,后台接口三端共用,必须区分是哪里在调用
以上这篇基于axios封装fetch方法及调用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
axios,封装,fetch
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]