导言
在开发微信公众号时,我们常常需要与微信开放平台的 API 进行交互。而这些 API 的调用方式往往需要一些前置条件、请求参数等等。虽然我们可以根据微信官方文档进行开发,但是这样需要我们写大量的 AJAX 代码和回调函数,非常繁琐和麻烦。而 weixin-promise 这个 npm 包就可以帮助我们省去很多重复的劳动,更聚焦于业务逻辑本身的实现。
安装 weixin-promise
我们先来看一下如何安装这个 npm 包。假设我们已经安装了 Node.js 和 npm,我们可以执行以下命令来安装 weixin-promise:
npm install weixin-promise --save
这样就将这个 npm 包作为当前项目的依赖项安装了进来。我们在编写业务代码时就可以通过 require('weixin-promise') 来导入这个包。
weixin-promise 简介
weixin-promise 封装了微信开放平台的 API,我们可以通过这个包提供的接口进行调用。weixin-promise 的工作方式很简单,它实际上是对微信 API 提供了一个 Promise 化的调用接口,这样我们在使用这个包时就可以通过 Promise 来避免传统 AJAX 回调函数的一些问题,比如回调函数嵌套层级深、异常处理繁琐等等。
比如下面的代码实现了 Promise 化的微信 API 调用:
-- -------------------- ---- ------- -- ------- ---- --- -- ----------------- - -------- ----------- ---------- - --- -------- - ---------------------- -------------------------------------- ---------- - -------- -------- ----- - ---------------------- -- ----- -------- ----- - --------------------- - ---- ------ ----------------- --
我们通过 weixinPromise.defer() 来创建一个 Promise,然后调用 wx[apiMethod] 方法进行 API 调用。当调用成功时,我们 resolve 这个 Promise,否则 reject。
使用 weixin-promise 发送模板消息
接下来,让我们来看一个具体的业务场景:如何使用 weixin-promise 来发送微信模板消息。
首先,我们需要在微信公众号平台上创建一个模板消息。在微信公众平台 -> 开发 -> 模板消息 中进行操作。在模板消息列表中,我们可以得到模板 ID,这个 ID 就是后面我们在发送模板消息时需要用到的模板 ID。
然后,我们需要在代码中引入 weixin-promise:
const weixin = require('weixin-promise')
接下来,我们需要构造发送请求的参数,包括 access_token 和模板消息数据等等。具体的参数可以参考微信官方接口文档,下面是一个简单的范例:
-- -------------------- ---- ------- ----- ---- - - ------- --------- ------------ -------------- ---- -------------------------- ----- - ----- - ------ ------ ------ --------- -- ------- - ------ ---------- ------ --------- - - - ----- ------ - - ------------- ------------------- - ------------------------------------- ------- -------------- -- - ---------------- ------------ -- - ------------------ --
其中,touser 是指接收者的 openid,template_id 是指模板消息的模板 ID,url 是指点击模板消息后跳转的链接,data 是指模板消息的具体内容。我们将这些数据通过 weixin.post 方法发送出去,然后得到服务器返回的结果 res 或者异常 err,分别在 then 和 catch 中进行处理。
至此,我们就完成了如何使用 weixin-promise 包来进行微信模板消息的发送。同时,我们也感受到了使用 Promise 化的微信 API 调用时所带来方便和便利。希望本文对读者有所启发,引领大家进入更加愉悦、高效和优美的前端开发世界。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671088dd3466f61ffdf5f