uni-app中封装统一请求函数
封装统一请求函数有利于项目的维护
整体功能简单实用,但小编遇到一个巨坑,项目中在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中封装统一请求函数的更多相关文章
- main.js中封装全局登录函数
1. 在 main.js 中封装全局登录函数 通过 vue 对象的原型扩展,可以扩展一个函数,这样这个函数就可以在每一个界面通过类似指向对象的方式,去访问这个函数. 如下是 main.js 扩展的函数 ...
- uni app中使用自定义图标库
项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...
- Ajax_04之jQuery中封装的Ajax函数
1.PHP中json_encode编码规则: PHP索引数组编码为JSON:[...] PHP关联数组编码为JSON:{...}2.jQuery中AJAX封装函数之load: ①使用:$('选择器') ...
- Mac使用Charles抓取ios手机APP中的https请求
1.配置Http代理 Port为监听端口号,默认为8888,勾选Enable transparent HTTP proxying,接着勾选SOCKS proxy,可以监听Socks请求 2.安装Cha ...
- php中封装的curl函数(抓取数据)
介绍一个封闭好的函数,封闭了curl函数的常用步骤,方便抓取数据. 代码如下: <?php /** * 封闭好的 curl函数 * 用途:抓取数据 * edit by www.jbxue.com ...
- ios中封装网络请求类
#import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 ...
- uni app中关于图片的分包加载
因为在项目中使用了大量的静态资源图片,使得主包体积过大, 而把这些图片全部放到服务器又有点麻烦,就想能不能把图片也分包,但是直接放在分包下的话导致图片资源找不到了, 在社区中看到大佬分享的十分有用,特 ...
- vue2整个项目中,数据请求显示loading图
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...
- vue2整个项目中,数据请求显示loading图----------未完成阅读,码
一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失.这个,一般只需要在封装的axios中写入js事件即可.当然,我们首先需要在app.vue中,加入此图片.如下: ...
随机推荐
- 没找到Wkhtmltopdf,报表会被显示为html
windows10 odoo 打印报表时提示 没找到Wkhtmltopdf,报表会被显示为html 现象 原因 没有安装Wkhtmltopdf,没有配置环境变量,odoo在电脑系统中找不到Wkhtml ...
- Postman设置自动捕获传递Cookie教程
目录 前言 一.安装 1.Postman安装Install Interceptor Bridge 2.谷歌浏览器安装扩展Postman Interceptor 二.使用 1. 打开Capture Co ...
- 浅谈 STL
简介 STL是Standard Template Library的简称,中文名标准模板库,从根本上说,STL是一些"容器"的集合,这些"容器"有list,vec ...
- P1163 银行贷款
考虑从一个月转移到下一个月.假设前一个月的欠款是 \(s\),月利息为 \(d\),月末还款为 \(b\),那么下一个月的欠款就是 \(s\left(1+d\right)-b\). 很容易看出月利息越 ...
- C语言讲义——errno
#define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #defi ...
- 程序媛数据报告:近三年增长至70%,平均月薪1.54W,女性程序媛并不是特殊物种
- 变更mysql的数据类型兼容小数测试
来吧 我也没想到有一天要做这个测试: 想分为这几步吧: 1.先看看mysql本身支不支持数据的变更 2.再看看mybatis能不能用int接受double和decimal 先看下mysql: alte ...
- Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)
千里之行,始于足下.关注公众号[BAT的乌托邦],有Spring技术栈.MyBatis.JVM.中间件等小而美的原创专栏供以免费学习.分享.成长,拒绝浅尝辄止.本文已被 https://www.you ...
- 线性代数中的线性方程组(chapter 1)
目录 线性代数中的线性方程组 线性方程组 行化简解法和阶梯型矩阵 向量方程 矩阵方程$Ax = b$ 线性代数中的线性方程组 第一章从线性方程组的角度,通过解线性方程组,开始解释数学矩阵,以及和线性代 ...
- CentOS6.5上增加中文字体库,确保前端WEB可以正常显示
1 下载字体 可以在网上下载,也可以在 windows 目录下(C:\Windows\Fonts)找到对应字体,这里是从另一套系统上 copy simsun.ttf 文件. 2 查看当前系统中已安装的 ...