想要在使用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。
未经本人允许,禁止转载

