zoukankan      html  css  js  c++  java
  • 前端学习之前端触发微信云函数接口

    前言

    其实不是前端直接去触发微信云函数的接口,而是通过nginx服务器代理的方式,再通过ajax请求微信云函数的接口,具体代码如下:

    nginx代理可以参考我的另一篇博文https://www.cnblogs.com/interesting-whh/p/13915716.html

    layui.define(['jquery', 'layer'], function(exports){
        var $ = layui.$;
        const APPID = "";//微信小程序appid
        const APPSECRET = "";//微信小程序密钥
        const URL = `/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`;
        var Access_Token = '';
    
        // name:'云函数名称',param: {参数}}
        function invokecloudfunction(access_token, name, param) {
            const FUNCTION_NAME = 'sum';
            const ENV = 'quant-cloud-qurvj';
            const INVOKE_CLOUD_FUNCTION_URL = `/tcb/invokecloudfunction?access_token=${access_token}&env=${ENV}&name=${name}`;
    
            return new Promise((resolve, reject)=>{
                $.ajax({
                    type: "post",
                    ///tcb/invokecloudfunction?access_token=ACCESS_TOKEN&env=ENV&name=FUNCTION_NAME
                    url: INVOKE_CLOUD_FUNCTION_URL,
                    // 1 需要使用JSON.stringify 否则格式为 a=2&b=3&now=14...
                    // 2 需要强制类型转换,否则格式为 {"a":"2","b":"3"}
                    data: JSON.stringify(param),
                    //请求头部设置
                    contentType: "application/json; charset=utf-8",
                  //  dataType: "json",
                    success: function(res) {
                        if(res.errmsg == 'ok')
                            resolve(res)
                        else 
                            reject(res);
                    }
                });
            })
            
        }
        // 获取token
        function getAccessToken() {
            return new Promise((resolve, reject)=>{
                $.getJSON({
                    url: URL,
                    success: (res) => {
                        if(res.errmsg){
                            reject(res)
                        }
                        else if(res.access_token){
                            resolve(res.access_token)
                        }
                    }
                })
            })
        }
    
        // name:'云函数名称',param: {参数}, callback: function回调
        function call(name, param, callback){
            getAccessToken().then( res => {
                return invokecloudfunction(res, name, param)
            }).then(res => {
                if(typeof callback == 'function' && res.errmsg == 'ok'){
                    callback(JSON.parse(res.resp_data))
                }
                else console.log(res)
            }).catch( err => {
                console.log(err)
            })
        }
    
        exports('cloudFunction', {
            call:call,
            getAccessToken: getAccessToken,
            invokecloudfunction: invokecloudfunction
        });
    })

    就这么简单,有问题再说

  • 相关阅读:
    git处理冲突提交,撤销提交命令
    RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合
    JVM进程的优雅关闭
    MySQL字段等值查询时,尾部有空格也能匹配上的坑
    带有连接池的Http客户端工具类HttpClientUtil
    比较两个jar包的版本号
    源码解读SLF4J绑定日志实现的原理
    log4j输出到控制台的性能问题
    多表查询
    分页优化
  • 原文地址:https://www.cnblogs.com/interesting-whh/p/13918079.html
Copyright © 2011-2022 走看看