前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >uni-app使用uniCloud时做类似于拦截器和请求结果再处理(类似于请求和响应拦截)

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

作者头像
代码哈士奇
发布于 2021-10-25 03:37:02
发布于 2021-10-25 03:37:02
1.7K00
代码可运行
举报
文章被收录于专栏:dmhsq_csdn_blogdmhsq_csdn_blog
运行总次数: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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uniCloud.callFunction({
	name: 'xxx'
})

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

我们对他进行一次封装

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

目录

通用请求

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

封装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

在需要调用的地方

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test() {
	this.$reqFun.req(funName, params).then(res => {

	})
}

登陆注册

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
			}
		})
	})
}

整个文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
}

调用方法和通用调用一样

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验