封装统一请求函数有利于项目的维护

整体功能简单实用,但小编遇到一个巨坑,项目中在vue文件使用跳转方法,url参数输入 "/" 后工具提示的路径为 "/pages/login/login",

但是在外部js文件中使用uni跳转的api,快捷提示的路径为 "/pages/login/login.vue" , 这就导致实际使用找不到了,类似的情况要注意一下。

参考如下:在common文件夹下面建立一个util.js,内容如下

import {getHttpUrl} from "common/server.js"

const domain = getHttpUrl() + "/api/instructor.php/"

const req = function(a){
//console.log(a.url);
a = a || {};
var b = {
url: domain + (a.url || ""),
method: a.method || "POST",
dataType: a.dataType || "json",
header: a.header || {},
data: a.data || {},
timeout: a.timeout || 30000,
success: a.success || undefined,
fail: a.fail || undefined,
complete: a.complete || undefined,
toLogin:a.toLogin || "no"
}; if(a.loading){
uni.showLoading({
title:a.loadingTitle || "加载中",
mask: a.loadingMask || true
})
}
uni.request({
url:b.url,
method:b.method,
data:b.data,
header:b.header,
dataType:b.dataType,
timeout:b.timeout,
success:function(res){
if(res.statusCode != 200){
uni.showModal({
title:"提示",
content:"服务器繁忙,请稍后再试",
confirmColor:"#009714",
showCancel:false
})
return;
}
//console.log(res);
if(res.data.code == 0){
//console.log(res.data);
if(b.success){
b.success(res)
}
}else{
if(res.data.code == "-1" && res.data.msg == "未登录"){
if(b.toLogin == "yes"){
setTimeout(function(){
uni.redirectTo({
url:"/pages/login/login"
})
},1000)
}else{
try{
uni.removeStorageSync("userInfo");
}catch(e){
//TODO handle the exception
}
uni.showModal({
title:"提示",
content:"您未登录,请登录后再试",
showCancel:false,
confirmText:"去登陆",
confirmColor:"#FF0000",
success(e) {
if(e.confirm){
uni.redirectTo({
url:"/pages/login/login"
})
}
}
})
}
return;
}
var tipMsg = res.data.msg ? res.data.msg : "暂无数据";
setTimeout(function(){
uni.showToast({
title:tipMsg,
icon:"none",
mask:true,
duration:1500
})
},200)
}
},fail:function(err){
if(b.fail){
b.fail(err);
}else{
uni.showModal({
title:"提示",
content:"服务器繁忙,请稍后再试",
confirmColor:"#009714",
showCancel:false
})
}
},complete:function(com){
//关闭加载提示
if(a.loading){
uni.hideLoading();
} if(b.complete){
b.complete(com);
}
} })
} module.exports = {
req:req
}

使用方法:

1、在要使用的vue页面中引入

2、注册到全局vue方法

import util from 'common/util.js'

//统一接口请求函数
Vue.prototype.req = util.req;

uni-app中封装统一请求函数的更多相关文章

  1. main.js中封装全局登录函数

    1. 在 main.js 中封装全局登录函数 通过 vue 对象的原型扩展,可以扩展一个函数,这样这个函数就可以在每一个界面通过类似指向对象的方式,去访问这个函数. 如下是 main.js 扩展的函数 ...

  2. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  3. Ajax_04之jQuery中封装的Ajax函数

    1.PHP中json_encode编码规则: PHP索引数组编码为JSON:[...] PHP关联数组编码为JSON:{...}2.jQuery中AJAX封装函数之load: ①使用:$('选择器') ...

  4. Mac使用Charles抓取ios手机APP中的https请求

    1.配置Http代理 Port为监听端口号,默认为8888,勾选Enable transparent HTTP proxying,接着勾选SOCKS proxy,可以监听Socks请求 2.安装Cha ...

  5. php中封装的curl函数(抓取数据)

    介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...

  6. ios中封装网络请求类

    #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 ...

  7. uni app中关于图片的分包加载

    因为在项目中使用了大量的静态资源图片,使得主包体积过大, 而把这些图片全部放到服务器又有点麻烦,就想能不能把图片也分包,但是直接放在分包下的话导致图片资源找不到了, 在社区中看到大佬分享的十分有用,特 ...

  8. vue2整个项目中,数据请求显示loading图

    一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...

  9. vue2整个项目中,数据请求显示loading图----------未完成阅读,码

    一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...

随机推荐

  1. Python_算法汇总

    1. 约瑟夫环: # 约瑟夫环:共31个数,每隔9个删除一个,要求输出前15个号码 a=[x for x in range(1,31)] #生成编号 del_number = 8 #该删除的编号 fo ...

  2. SQL SERVER 数据库自动备份及定期删除设置步骤

    现在任何的软件都离不了一个数据库,数据的利用价值越来越大,为了避免数据宕机造成的数据丢失情况的产生,定期对数据库进行备份是必须要做的工作,下面将介绍SQL Server自带的数据库备份方法,希望可以帮 ...

  3. 总结MathType安装的一些小技巧

    MathType在编辑数学公式确实很方便,因为它的功能很强大,能够进行多种数学符号编辑.但是在安装时我们多多少少会遇到一些问题,那这些问题该怎么解决呢?下面就让小编来分享公式编辑器安装的一些小技巧吧! ...

  4. FL Studio 插件使用教程 —— 3x Osc(下)

    我们继续深入研究一下fl的3x Osc教程. 包络线是修饰音色非常重要的一个部件,有了它,音色不再是单调的长音,而能有长有短,有深有浅,变得丰富多彩.因此,学习包络线的运作原理很重要. 图1:包络线界 ...

  5. mathtype样式系统使用技巧-通过样式定义来更改方程中的字体

    本教程中,我们主要介绍MathType Desktop的样式系统.演示如何通过更改样式定义来更改方程中的字体.通过样式可以快速轻松地实现我们所需的公式格式,并统一所有公式的样式. 我们以如下公式来作为 ...

  6. 通过城市联动实时将地址显示到text中

    <div class="form-group field-supplier-sort <?php if($model->getErrors('province_id') | ...

  7. Apifox接口测试管理工具

    今天发现开发使用了一款新的接口测试工具,一眼看上去比较清爽,主要全中文界面对比postman的全英文,简直友好太多了. 后续又被业界大佬虫师推荐,于是去官网简单了解了一下,Apifox = Postm ...

  8. C语言讲义——头文件

    头文件.h Dev C++可以建C项目,也可以建C++项目,下面分C和C++两种情况讨论. c.h C语言中,头文件往往不是必须的,只是描述性的文件. 因此,C项目中可以没有.h文件. cpp.h 下 ...

  9. C语言常用的一些转换工具函数!

    1.字符串转十六进制 代码实现: 2.十六进制转字符串 代码实现: 或者 效果:十六进制:0x13 0xAA 0x02转为字符串:"13AAA2" 3.字符串转十进制 代码实现: ...

  10. (1)Consul在linux环境的集群部署

    1.Consul概念 1.1什么是Consul? Consul是一种服务网格解决方案,是HashiCorp公司推出的开源组件,由Go语言开发,部署起来很容易,只需要极少的可执行程序和配置.同时Cons ...