云开发中got和request-promise

Posted ygjzs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云开发中got和request-promise相关的知识,希望对你有一定的参考价值。

今天学习云开发如何发请求和进行数据安全监测

问题:用got请求token可以,但进行安全监测时却报错

在网上找了许多篇文章,也在群里跟别人交流过,综合了一下,找到了解决办法------用request-promise代替got

我这是获取taken时用got,进行安全检测则使用request-promise,没错同时用了两包来完成这个功能(毕竟是学习过程中,这可和微信不支持模板消息不一样,因为已经获取不了formId,实在是学不了了??)

request-promise使用参考
微信内容安全检测文档

下面展示代码:

小程序端的js

Page({

  msgCheck:function(event){
    wx.cloud.callFunction({
      name:'msg',
      data:{
        text:'完2347全dfji试3726测asad感3847知qwez到'
        // text:'你好呀'
      }
    }).then(res => {
      console.log(res)
      console.log(res.result)
      // console.log(JSON.parse(res.result))
    })
  }
})

云端的js代码

// 云函数入口文件
const cloud = require('wx-server-sdk')

const got = require('got')

const rp = require('request-promise')


let appid = '你的appid;
let screct = '你的screct';
let msgCheckUrl = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token='

let tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='+appid+'&secret='+screct


cloud.init()



// 云函数入口函数
exports.main = async (event, context) => {
  let tokenResponse = await got(tokenUrl)
  // console.log(tokenResponse.body)
  let token = JSON.parse(tokenResponse.body).access_token;
  console.log(token)
  var options = {
    method: 'POST',
    url: "https://api.weixin.qq.com/wxa/msg_sec_check?access_token="+token,
    body: {
        content: event.text
    },
    json: true // Automatically stringifies the body to JSON
};

//下面是got报错的代码??
// a = rp(options)
//     .then(function (parsedBody) {
//       // console.log(parsedBody)
//       //   return parsedBody
//     })
//     .catch(function (err) {
//         // POST failed...
//     });
return await rp(options)
  // let checkResponse = await got(msgCheckUrl + token,{ 
  //   method:'POST',
  //   headers:{
  //     'Content-Type':'application/json'
  //   },
  //   body:JSON.stringify({
  //     content:event.text
  //   })
  // });
  // return options.body
  // return token;
}

总结:去研究为什么报错,不如换一种方法去解决,前者似乎更浪费时间

以上是关于云开发中got和request-promise的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序云开发(云函数) 使用got发出httphttps 请求服务器数据

微信云函数使用require('request-promise')进行POST请求 为何content为零

Request-Promise:承诺缓存结果

将 Request-Promise 与 Falcor 一起使用时出错

request-promise : 下载/检查文件的 MIME 类型?

Firebase ReferenceError:未定义PostData