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

想要在使用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

1uniCloud.callFunction({ 2 name: 'xxx' 3}) 4

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

我们对他进行一次封装

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

@TOC

通用请求

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

封装

1const req = (funName,params)=>{ 2 const token = uni.getStorageSync('xxxx') 3 if(!token){ 4 //没有token 跳转登陆 5 } 6 return new Promise((resolve)=>{ 7 uniCloud.callFunction({ 8 name:funName, 9 data:{ 10 params 11 }, 12 success:res=>{ 13 if(res.result.code==0){ 14 resolve(res.result) 15 }else{ 16 resolve(res.result.code) 17 } 18 }, 19 fail:()=>{ 20 resolve(false) 21 } 22 }) 23 }) 24} 25 26module.exports = { 27 req 28}

调用

在main.js中

1import Vue from 'vue' 2import App from './App' 3import reqFun from './reqFun/index.js' 4 5Vue.prototype.$reqFun = reqFun 6 7Vue.config.productionTip = false 8 9App.mpType = 'app' 10 11const app = new Vue({ 12 ...App 13}) 14app.$mount() 15

在需要调用的地方

1test() { 2 this.$reqFun.req(funName, params).then(res => { 3 4 }) 5} 6

登陆注册

1const loginOrRegister = (params)=>{ 2 return new Promise((resolve)=>{ 3 uniCloud.callFunction({ 4 name:'login/register', 5 data:{ 6 params 7 }, 8 success:res=>{ 9 if(res.result.code==0){ 10 resolve(res.result) 11 }else{ 12 resolve(res.result.code) 13 } 14 }, 15 fail:()=>{ 16 resolve(false) 17 } 18 }) 19 }) 20}

整个文件

1const req = (funName,params)=>{ 2 const token = uni.getStorageSync('xxxx') 3 if(!token){ 4 //没有token 跳转登陆 5 } 6 return new Promise((resolve)=>{ 7 uniCloud.callFunction({ 8 name:funName, 9 data:{ 10 params 11 }, 12 success:res=>{ 13 if(res.result.code==0){ 14 resolve(res.result) 15 }else{ 16 resolve(res.result.code) 17 } 18 }, 19 fail:()=>{ 20 resolve(false) 21 } 22 }) 23 }) 24} 25 26const loginOrRegister = (params)=>{ 27 return new Promise((resolve)=>{ 28 uniCloud.callFunction({ 29 name:'login/register', 30 data:{ 31 params 32 }, 33 success:res=>{ 34 if(res.result.code==0){ 35 resolve(res.result) 36 }else{ 37 resolve(res.result.code) 38 } 39 }, 40 fail:()=>{ 41 resolve(false) 42 } 43 }) 44 }) 45} 46 47 48module.exports = { 49 req, 50 loginOrRegister 51}

调用方法和通用调用一样

<br /><br /><br /><br /><br /> 欢迎加入交流群 974178910 535620886 <br />

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

未经本人允许,禁止转载

在这里插入图片描述

点赞
收藏

评论区

加载中...

相关推荐

「uniapp」封装请求拦截和响应拦截

uniapp官方的请求方式首先我们先看一下uni官方给开发者提供的uni.request用来网络请求的apiuni.request(url:'',method:'GET',data:,header:,success:res,fail:(),complete:());可以看到我们每次请求数据的时候都需要按照这个格式来请求,

简析限流算法

简析限流算法1.简介限流顾名思义是限制流量,限制流量的目的是为了保障服务稳定运行,避免服务被流量冲垮。当流量超出服务处理能力时,部分请求将会被限流组件拦截。被拦截的请求可能会被丢弃,如果是C端请求,那么这个请求可能会被导向指定的错误页上,而不是生硬的拒绝。这里我们丢

JAVA拦截器,JAVA返回结果跨域问题解决

遇到的问题:通过拦截器做权限控制,没有权限时返回了json值,结果前端请求时提示跨域了备注:我的前端站点和后端站点不是一个地址报错1:AccesstoXMLHttpRequestat'http://localhost:8089/appcicd/appinfo/getappinfos'fromorigi

Cookie,Session学习(java servlet编程)

Cookie问题:HTTP协议是没有记忆功能的,一次请求结束后,相关数据会被销毁。如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?为了解决这个问题,引入了Cookie技术;Cookie技术其实就是浏览器端实现的数据临时存储技术,保存一些必要的数据,当访问某些网页需要这些数据时,浏览器自动将数据加到HTTP请求

SpringMVC第一天HelloWorld

1,普通Servlet的流程是通过配置<servlet</servlet和<servletmapping</servletmapping来拦截请求交给对应的Servlet来处理使用SpringMVC需要配置一个SpringMVC自带的Servlet,DispatcherServlet,使用他来拦截请求交给SpringMVC处理 we

.NET Core AutoWrapper 自定义响应输出

前言AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NETCoreAPI响应的包装。他使用ASP.NETCoremiddleware拦截传入的HTTP请求,并将最后的结果使用统一的格式来自动包装起来.目的主要是让我们更多的关注业务特定的代码要求,并让包装器自动处理HTTP响应。这可以在构建API时加快开发时间,同时为HTT