• 媒体品牌
    爱范儿
    关注明日产品的数字潮牌
    APPSO
    先进工具,先知先行,AIGC 的灵感指南
    董车会
    造车新时代,明日出行家
    玩物志
    探索城市新生活方式,做你的明日生活指南
  • 知晓云
  • 制糖工厂
    扫描小程序码,了解更多

开发 | 网络接口全攻略!这些技巧,让你的小程序永不「失联」

小程序

2017-10-29 12:00

文 | OkayChen

知晓程序注:

几乎所有的小程序,都会用到网络接口。

微信为小程序提供了 4 个接口,供小程序访问网络。如果你刚开始接触小程序开发,也许会对小程序网络访问产生不少的疑问。

今天知晓程序(微信号 zxcx0101)推荐的文章,就来为大家总结,有关小程序网络接口开发过程中所遇到的问题,希望可以帮你解决一些疑问。

关注「知晓程序」微信公众号,回复「开发」,获取小程序开发全套经验。


写在前面

之前,我负责某个小程序项目的大部分前端后台接口的对接,然后学长帮我改了一些问题。总的来说,收获了不少吧!

现在,项目已经完成,还是要陆陆续续总结一下的,总结的过程也是对知识梳理和清晰的过程。这次,我们主要聊一下小程序前后端接口对接的一些事。

对于客户端与服务端接口的对接,微信小程序提供了 wx.request() 的 API 接口,完美地实现前端后台的对接

一个简单的栗子:

wx.request({
  url: API_URL + '/api/category/categoryList',
  data: {
    applet_id: app.globalData.applet_id
  },
  method: 'POST',
  success: function (res) {
    wx.hideLoading();
    console.log(res.data.data, 'category data acquisition success');
    that.setData({
      category: res.data.data
    });
  }
});

在控制台中,可以看到,我得到了我想要的接口中的数据:

但期间也遇到了几个问题,现在就来总结一下。

1. 网络请求与域名的合法性

微信小程序包括四种类型的网络请求:

  • 普通 HTTPS 请求(wx.request
  • 上传文件(wx.uploadFile
  • 下载文件(wx.downloadFile
  • WebSocket 通信(wx.connectSocket

大家可以根据实际需要,选择对应接口。

需要注意的是,调试时可能会出现「URL 域名不合法,请在后台配置后重试」的错误。这是因为小程序只允许与合法配置的域名,进行数据交互。

进入微信公共平台,选择「设置」-「开发设置」,可以设置需要交互的域名。

2. 对于接口调用 HTTP 和 HTTPS 的问题

在之前来说,微信公共平台支持使用 HTTP 测试项目,但是正式发布需要使用 HTTPS 的域名,

但是前几天,微信公众平台发布了一则公告,应该是要「封杀」HTTP 方式调用了。

3. 关于 method 以及 data 数据

微信小程序多地方都严格区分大小写,所以要注意 method 的值需要为全大写,request 的默认的超时时间都是 60s

对于 data 数据,上次我们从接口中拿到的数据,是 JSON 格式的,最终发送给服务器的数据是 String 类型。如果传入的 data 不是 String 类型,会被转换成 String

文档中提供的转换规则如下:

  • 对于 header['content-type'] 为 application/json 的数据,会对数据进行 JSON 序列化
  • 对于 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string

这个工作在我们设置 header 头为 application/x-www-form-urlencoded 后,默认为我们进行。

4. 关于 GET 和 POST 请求

根据 HTTP 的规范,GET 方法用于信息获取,POST 表示需要修改服务器的资源的请求

对于小程序的 POST 请求,如果 'application/json' 用在 GET 请求中没有问题,但是用在 POST 请求中不好使了,这是因为 POST 请求的 content-type 默认为 'application/json'

如有需要,使用 POST 请求时可考虑将 content-type 设置为 application/x-www-form-urlencoded。

写在最后

总结了以上四个问题,应该是比较常见也是容易遇到的,欢迎补充和指正。

另外,在小程序文档中,API 模块还有一些需要注意的问题,开发时务必要注意。

原文地址:
http://www.cnblogs.com/okaychen/p/7655601.html

关注「知晓程序」公众号 👇

  • 在微信后台回复「开发」,获取小程序开发全套经验。
  • 在微信后台回复「定制」,做一个属于你的小程序。

登录,参与讨论前请先登录

评论在审核通过后将对所有人可见

正在加载中

小程序商店 minapp.com,一扫即用的小程序大全。微信公众号「知晓程序」,做中国最好的小程序报道。

本篇来自栏目

解锁订阅模式,获得更多专属优质内容