文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
云托管内调用服务端云函数接口
在代码 routes/home
中添加
// 云托管内调用云函数 router.get('/call-fn-banner', async (ctx, next) => { const ACCESS_TOKEN = '' const weappEnvId = 'poetry-prod-6gj3fpxa137552a6' // 小程序云开发 envId const data = await rp({ method: 'POST', // 在云托管容器环境中,可以拿到 access_token,而且免鉴权、这里不需要填写 // https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/weixin/open.html // 这里填 http 协议、在云托管中不需要填 access_token、需要在云托管-云调用中填写接口白名单前缀、开启侧边栏 proxy 代理后可以免输入本地调试 uri: `http://api.weixin.qq.com/tcb/invokecloudfunction?env=${weappEnvId}&name=banner`, body: { $url: 'queryBanner', ...ctx.request.query }, json: true }).then(async res=>{ console.log('callCloudFn res', res) if(res && res.errcode === 40001) { throw error } let data = res.resp_data ? JSON.parse(res.resp_data) : {} return data }).catch(error=>{ ctx.body = { code: error.errcode, message: error.errmsg } throw error }) ctx.body = data })
小程序云函数 banner 代码
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: 'poetry-prod-xx' // 环境 ID }) const TcbRouter = require('tcb-router') const db = cloud.database() const bannersCollection = db.collection('banners') // banners 集合 // 云函数入口函数 exports.main = async (event, context) => { const app = new TcbRouter({event}) // banner 列表 app.router('queryBanner', async (ctx,next)=>{ const {pageSize = 20, pageNum = 1, orderBy, sort} = event try { let data = await bannersCollection.skip(Number((pageNum - 1)*pageSize)).limit(Number(pageSize)).orderBy(orderBy || 'createTime', sort || 'desc').get().then(res=>res.data) let {total} = await bannersCollection.count() ctx.body = { message: '查询成功', code: 200, data: { list: data, total, pageSize, pageNum } } } catch (error) { ctx.body = { message: error, code: -1 } } }) return app.serve() }
在云托管权限控制台添加接口权限
开启 api.poetries.top
本地调试服务
通过微信服务器模拟小程序请求
也可以在小程序中访问
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论