在开发小程序的时候,常常会用到一些第三方的 API。可是第三方的 API 每每会有各类各样的问题,好比:javascript
等等。可是,在业务中,咱们又必需要使用这些接口,应该如何操做呢?java
一个比较简单的方法,就是使用云开发来作中转。将有限制的小程序请求,转化为没有限制的云函数请求,就能够轻松实现未备案、无 HTTPS 接口的请求。npm
在具体的实现时,主要有如下几个步骤:json
咱们重点讲解一下「请求代码的建立」和「在小程序请求云函数」小程序
假设咱们要请求快递 100 的 API,来查询快递信息。因为其没有 HTTPS 证书,因此咱们没有办法直接在小程序端查询。因此,咱们创建了一个新的云函数 getKuaiDi 来查询快递信息。bash
咱们要调用的 API 地址是 http://www.kuaidi100.com/query?type=快递公司代号&postid=快递单号
,咱们只须要将这里的快递代号和单号替换,并发送一个 get 请求,就能够获取到下面这样的结果。并发
{ "message": "ok", "nu": "11111111111", "ischeck": "1", "com": "yuantong", "status": "200", "condition": "F00", "state": "3", "data": [ { "time": "2020-02-10 08:47:03", "context": "查无结果", "ftime": "2020-02-10 08:47:03" } ] }
接下来来编写代码,首先,咱们须要安装依赖,在云函数上右击,选择「在终端中打开」,执行命令安装 gotasync
npm install --save got@9
安装完成后,咱们开始编写代码。由于刚刚安装了 got ,咱们在云函数中编写代码就简单许多。函数
const got = require('got') // 云函数入口函数 exports.main = async (event, context) => { const response = await got(`http://www.kuaidi100.com/query?type=${event.type}&postid=${event.id}`) return response.body }
删除掉无用的代码后,咱们只须要保留上面这些代码,就完成了云函数侧的代码。post
这段代码中,经过 ES6 的新语法,拼接了 event 的参数,造成一个完成的 API 地址,并经过 got 请求了咱们刚刚拼接好的 API。再将获取到的 Response 中的 Body 返回给小程序端。
上传部署云函数之后,咱们能够在小程序端调用这个 API 以验证。在你的小程序端输入这样的代码
wx.cloud.callFunction({ name:"getKuaiDi",data:{ "type": "yuantong", "id":"11111111111" }}).then(console.log).catch(console.error)
你会看到这样的返回,则说明你的 API 接口正常工做。
{"message":"ok","nu":"11111111111","ischeck":"0","condition":"B00","com":"yuantong","status":"200","state":"1","data":[{"time":"2020-02-11 11:59:11","ftime":"2020-02-11 11:59:11","context":"揽收任务已分配给王国贤,配送员电话17767187183","location":""}]}
后续,你只须要在调用云函数的时候,经过 data 参数,传入快递公司,以及快递单号,就能够完成接口的查询了。
最后,咱们再总结一下。由于小程序限制了 request 的请求必须是备案域名,且必须有 https,若是你想要请求一个没有备案,或者没有 HTTPS 证书的 API,能够借助云函数环境下不受任何限制的 HTTP 请求来获取到数据,并经过云函数的返回,返回给小程序端使用。这样,就能够很方便的绕太小程序请求的一些限制。