您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 营销创新 > 微信小程序网络API
第05章小程序网络API《微信小程序开发零基础入门》•主讲老师:XXX•学校名称:XXX01小程序网络基础02发起请求03文件传输01小程序网络基础01小程序网络基础小程序和服务器通讯的架构也可以称为C/S架构,即客户端/服务器(Client/Server)架构。小程序和服务器的通讯原理大致如图所示。小程序/服务器架构0101小程序网络基础1.关于请求小程序向服务器发起的网络请求,注意事项如下:•默认超时时间和最大超时时间都是60s;•request、uploadFile、downloadFile的最大并发限制是10个;•网络请求的refererheader不可设置。其格式固定为;{appid}/{version}/page-frame.html,其中{appid}为小程序的appid,{version}为小程序的版本号,版本号为0表示为开发版、体验版以及审核版本,版本号为devtools表示为开发者工具,其余为正式版本;•小程序进入后台运行后(非置顶聊天),如果5s内网络请求没有结束,会回调错误信息failinterrupted;在回到前台之前,网络请求接口调用都会无法调用。小程序/服务器架构0101小程序网络基础2.关于服务器返回1)返回值编码小程序会自动对BOM头进行过滤,且建议服务器返回值使用UTF-8编码。对于非UTF-8编码,小程序会尝试进行转换,但是会有转换失败的可能。2)回调只要成功接收到服务器返回,无论statusCode是多少,都会进入success回调。请开发者根据业务逻辑对返回值进行判断。小程序/服务器架构0101小程序网络基础3.关于JSON语法格式小程序网络API在发起网络请求时使用JSON格式的文本进行数据交换。JSON(JavaScriptObjectNotation)是基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-Dec1999的一个子集,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,易于人阅读和编写;但是也使用了类似于C语言家族(包括C,C++,C#,Java,JavaScript,Perl,Python等)的习惯,因此也易于机器解析和生成。这些特性使JSON成为理想的数据交换语言。小程序/服务器架构0101小程序网络基础3.关于JSON语法格式JSON字符串通常有两种构建形式:•一是“名称/值”对的集合;•二是值的有序列表。小程序/服务器架构0101小程序网络基础3.关于JSON语法格式1)“名称/值”对的集合“名称/值”对(name/valuepair)的集合在不同的计算机语言中可以被理解为:对象(object)、纪录(record)、结构(struct)、字典(dictionary)、哈希表(hashtable)、有键列表(keyedlist)或关联数组(associativearray)等。小程序/服务器架构0101小程序网络基础3.关于JSON语法格式1)“名称/值”对的集合名称可以由开发者自定义,例如studentID、username等;值是自定义名称所对应的数据值,共有以下6种类型的取值:•string:字符串,需要用引号括起来,例如'hello';•number:数值,例如123;•boolean:布尔值,例如false;•null:空值,例如null;•object:对象,例如{username:'admin',password:'123456abc'};•array:数组,例如[1,2,3,4,5]。上述这些取值类型可以互相嵌套形成复合的值。小程序/服务器架构0101小程序网络基础3.关于JSON语法格式1)“名称/值”对的集合“名称/值”对的集合通常使用大括号包含里面的全部内容,示例格式如下:小程序/服务器架构01{名称1:值1,名称2:值2,…名称N:值N}01小程序网络基础3.关于JSON语法格式1)“名称/值”对的集合例如:小程序/服务器架构01//1.单个名称/值对varjson1={x:123}//2.多个名称/值对varjson2={x1:123,x2:'hello',x3:true}//3.嵌套组合的名称/值对varjson3={x1:[1,2,3,4,5],x2:'hello',x3:{y1:false,y2:null,}}//假如想获得json3中的y1的值false,写法是json3.x3.y1。01小程序网络基础3.关于JSON语法格式1)“名称/值”对的集合以微信用户信息数据为例,返回的JSON文本如下:小程序/服务器架构01detail:{userinfo:{nickname:'张三',gender:1,city:Shanghai……},……}01小程序网络基础3.关于JSON语法格式2)值的有序列表值的有序列表在绝大部分计算机语言中均可以被理解为:数组(array)。值的有序列表通常使用中括号包含里面的全部内容,示例格式如右边所示。这里值的类型与前面“名称/值”对的集合中的取值类型完全一样,不再赘述。小程序/服务器架构01[值1,值2,…值N]01小程序网络基础3.关于JSON语法格式2)值的有序列表例如:小程序/服务器架构01//1.数字取值varjson1=[111,222,333]//2.布尔值取值varjson2=[true,false,true]//3.对象取值varjson3=[{username:'zhangsan',password:'123',city:'Wuhu'},{username:'lisi',password:'456',city:'Hefei'},{username:'wangwu',password:'789',city:'Xuancheng'}]//假如想要获取json3中第1个用户的所在城市,写法是json3[0].city。01小程序网络基础每一个小程序在与指定域名地址进行网络通信前都必须将该域名地址添加到管理员后台白名单中。相关知识如下:1.配置流程2.HTTPS证书3.跳过域名校验服务器域名配置0201小程序网络基础1.配置流程小程序开发者登陆mp.weixin.qq.com进入管理员后台,选择【设置】—【开发设置】—【服务器域名】进行添加或修改需要进行网络通讯的服务器域名地址,如图所示。服务器域名配置0201小程序网络基础1.配置流程开发者可以填入自己或第三方的服务器域名地址,但配置时需要注意:•域名只支持https(request、uploadFile、downloadFile)和wss(connectSocket)协议;•域名不能使用IP地址或localhost;域名必须经过ICP备案;•出于安全考虑,api.weixin.qq.com不能被配置为服务器域名,相关API也不能在小程序内调用。开发者应将appsecret保存到后台服务器中,通过服务器使用appsecret获取accesstoken,并调用相关API;每类接口分别可以配置最多20个域名。配置完之后再登陆小程序开发工具就可以测试小程序与指定的服务器域名地址之间的网络通讯情况了,注意每个月只可以申请修改5次。服务器域名配置0201小程序网络基础2.HTTPS证书需要注意的是,小程序必须使用HTTPS请求,普通的HTTP请求是不能用于正式环境的。判断HTTPS请求的依据是小程序内会对服务器域名使用的HTTPS证书进行校验,如果校验失败,则请求不能成功发起。因此开发者如果选择自己的服务器需要在服务器上自行安装HTTPS证书,选择第三方服务器则需要确保其HTTPS证书有效即可。服务器域名配置0201小程序网络基础2.HTTPS证书小程序对证书要求如下:•HTTPS证书必须有效。证书必须被系统信任,部署SSL证书的网站域名必须与证书颁发的域名一致,证书必须在有效期内;•iOS不支持自签名证书;•iOS下证书必须满足苹果AppTransportSecurity(ATS)的要求;•TLS必须支持1.2及以上版本。部分旧Android机型还未支持TLS1.2,请确保HTTPS服务器的TLS版本支持1.2及以下版本;•部分CA可能不被操作系统信任(例如Chrome56/57内核对WoSign、StartCom证书限制),请开发者在选择证书时注意小程序和各系统的相关通告。服务器域名配置0201小程序网络基础2.HTTPS证书小程序对证书要求如下:•HTTPS证书必须有效。证书必须被系统信任,部署SSL证书的网站域名必须与证书颁发的域名一致,证书必须在有效期内;•iOS不支持自签名证书;•iOS下证书必须满足苹果AppTransportSecurity(ATS)的要求;•TLS必须支持1.2及以上版本。部分旧Android机型还未支持TLS1.2,请确保HTTPS服务器的TLS版本支持1.2及以下版本;•部分CA可能不被操作系统信任(例如Chrome56/57内核对WoSign、StartCom证书限制),请开发者在选择证书时注意小程序和各系统的相关通告。服务器域名配置0201小程序网络基础3.跳过域名校验如果开发者暂时无法登记有效域名,可以在开发和测试环节暂时跳过域名校验。具体做法是在微信web开发者工具中找到右上角【详情】按钮,单击打开浮窗然后勾选【不校验请求域名、web-view(业务域名)、TLS版本及HTTPS证书】选项,如图所示。服务器域名配置0201小程序网络基础1.软件部署若开发者条件受限,可以将PC端临时部署为模拟服务器进行开发和测试。小程序对服务器端没有软件和语言的限制条件,用户可以根据自己实际情况选择Apache、Ngnix、Tomcat等任意一款服务器软件进行安装部署,以及选用PHP、Node.js、J2EE等任意一种语言进行后端开发。临时服务器部署0301小程序网络基础1.软件部署这里以phpstudy2016套装软件(包含了Apache和PHP)为例,部署步骤如下:•下载安装包,在PC端中双击安装;•完成后启动Apache服务器;•在目录下创建自定义目录,例如miniDemo;此时就临时部署完毕,用户可以随时更改服务器上的目录地址和PHP文件代码。临时服务器部署0301小程序网络基础2.网络请求服务器的目录就是根目录,它的网络地址是:或。开发者可以在根目录下自行创建目录和文件,例如在miniDemo中创建了test.php文件,那么网络请求地址就是:。临时服务器部署0301小程序网络基础2.网络请求PHP文件的返回语句是echo,例如:这样小程序将会收到引号里面的文字内容。开发者也可以直接用浏览器访问该地址,能获得同样的文字内容,因此可以在开发之前直接使用浏览器测试PHP文件是否正确。临时服务器部署03?phpecho'网络请求成功!';?01小程序网络基础2.网络请求需要注意的是,本地模拟服务器地址只能用于学习或测试阶段,带有无效域名的小程序是无法正式发布上线的。未来在正式服务器域名配置成功后,建议开发者更新网络请求地址并在各平台下进行测试,以确认服务器域名配置正确。临时服务器部署0302发起请求02发起请求小程序使用wx.request(OBJECT)发起网络请求,OBJECT参数说明如表所示。发起请求01参数名类型必填说明urlString是开发者或第三方服务器接口地址dataObject/String/ArrayBuffer否请求的参数headerObject否设置请求的header,header中不能设置Referer(其中content-type默认为'application/json')methodString否有效值:OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,CONNECT
本文标题:微信小程序网络API
链接地址:https://www.777doc.com/doc-4181240 .html