用户工具

站点工具


mina:api_interface

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
mina:api_interface [2020/08/22 12:17] sabertoymina:api_interface [未知日期] (当前版本) – 外部编辑 (未知日期) 127.0.0.1
行 1: 行 1:
 ====== 6.API 接口 ====== ====== 6.API 接口 ======
 +
 +[[https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html|微信开放文档API]]
 +
 +===== -#1 类型 =====
 +
 +==== - 事件监听 API ====
 +
 +以<wrap em> on</wrap> 开头的 API 用来监听某个事件是否触发,如:wx.onSocketOpen,wx.onCompassChange 等。
 +
 +接受一个<wrap hi>回调函数</wrap>作为参数,当事件触发时会调用这个回调函数,并将相关数据以参数形式传入。
 +
 +<code javascript>
 +wx.onCompassChange(function (res) {
 +  console.log(res.direction)
 +})
 +</code> 
 +
 +==== - 同步 API ====
 +
 +以 Sync 结尾的 API 都是同步 API, 如 wx.setStorageSync,wx.getSystemInfoSync 等。
 +
 +同步 API 的执行结果可以通过函数返回值直接获取,如果执行出错会抛出异常。
 +
 +<code javascript>
 +try {
 +  wx.setStorageSync('key', 'value')
 +} catch (e) {
 +  console.error(e)
 +}
 +</code> 
 +
 +==== - 异步 API ====
 +
 +大多数 API 都是异步 API,如 wx.request,wx.login 等。这类 API 接口通常都接受一个 Object 类型的参数。
 +
 +[[https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/api.html#API|Object 参数说明]]
 +
 +[[https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/api.html#API|回调函数的参数]]
 +
 +success,fail,complete 函数调用时会传入一个 Object 类型参数
 +
 +==== - 异步API返回Promise ====
 +
 +异步 API 支持 callback & promise 两种调用方式。
 +
 +<code javascript>
 +// callback 形式调用
 +wx.chooseImage({
 +  success(res) {
 +    console.log('res:', res)
 +  }
 +})
 +</code>
 +
 +<code javascript>
 +// promise 形式调用
 +wx.chooseImage().then(res => console.log('res: ', res))
 +</code>
  
 ===== API发起请求 wx.request ===== ===== API发起请求 wx.request =====
行 20: 行 78:
   },   },
   header:{   header:{
-      "Content-Type":"application/json"+      "Content-Type":"application/json" //返回的数据是什么类型
   },   },
   success: function(res) {   success: function(res) {
行 47: 行 105:
  
  
-[[https://www.jianshu.com/p/63585bdbdbc2|如何将接口获取到的数据展示到微信小程序上]] \\+==== 以天气api为例 ==== 
 + 
 + [[https://www.jianshu.com/p/63585bdbdbc2|如何将接口获取到的数据展示到微信小程序上]] \\
  
 <code javascript> <code javascript>
 +//获取数据
 wx.request({ wx.request({
   url: '******', //这里填写你的接口路径   url: '******', //这里填写你的接口路径
行 66: 行 127:
 }) })
 </code> </code>
 +
 +<code javascript>
 +// js文件
 +  onLoad: function () {
 +    var that = this//不要漏了这句,很重要
 +    wx.request({
 +      url: 'https://www.apiopen.top/weatherApi?city=成都',
 +      headers: {
 +        'Content-Type': 'application/json'
 +      },
 +      success: function (res) {
 +         that.setData({
 +           date: res.data.data.forecast[0].date,
 +                  fengxiang: res.data.data.forecast[0].fengxiang,
 +                  type: res.data.data.forecast[0].type
 +           //res代表success函数的事件对,data是固定的,fengxiang是是上面json数据中fengxiang
 +         })
 +      }
 +    })
 +  }
 +</code>
 +
 +<code wxml>
 +//wxml文件
 +{{date}}
 +{{fengxiang}}
 +{{type}}
 +</code>
 +
 +==== 封装公共参数 ====
  
 [[https://www.jianshu.com/p/c732123feadd|小程序封装wx.request]] [[https://www.jianshu.com/p/c732123feadd|小程序封装wx.request]]
 +
 +===== wx.setStorageSync =====
 +
 +  * 参数 string key 本地缓存中指定的 key
 +  * any data 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。
 +
 +<code javascript>
 +try {
 +  wx.setStorageSync('key', 'value')
 +} catch (e) { }
 +</code>
 +
 +使用场景
 +
 +小程序在获取用户授权后,获取用户的昵称和头像且会从数据库查询两个值显示到首页页面。
 +已经取得授权的情况下刷新,可以不弹框直接获取昵称和头像。此时也需要将数据库中的值显示到首页页面。
 +显然,再次向后台发出请求,获取数据库中的值是无法实现的。因为在页面显示的变量名是固定的,两次请求返回的值赋给同一个变量无法实现,且网络请求的先后顺序也不能确定。
 +
 +使用
 +
 +此种情况,就需要将首次查询(点击授权按钮)的值存入到本地缓存中,
 +当再次刷新时,将缓存中的值显示到页面上。
 +[[https://blog.csdn.net/java13245/article/details/103639697|微信小程序:数据缓存及使用(wx.setStorageSync(string key, any data), wx.getStorageSync(string key))]]
 +
 +
 +===== wx.getStorageSync =====
 +
 +从本地缓存中获取指定 key 的内容,wx.getStorage 的同步版本 [[https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.getStorageSync.html|any wx.getStorageSync(string key)]]
 +
 +
 +  * 参数 string key  本地缓存中指定的 key
 +  * 返回值 any data key对应的内容
 +
 +<code javascript>
 +try {
 +  var value = wx.getStorageSync('key')
 +  if (value) {
 +    // Do something with return value
 +  }
 +} catch (e) {
 +  // Do something when catch error
 +}
 +</code>
  
 ===== 媒体 ===== ===== 媒体 =====
mina/api_interface.1598069846.txt.gz · 最后更改: 2020/08/22 12:17 由 sabertoy