uni-app使用uniCloud时做类似于拦截器和请求结果再处理(类似于请求和响应拦截)

代码哈士奇 等级 1314 1 0
标签:

想要在使用uniCloud的使用拦截请求怎么办 再次封装uniCloud.callFunction 特别说明 这里的token是我自己存储成token 如果你使用了uni-id 官方的推荐是 ('uni_id_token') ('uni_id_token_expired') 存储了uni_id_token后请求会自动携带 这里的res.result.code==0是因为我的云函数请求成功返回的code均为0 如果你的不是 就根据自己需求更改

正常情况下 我们使用uniCloud.callFunction

uniCloud.callFunction({
    name: 'xxx'
})

结合uni-id后请求时需要携带token 或者需要携带一些认证参数怎么办呢 总不能一个一个的写吧 那太麻烦了

我们对他进行一次封装

根目录下新建一个目录 根据需求命名 新建index.js文件

@TOC

通用请求

当请求为0(根据需求调整)的时候请求成功 否则只返回相应的code(也可以返回msg等)

封装

const req = (funName,params)=>{
    const token = uni.getStorageSync('xxxx')
    if(!token){
        //没有token 跳转登陆
    }
    return new Promise((resolve)=>{
        uniCloud.callFunction({
            name:funName,
            data:{
                params
            },
            success:res=>{
                if(res.result.code==0){
                    resolve(res.result)
                }else{
                    resolve(res.result.code)
                }
            },
            fail:()=>{
                resolve(false)
            }
        })
    })
}

module.exports = {
    req
}

调用

在main.js中

import Vue from 'vue'
import App from './App'
import reqFun from './reqFun/index.js'

Vue.prototype.$reqFun = reqFun

Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
    ...App
})
app.$mount()

在需要调用的地方

test() {
    this.$reqFun.req(funName, params).then(res => {

    })
}

登陆注册

const loginOrRegister = (params)=>{
    return new Promise((resolve)=>{
        uniCloud.callFunction({
            name:'login/register',
            data:{
                params
            },
            success:res=>{
                if(res.result.code==0){
                    resolve(res.result)
                }else{
                    resolve(res.result.code)
                }
            },
            fail:()=>{
                resolve(false)
            }
        })
    })
}

整个文件

const req = (funName,params)=>{
    const token = uni.getStorageSync('xxxx')
    if(!token){
        //没有token 跳转登陆
    }
    return new Promise((resolve)=>{
        uniCloud.callFunction({
            name:funName,
            data:{
                params
            },
            success:res=>{
                if(res.result.code==0){
                    resolve(res.result)
                }else{
                    resolve(res.result.code)
                }
            },
            fail:()=>{
                resolve(false)
            }
        })
    })
}

const loginOrRegister = (params)=>{
    return new Promise((resolve)=>{
        uniCloud.callFunction({
            name:'login/register',
            data:{
                params
            },
            success:res=>{
                if(res.result.code==0){
                    resolve(res.result)
                }else{
                    resolve(res.result.code)
                }
            },
            fail:()=>{
                resolve(false)
            }
        })
    })
}


module.exports = {
    req,
    loginOrRegister
}

调用方法和通用调用一样






欢迎加入交流群 974178910 535620886

  大家好,我是代码哈士奇,是一名软件学院网络工程的学生,因为我是“狗”,狗走千里吃肉。想把大学期间学的东西和大家分享,和大家一起进步。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!博客主页:https://blog.csdn.net/qq_42027681

未经本人允许,禁止转载

uni-app使用uniCloud时做类似于拦截器和请求结果再处理(类似于请求和响应拦截)

收藏
评论区

相关推荐

