【星海随笔】微信小程序(三)

【星海随笔】微信小程序(三)

码农世界 2024-05-24 后端 63 次浏览 0个评论
网络数据请求

1.小程序中网络数据请求的限制

出于安全性方面的考虑,小程序官方对 数据接口的请求 做出了如下

两个限制:

① 只能请求 HTTPS 类型的接口

② 必须将 接口的域名 添加到 信任列表 中

微信小程序只能请求 https 类型的接口

且需要请求的域名必须提前进行设置后,才可以通过微信小程序访问该请求

https://www.escook.cn/

配置方式: 登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名.

配置 request 合法域名

注意事项

  • 域名只支持 https 协议
  • 域名不能使用 IP 地址 或 localhost
  • 域名必须经过 ICP 备案
  • 服务器域名一个月最多可申请 5 次修改
    发起 GET 请求

    JSONPlaceholder 是一个提供免费的在线 REST API 的网站,我们在开发时可以使用它提供的 url 地址测试下网络请求以及请求参数。或者当我们程序需要获取一些假数据、假图片时也可以使用它。

    网站地址:http://jsonplaceholder.typicode.com/

    嘿嘿 重要的事情说三遍

    注:如果不在wx官网网站上设置自己要用到的网站地址,在微信开发者工具里是没办法使用的。

    所以需要在第三方区域有一个后端接口服务,这里暂时使用的是一个免费的API 接口网址进行测试,注:每月只能修改5次网址接口地址

    注:如果不在wx官网网站上设置自己要用到的网站地址,在微信开发者工具里是没办法使用的。

    所以需要在第三方区域有一个后端接口服务,这里暂时使用的是一个免费的API 接口网址进行测试,注:每月只能修改5次网址接口地址

    注:如果不在wx官网网站上设置自己要用到的网站地址,在微信开发者工具里是没办法使用的。

    所以需要在第三方区域有一个后端接口服务,这里暂时使用的是一个免费的API 接口网址进行测试,注:每月只能修改5次网址接口地址

    微信小程序中有个顶级对象是 wx

    调用微信小程序提供的 wx.request() 方法, 可以发起 GET 数据请求,示例代码如下:

    
    
    作者: 王鑫
    支持商业活动相关合作
    电话: 15135151098
    
    

    要和data处于同一级

    data 为发送到服务器的数据

    xxx {
      xxx
    },
    getInfor: function() {
        wx.request({
          url: 'https://example/api/get',  
          method: 'GET',
          data: {
            name: 'zs',
            age: 20
          },
          success: (res) => {
            console.log('请求成功'),
            console.log(res.data)
          },
          fail(err) {
            console.log('请求错误'),
            console.error('Error',err);
          },
          complete(res) {
            console.log("请求完成")
          }
        })
      },
      xxx {
        xxx
      },
    
    method: 'POST'
    请求方式
    
    在页面刚加载时请求数据

    在很多情况下,需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的onLoad事件中调用获取数据的函数,示例代码如下:

    当页面一加载,一开始,这个函数就会执行

    /**
    * 生命周期函数 -- 监听页面数据
    */
      onLoad: function (options) {
        this.getSwiperList()
        this.getGridList()
        this.getInfor()
      },
      // 获取轮播图的数据
      getSwiperList() { ...
      },
      // 获取九宫格的数据
      getGridList() { ...
      }
    }}
    

    如果后端没有https接口,仅提供http请求,也可以进行测验

    详情-> 本地设置->点击(不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS 证书 )

    注意:

    跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

    网络数据请求

    关于 跨域 和 Ajax 的说明

    跨域问题,只存在于 基于浏览器的 Web开发中。由于 小程序的宿主环境 不是浏览器,而是微信客户端

    所以小程序不存在跨域的问题。

    Ajax技术的核心是依赖于浏览器中的 XMLHttpRequest 这个对象,由于小程序的宿主环境是微信小程序,所以小程序中 不能叫做 “发起Ajax请求” , 而是叫做 “发起网络数据请求”。

    案例实现:

    首页效果以及实现

    ① 新建项目并梳理项目结构

    ② 配置导航栏效果

    ③ 配置tabBar效果

    ④ 实现轮播图效果

    ⑤ 实现九宫格效果

    ⑥ 实现图片布局

    导航栏

    app.json -> window

    页面配置中常用的配置项

    属性类型默认值描述
    navigationBarBackgroundColorHexColor#000000当前页面导航栏背景颜色,如 #000000
    navigationBarTextStyleStringwhite当前页面导航栏标题颜色,仅支持 black/white
    navigationBarTitleTextStringWeixin当前页面导航栏标题文字内容
    backgroundColorHexColor#ffffff当前页面窗口的背景色
    backgroundTextStyleStringdark当前页面下拉 loading 的样式,仅支持 dark/light
    enablePullDownRefreshBooleanfalse是否 为当前页面开启下拉刷新的效果
    onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为 px
    配置tabBar

    和window窗口平级

    "tabBar": {
        "list": [
          {
            "pagePath": "pages/home/home",
            "text": "home"
            // "iconPath": "iconpath",  // 未选中时候的图标。 例如 /image/tabs/home.png
            // "selectedIconPath": "selectIconpath"   //选中时候的图标
          },
          {
            "pagePath": "pages/contact/contact",
            "text": "text"
            // "iconPath": "iconpath",
            // "selectedIconPath": "selectIconpath"
          }
        ]
      },
    
    轮播图

    https://img-blog.csdnimg.cn

    想到一个好主意,免费撸CSDN的羊毛。

    
      
      
        石头
      
      
      
        剪刀
      
      
      
        
      
    	
    	  
    	
    
    
    获取轮播图数据的方法

    JS

    data: {
      swiperList: []
    },
    onLoad: function (option){
      this.getSwiperList()
    },
    getSwiperList(){
      wx.request() {
        url: 'https://img-blog.csdnimg.cn/xxx',
        method: 'GET',
        success: (res) => {
          console.log(res)
          this.setData({
            swiperList: res.data 
          })
        }
      }
    }
    

    wxml

    
      
        
      
    
    

    wxss

    swiper {
      height: 350rpx;
    }
    swiper image {
      width: 100%;
      height: 100%;
    }
    
    实现九宫格

    https://www.escook.cn/categories

    Also Need An List

    data: {
      // 存放九宫格的列表
      gridList: []
    },
    onLoad: function (option){
      this.getSwiperList()
      this.getGridList()
    },
    // 定义一个新的函数
    // 获取九宫格数据的方法
    getGridList() {
      wx.request({
        url: 'https://www.escook.cn/categories',
        method: 'GET',
        success: (res) => {
          console.log(res)   //打印了一个对象,里面就是一个九宫格的列表
          this.setData({
            gridList: res.data
          })
        }
      })
    },
    

    wxml

    
      
        
        {{item.name}}
    
    

    wxss

    .grid-list {
      display: flex;
      flex-wrap: wrap;
      border-left: 1rpx solid #efefef;
      border-top: 1rpx solid #efefef;
    }
    .grid-item {
      width: 33.33%;
      height: 200rpx;
      display:flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      border-right: 1rpx solid #efefef;
      border-bottom: 1rpx solid #efefef;
      box-sizing: border-box;
    }
    .grid-item image {
      width: 60rpx;
      height: 60rpx;
    }
    .grid-item text {
      font-size: 24rpx
      margin-top: 10rpx;
    }
    
    实现图片布局
    
      
      
    
    
    .img-box{
      display: flex;
      padding: 20rpx 10rpx;
      justify-content: space-around;
    }
    .img-box image {
      width: 45%;
    }
    

转载请注明来自码农世界,本文标题:《【星海随笔】微信小程序(三)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,63人围观)参与讨论

还没有评论,来说两句吧...

Top