小程序如何访问未备案的 API | 云开发

在开发小程序的时候,常常会用到一些第三方的 API。可是第三方的 API 每每会有各类各样的问题,好比:javascript

  1. 没有HTTPS
  2. 没有备案
  3. 小程序不支持其中的一些方法

等等。可是,在业务中,咱们又必需要使用这些接口,应该如何操做呢?java

使用云开发中转

一个比较简单的方法,就是使用云开发来作中转。将有限制的小程序请求,转化为没有限制的云函数请求,就能够轻松实现未备案、无 HTTPS 接口的请求。npm

具体实现方式

在具体的实现时,主要有如下几个步骤:json

  1. 建立用于中转的云函数
  2. 编写请求代码
  3. 上传并部署云函数
  4. 在小程序端请求云函数

代码部分

咱们重点讲解一下「请求代码的建立」和「在小程序请求云函数」小程序

API 介绍

假设咱们要请求快递 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 请求来获取到数据,并经过云函数的返回,返回给小程序端使用。这样,就能够很方便的绕太小程序请求的一些限制。

相关文章
相关标签/搜索