uni-app使用uniCloud时做类似于拦截器和请求结果再处理(类似于请求和响应拦截)
想要在使用uniCloud的使用拦截请求怎么办 再次封装uniCloud.callFunction特别说明 这里的token是我自己存储成token 如果你使用了uniid官方的推荐是 ('uniidtoken') ('uniidtokenexpired') 存储了uniidtoken后请求会自动携带 这里的res.result.code0是因为我的云
uni-app/vue 结合element ui实现菜单分类导航(类似于小米商城首页的分类导航那种)
效果如下 数据来源为uniCloud云数据库 照片来源为网络 代码来源为我的毕业设计 在这里插入图片描述(https://imghelloworld.osscnbeijing.aliyuncs.com/68857ab4a9c485bbbd98c94ad98fb490.png) 鼠标未放到软件上面之前 在这里插入图片描述(ht
手把手带你使用uni-admin搭建后台管理系统
我们一般写应用都需要有后台管理系统,那么uniapp也不例外。本次内容假设我们已经完成了一个uniapp+uniCloud开发的程序。默认我们已经搭建好了服务空间。如果你还不知道服务空间如何创建,移步uniadmin和应用共用同一个服务空间此文章在华为云社区为首发我是代码哈士奇 此文章来源为代码哈士奇,个人主页: 创建uniadmin模板应用这里使用uni
uni-app云开发教程全套课程开始啦~
由于前段时间过于繁忙,博客更新较慢为了更好的分享uniapp的学习以及uniCloud,uidid的学习使用在B站推出全套课程 免费哦课程资源地址为或者一起学习交流吧
2分钟做一个Vue实时直播系统
前言我们在不敲代码的时候可能会去看游戏直播,那么是前台怎么实现的呢?下面我们来讲一下。第一步,购买云直播服务首先,你必须去阿里云或者腾讯云注册一个直播服务。也花不了几个钱,练手的话,几十块钱就够了。这里我拿阿里云举例,购买完了,配置好推流域名跟播流域名,下面我们将进行地址生成。记住下面生成的地址,下面会用到。第二步,下载本地推流工具https://obspr
Java面试,如何在短时间内做突击
**面试前很有必要针对性的多刷题,大部分童鞋实战能力强,理论不行,面试前不做准备很吃亏。这里整理了很多常考面试题,希望对你有帮助。** **面试技术文** [Java岗 面试考点精讲(基础篇01期)](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fmp.weixin.qq.com%2Fs
LWIP再探
这这里是接上一篇内存池管理部分的,这里如果读者一打开memp.c的话会感觉特别那一理解原作者在干嘛,但是看懂了就明白原作者是怎么巧妙的使用了宏。废话不多说先说了下我分析是一下宏的条件是 前提条件 MEMP\_STATS = 0 MEMP\_OVERFLOW\_CHECK = 0 首先要去简单的看下#include "lwip/priv/memp\
HTTP请求超时时间导致的请求长时间等待
netstat -n | awk '/^tcp/ {++S\[$NF\]} END {for(a in S) print a, S\[a\]}' ![](https://img2018.cnblogs.com/blog/1069298/201903/1069298-20190329000339069-206437991.png) 发送http请求需要添加
API网关,让您和Serverless再近一步
![](https://pic4.zhimg.com/80/v2-2f02db68678823738f9638d7fb7644e3_hd.jpg) 从软件行业诞生之日起,技术和业务总是相辅相成。**业务的创新促进着软件架构从最早期的单体架构、分布式架构,转变到了如今火热的微服务架构,以及云时代下诞生的Serverless架构。**API网关作为单体应用和微
GTID做mysql主从时报错
今天在做主从同步时,显示slave\_IO线程为NO ,并且报如下错误 Slave_IO_Running: No ... Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UU
JavaScript:再谈Tasks和Microtasks
JavaScript是单线程,也就是说JS的堆栈中只允许有一类任务在执行,不可以同时执行多类任务。在读js文件时,所有的同步任务是一条task,当然了,每一条task都是一个队列,按顺序执行。而如果在中途遇到了setTimeout这种异步任务,就会将它挂起,放到任务队列中去执行,等执行完毕后,如果有callback,就把callback推入到Tasks中去,
Linux时区和时间设置
1. 修改时区 # tzselect ![](https://oscimg.oschina.net/oscnet/up-af3994ceba21ea110ac0ca04f89e6099c20.png) 2. 修改/etc/profile # vim /etc/profile
Spring如何实现AOP,请不要再说cglib了!
1\. 从注解入手找到对应核心类 ================ 最近工作中我都是基于注解实现AOP功能,常用的开启AOP的注解是@EnableAspectJAutoProxy,我们就从它入手。 ![](https://oscimg.oschina.net/oscnet/3307f3a08df1251f4b119de8e02f9a92c10.jpg)
Struts2单例和多例
struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的属性不一样,操作得出的结果不一样.举个例子:有一块布长度300cm,能做一件上衣(用掉100cm)和一件裤子(用掉200cm);甲和乙同时访问得到的长度都是300cm,甲想做上
uniCloud+uni-admin+electron实现 electron应用更新
uniCloud+uniadmin+electron实现 electron应用更新搭建视频地址 从 https://gitee.com/dmhsq/reacttsviteelectron 的仓库代码开始搭建两种更新方式 1.资源替换 (还可以更换成其它框架开发打包的asar资源) 如下看效果2.安装包逻辑如下应用启动时 调用 检查更新方法检查更新方法 查询