返回介绍

云托管内调用服务端云函数接口

发布于 2024-01-20 01:44:38 字数 2899 浏览 0 评论 0 收藏 0

接口地址

在代码 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文