API简介与使用网络注意事项

API简介

小程序的一些功能就有依赖框架提供的API完成,随着小程序的更新迭代,目前小程序框架API已经达到了16大类,即:
基础、路由、界面、网络、数据缓存、媒体、位置、转发(前面的这几类优先重点掌握)、画布、文件、开发接口、设备、WORKER、第三方平台、WXML、广告。(微信小程序开发文档)
当然这么多的API并不需要我们一个个去详细研究,而是建议我们重点掌握常用的API如何查阅和使用,然后即可触类旁通去使用其他的API,就像查字典,我们知道如何去查阅就可以了。
小程序API在定义和使用上的一些通则。

1、以wx.on开头的API,如wx.onSockectOpen、wx.onBackgroundAudioPlay()、wx.CompassChange()等,均代表监听某个事件发生的API接口,这类接口一般来说参数均为一个callback()回调函数,当事件触发时,会回调函数。
2、其他不以wx.on开头的API,如:wx.request、wx.uploadFile、wx.chooseImage,这类接口没有特殊约定,通常接受一个Object对象作为参数,在Object中可以指定success、fail、complete来接收接口回调的结果,这三个回调函数在有些API中具有返回值,而有些则没有。

网络

在小程序/小游戏中使用网络相关的 API 时,需要注意下列问题,请开发者提前了解。

1、服务器域名配置

每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket)。

从基础库 2.4.0 开始,网络接口允许与局域网 IP 通信,但要注意 不允许与本机 IP 通信。
从 2.7.0 开始,提供了 UDP 通信(wx.createUDPSocket)。

配置流程

服务器域名请在 「小程序后台-开发-开发设置-服务器域名」 中进行配置,配置时需要注意:

1、域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议;
2、域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost;
3、可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080 发起请求。如果向 https://myserver.com、https://myserver.com:9091 等 URL 请求则会失败。
4、如果不配置端口。如 https://myserver.com,那么请求的 URL 中也不能包含端口,甚至是默认的 443 端口也不可以。如果向 https://myserver.com:443 请求则会失败。
5、域名必须经过 ICP 备案
6、出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。 开发者应将 AppSecret 保存到后台服务器中,通过服务器使用 getAccessToken 接口获取 access_token,并调用相关 API;
7、对于每个接口,分别可以配置最多 20 个域名

2、网络请求

超时时间

1、默认超时时间和最大超时时间都是 60s;
2、超时时间可以在 app.json (小程序)或 game.json(小游戏) 中通过 networktimeout 配置。

#使用限制

1、网络请求的 referer header 不可设置。其格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本;
2、wx.request、wx.uploadFile、wx.downloadFile 的最大并发限制是 10 个
3、wx.connectSocket 的最大并发限制是 5 个
4、小程序进入后台运行后,如果 5s 内网络请求没有结束,会回调错误信息 fail interrupted;在回到前台之前,网络请求接口调用都会无法调用。

返回值编码

1、建议服务器返回值使用 UTF-8 编码。对于非 UTF-8 编码,小程序会尝试进行转换,但是会有转换失败的可能。
2、小程序会自动对 BOM 头进行过滤(只过滤一个BOM头)。

回调函数

只要成功接收到服务器返回,无论 statusCode 是多少,都会进入 success 回调。请开发者根据业务逻辑对返回值进行判断

3. 常见问题

HTTPS 证书

小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

对证书要求如下:

1、HTTPS 证书必须有效;
证书必须被系统信任,即根证书被已系统内置
部署 SSL 证书的网站域名必须与证书颁发的域名一致
证书必须在有效期内
证书的信任链必需完整(需要服务器配置)
2、iOS 不支持自签名证书;
3、iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求;
4、TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持 1.2 及以下版本;
5、部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。
Chrome 56/57 内核对 WoSign、StartCom 证书限制周知
6、证书有效性可以使用 openssl s_client -connect example.com:443 命令验证,也可以使用其他在线工具。

除了网络请求 API 外,小程序中其他 HTTPS 请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。

跳过域名校验

在微信开发者工具中,可以临时开启 开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。

在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值