微信小程序开发 | API应用案例(上)

news2024/11/25 16:03:48

API应用案例(上)

  • 5.1【案例1】用户登录
    • 5.1.1 案例分析
    • 5.1.2 前导知识
    • 5.1.3 搭建开发者服务器
    • 5.1.4 实现用户登录
    • 5.1.5 检查用户是否已经登录
    • 5.1.6 获取用户信息
    • 5.1.7 开放数据校验与解密
  • 5.2【案例2】个人中心
    • 5.2.1 案例分析
    • 5.2.2 前导知识
    • 5.2.3 实现底部标签页切换
    • 5.2.4 编辑个人资料
    • 5.2.5 订单物流查询
    • 5.2.6 选择收货地址
    • 5.2.7 客服联系电话
  • 5.3【案例3】天气预报查询
    • 5.3.1 案例分析
    • 5.3.2 前导知识
    • 5.3.3 动态获取输入的城市名
    • 5.3.4 请求天气接口数据
    • 5.3.5 渲染界面展示数据
  • 5.4【案例4】查看附近的美食餐厅
    • 5.4.1 案例分析
    • 5.4.2 前导知识
    • 5.4.3 设计地图界面
    • 5.4.4 单击控件回到中心点
    • 5.4.5 视野变化获取中心点坐标
  • 总结

5.1【案例1】用户登录

5.1.1 案例分析

用户登录是微信小程序必不可少的环节,一个完整的登录功能还包括用户的信息获取、登录的状态判定等。下图为未登录和已登录页面效果图。
在这里插入图片描述

5.1.2 前导知识

小程序通过微信官方提供的,获取微信提登录能力供的用户身份标识,建立用户体系。用户登录流程时序图(下图所示):
在这里插入图片描述

用户登录流程需要小程序、开发者服务器和微信接口服务3个角色的参与,
下面介绍这3个角色的作用

  • 小程序:用户使用的客户端,由于小程序运行在微信之上,因此小程序可以通过API获取微信用户的身份信息。
  • 开发者服务器:小程序的后端服务器,用于为小程序用户提供服务。
  • 微信接口服务:微信为开发者服务器提供的接口。

登录流程具体细节

  • 小程序获取code。
  • 小程序将code发送给开发者服务器。
  • 开发者服务器通过微信接口服务校验登录凭证。
  • 开发者服务器自定义登录态。

数据缓存:缓存数据,从而在小程序退出后再次打开时,可以从缓存中读取上次保存的数据,常用的数据缓存API如下表所示:
在这里插入图片描述

保存数据缓存示例代码如下:
在这里插入图片描述

获取缓存数据示例代码如下:
在这里插入图片描述

5.1.3 搭建开发者服务器

本节选择使用Node.js搭建开发者服务器,安装Node.js,创建项目

  1. 初始化项目,将会自动创建package.json配置文件。
    在这里插入图片描述
  2. 安装Express框架和request模块。
    在这里插入图片描述
  3. 安装nodemon监控文件修改(如果已经安装则跳过此步)。
    在这里插入图片描述

执行上述命令后,在项目目录下创建index.js文件,编写代码如下:

  1. 引入Express框架和request模块,配置appid和secret。
    在这里插入图片描述
  2. 模拟数据库。
    在这里插入图片描述
  3. 请求登录接口,校验登录凭证的微信接口URL地址。
    在这里插入图片描述
  4. 处理判断语句代码。
    在这里插入图片描述
  5. 暴露对外访问接口地址。
    在这里插入图片描述

保存上述代码后,执行如下命令,启动开发者服务器。
在这里插入图片描述

5.1.4 实现用户登录

创建一个空白项目,在app.js文件中编写代码,实现小程序启动时自动执行登录操作。
在这里插入图片描述

请求login登录接口。
在这里插入图片描述

执行上述代码,控制台中打印出login code和token的值。
在这里插入图片描述

在开发者服务器的控制台中,打印出login code和session的值。
在这里插入图片描述

5.1.5 检查用户是否已经登录

注意
判断数据缓存中是否存在token如果存在,取出数据缓存中的token值,不用再执行登录操作。需要注意的是,token有可能会过期,需要重新登录,这就需要从数据缓存中取出token后,先验证token是否过期,再使用token。

进入app.js中编写checkLogin()函数,判断token是否存在。
在这里插入图片描述

如果token存在,判断token是否有效。
在这里插入图片描述

修改app.js中onLaunch()函数,用于在小程序启动后检查用户是否已经登录,如果没有登录则执行登录操作。
在这里插入图片描述

5.1.6 获取用户信息

获取用户信息的两种常用方式如下:

  • 使用< open-data>组件的方式。
  • 单击按钮提示授权的方式。
  1. 使用< open-data>组件来获取
    特点:不需要用户授权,可以直接显示用户的头像、昵称、性别等,适合只用来展示信息的情况。
    在这里插入图片描述
  2. 单击按钮提示授权的方式
    用法:如果“!hasUserInfo”值为true,表示没有获取到用户信息,显示“获取头像昵称”按钮;如果值为false,则将用户信息显示在页面中。
    在这里插入图片描述
    在这里插入图片描述
    用法:在app.js文件的onLaunch()函数中,编写如下代码,在下次启动时判断是否已经授权。
    在这里插入图片描述
    用法:在app.js文件的globalData中增加userInfo,编写如下代码。
    在这里插入图片描述
    调用:在其他页面通过app.globalData.userInfo获取到用户信息。

5.1.7 开放数据校验与解密

使用场景:开发者服务器想要获取用户信息,需要在小程序端通过
wx.request()请求来获取。
使用弊端:无法辨别数据的真伪。
解决办法:利用小程序提供的开放数据的校验和解密机制。

5.2【案例2】个人中心

5.2.1 案例分析

个人中心案例设计了两个标签页,“首页”展示个人的基本信息及简单的自我介绍;“个人中心”底部标签页任务需求如下:
展示个人资料:展示头像、昵称、性别等信息。
订单物流查询:输入订单号和快递公司查询物流信息。
选择收货地址:调用开放接口,访问系统收货地址,进行选择。
客服联系电话:调用开放接口, 访问通讯录,拨打客服电话。

同时设计两个标签页,通过这两个标签页来实现页面之间的跳转。
任务需求如下:

  • 实现标签页与标签页之间的跳转
  • 实现标签页与非标签页之间的跳转。
  • 实现非标签页与非标签页之间的跳转

页面效果图:
在这里插入图片描述

5.2.2 前导知识

  1. wx.switchTab(只能跳转到tabBar页面,并关闭其他所有非tabBar页面)
    wx.switchTab常用属性
    在这里插入图片描述

  2. wx.navigateTo(跳转到应用内的某个页面,且保留当前页面)

  3. wx.redirectTo(跳转到应用内的某个页面,且关闭当前页面)
    wx. navigateTo、wx.redirectTo常用属性
    在这里插入图片描述

  4. wx. reLaunch(关闭所有页面,打开到应用内的某个页面。既能跳转到标签页,又能跳转到非标签页)

  5. wx.chooseImage() 从本地相册选择图片或使用相机拍照

  6. wx.chooseAddress()调起用户编辑收货地址原生界面

  7. wx.makePhoneCall()调起用户通讯录,拨打电话

5.2.3 实现底部标签页切换

在“首页”中单击头像上方提示语“点我跳转”,进入到 “个人中心页面”;这两个页面都属于tabBar页面,所以使用wx.swichTab或者wx.reLaunch方式。

  1. 在app.js文件,配置tabBar
  2. 在index.wxml文件,为头像绑定changeImage()函数
  3. 在index.js文件,编写changeImage()函数
    在这里插入图片描述

5.2.4 编辑个人资料

  1. 进入详情页
    在这里插入图片描述
  2. 上传头像
    在这里插入图片描述
  3. 进入修改资料详情页单击“修改资料按钮”
    在这里插入图片描述
  4. 进入个人资料修改页提交表单
    在这里插入图片描述

5.2.5 订单物流查询

在本任务中,将会实现订单物流查询功能,在“个人中心”页单击“订单物流查询”跳转到 pages/order/order“订单查询”页面。
功能需求如下:

  • 选择快递公司。
  • 输入运单号。
  • 单击查询按钮,在页面下方展示物流信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.6 选择收货地址

在本任务中,将会实现选择收货地址功能,在“个人中心”页单击“选择收货地址”跳转到 pages/address/address “收货地址”页面。
功能需求如下:

  • 单击“获取收货地址”按钮,进行地址选择。
  • 在收货地址表单中会渲染数据。

在这里插入图片描述
在这里插入图片描述

5.2.7 客服联系电话

在本任务中,将会实现拨打电话功能。
功能需求如下:

  • 在“个人中心”页单击“客服联系方式”。
  • 绑定拨打电话事件。
  • 调用拨打电话API(wx.makePhoneCall)。
    在这里插入图片描述

5.3【案例3】天气预报查询

5.3.1 案例分析

天气查询小程序,可以查询今日的天气状况,实时温度等信息。
功能需求如下:

  • 设置input输入框,在搜索框中输入要查询的城市名称。
  • 设置button按钮,单击搜索图标调用接口进行查询。
  • 将查询数据展示在页面中。

5.3.2 前导知识

wx.request 发起HTTPS网络请求,一个小程序,同时只能有5个网络请求连接
在这里插入图片描述

5.3.3 动态获取输入的城市名

在这里插入图片描述

5.3.4 请求天气接口数据

在这里插入图片描述

5.3.5 渲染界面展示数据

在这里插入图片描述

5.4【案例4】查看附近的美食餐厅

5.4.1 案例分析

该案例使用腾讯地图SDK,配合地图组件和API进行调用,实现查看附近的美食餐厅小程序。
功能需求如下:

  • 初始化地图组件。
  • 单击banner图跳转到优惠券页面。
  • 触发图标回到中心点位置。
  • 页面中用图标标记搜索到的附近餐厅。

页面效果图:
在这里插入图片描述

5.4.2 前导知识

  1. 腾讯地图SDK接入。
    • 申请开发者密钥。
    • 下载微信小程序JavaScriptSDK。
    • 登录微信公众平台,设置request合法域名。
    • 引入SDK核心代码。
  2. wx.getSystemInfo()获取设备的高度和宽度,示例代码如下:
    在这里插入图片描述
  3. markers标记点,示例代码如下:
    在这里插入图片描述
  4. controls 地图显示控件,示例代码如下:
    在这里插入图片描述

5.4.3 设计地图界面

在这里插入图片描述
在这里插入图片描述

5.4.4 单击控件回到中心点

在这里插入图片描述

5.4.5 视野变化获取中心点坐标

在这里插入图片描述

总结

本章介绍了微信小程序中的API功能,包括使用小程序开放接口获取用户的信息、授权登录、添加用户收货地址,调起相机、相册选择图片等,同时也使用腾讯地图插件SDK定位附近的美食餐厅。根据POST和GET两种请求方式,介绍了不同数据类型之间的转换规则。学习本章后,读者需要掌握小程序中常用的API方法,熟练地进行与服务器的数据交互,实现项目产品需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BE-SSL:基于边界增强自监督学习的脑结构分割

文章目录Boundary-Enhanced Self-supervised Learning for Brain Structure Segmentation摘要本文方法Supervoxel BranchRegistration BranchAtlas Selection实验结果Boundary-Enhanced Self-supervised Learning for Brain Structure Segmentation 摘要 边界增强自监督学习(…

用Pytorch搭建一个房价预测模型

本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 目录 一、项目介绍 二、准备工作 三、实验过程 3.1数据预处理 3.2拆分数据集 3.3构建PyTorch模型 3.3.1.数据转换 3.3.2定义模型架构 3.3.3定义损失准则和优化器 3.3.4创建…

Linux查看端口

目录 1.查看已知端口的使用情况 2.查看所有端口的占用情况 3.查看占用端口的程序的进程号 4.杀死进程号 1.查看已知端口的使用情况 #例:8080 可使用命令: netstat -anp | grep 8080 结果如下: 还可以使用这条命令: netstat -tln | grep 8080 结果如下: 区别:第一条命令后面显示…

评分卡模型(二)基于评分卡模型的用户付费预测

评分卡模型&#xff08;二&#xff09;基于评分卡模型的用户付费预测 小P&#xff1a;小H&#xff0c;这个评分卡是个好东西啊&#xff0c;那我这想要预测付费用户&#xff0c;能用它吗 小H&#xff1a;尽管用&#xff5e; &#xff08;本想继续薅流失预测的&#xff0c;但想了…

DevExpress WinForms电子表格控件,更快拥有现代办公体验!(二)

DevExpress WinForm Spreadsheet组件能读写XLSx、XLS、CSV、TXT文件、打印并导出为PDF等&#xff0c;为终端用户提供了当今流行的办公UI体验&#xff01;在上文中&#xff08;点击这里回顾>>&#xff09;&#xff0c;我们介绍了DevExpress WinForm中Excel启发式的电子表格…

【计算机网络-数据链路层】集线器、网桥、交换机

本文许多文字和图片使用了湖科大教书匠&#xff08;高军老师&#xff09;的 PPT&#xff0c;在此表示感谢。正是他让非科班的我能以奇妙的方式走进网络的世界。 文章目录1 【物理层】集线器&#xff08;Hub&#xff09;——共享式以太网1.1 为什么使用集线器&#xff1f;1.2 集…

救命,我好像发现了测试工程师面试通关秘籍

一、自我介绍 &#xff08;自我介绍不局限于下面模板&#xff0c;灵活表达&#xff09; 面试官你好&#xff0c;我叫xxx&#xff0c;今年xx岁&#xff0c;家乡是xx省xx市。20xx年毕业后一直从事软件测试工作&#xff0c;到现在已经x年了。 目前为止&#xff0c;经历过x家公司…

基于SpringBoot的大学生体质测试管理系统源码数据库论文

目录 目录 1 绪 论 1.1系统背景介绍 1.2课题研究的目的和意义 1.3系统的研究现状 1.4系统实现的功能 1.5系统的特点 2 开发工具和技术 2.1 B/S体系结构 2.2 Java语言简介 2.3 SpringBoot框架 2.4 MySQL简介 3 系统需求分析 3.1 系统可行性分析及目的…

JS数组reduce()方法详解及高级技巧

reduce()方法可以搞定的东西&#xff0c;for循环&#xff0c;或者forEach方法有时候也可以搞定&#xff0c;那为啥要用reduce()&#xff1f;这个问题&#xff0c;之前我也想过&#xff0c;要说原因还真找不到&#xff0c;唯一能找到的是&#xff1a;通往成功的道路有很多&#…

QtableWidget插入数据卡顿优化方法

最近要使用Qtablewidget保存4300多的数据&#xff0c;发现以下刷新4300条数据&#xff0c;界面会变得非常卡顿&#xff0c;于是想了优化一下&#xff1b;因为要对所有数据排序&#xff0c;想用一下Qtablewidget自动排序功能&#xff0c;而且数据量不多&#xff0c;不想采用动态…

【教学类-32-02】十二生肖2.0版(绘画+手工+排序+左右分类+玩牌)(中班:偏科学-数)

作品展示 2.0样式——动物头部方向随机向左、或者向右 背景需求 1.0样式——动物头部方向全部向右&#xff0c; 我希望孩子分类的时候还能够“判断生肖头部的方向做一个左右分类” 素材准备&#xff1a; 1、图片准备 office PPT2013里面有一个图标的功能&#xff0c;内置大量…

java继承类怎么写

继承类是通过把父类的方法和属性继承到一个类中&#xff0c;而子类的方法和属性是子类自己定义的。 Java中有一个很重要的概念叫做继承&#xff0c;这也是 Java语言的精髓所在。Java语言提供了一种机制&#xff0c;叫做派生类。在 Java中&#xff0c;如果没有实现了某个派生类方…

终端和文件运行python代码

如何创建python文件&#xff1f;新建一个txt&#xff0c;然后修改后缀名为 .py&#xff0c; 然后修改打开方式为记事本&#xff0c;写入一行代码&#xff0c;然后关闭 接下来如何运行呢&#xff1f;让他输出这一段代码 winR cmd 回车 &#xff0c;然后输入python 文件地址 我…

ChatGPT 未来的前景以及发展趋势

当谈到ChatGPT的未来和发展趋势时&#xff0c;需要考虑人工智能技术以及文本生成和交互的迅速发展。在这方面&#xff0c;ChatGPT的前景非常有希望&#xff0c;因为它是一种迄今为止最先进的人工智能技术之一。 ChatGPT是一种基于机器学习的自然语言处理技术&#xff0c;它能够…

MyBatis学习总结(四) MyBatis 延迟加载策略MyBatis 一级缓存、二级缓存MyBatis注解开发

MyBatis学习总结&#xff08;四&#xff09; MyBatis 延迟加载策略/MyBatis 一级缓存、二级缓存/MyBatis注解开发 一、 MyBatis 延迟加载策略 通过前面的学习&#xff0c;我们已经掌握了 MyBatis 中一对一&#xff08;多对一&#xff09;、一对多、多对多关系的配置及实现&am…

【Android入门到项目实战-- 5.1】—— 广播(一):接收系统广播

目录 一、什么是广播&#xff1f; 二、广播的类型 标准广播 有序广播 三、接收系统广播 1、动态注册监听网络变化 如何注册广播接收器&#xff1f; 2、静态注册实现开机启动 使用快捷方式创建广播接收器 实现开机广播 一、什么是广播&#xff1f; android广播机制就是…

全网最详细,Jmeter性能测试-性能进阶, 多协议实战Websocket/Dubbo(七)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 Jmeter是目前主流的…

自行车及电动自行车出口美国GCC认证要求

所有进口商和美国本土制造商都必须签发普通合格证书&#xff08;GCC&#xff09;证明其产品符合具体规定要求。进口商和本土制造商应向认可的第三方实验室提交样品测试其产品是否符合相关安全法规。提供第三方实验室测试报告&#xff0c;合格证书由进口商和本土制造商提供。在外…

pytorch通过不同的维度提高cifar10准确率

各个维度通过模型通过优化器通过batchsize通过数据增强总结当前网络的博客上都是普遍采用某个迁移学习训练cifar10&#xff0c;无论是vgg&#xff0c;resnet还是其他变种模型&#xff0c;最后通过实例代码&#xff0c;将cifar的acc达到95以上&#xff0c;本篇博客将采用不同的维…

九龙证券|300亿空袭,港股吓懵了!

港股再度大幅回调&#xff0c;腾讯成了“导火索”。 当地时刻4月11日&#xff0c;腾讯大股东Prosus发布公告称拟再度进行回购&#xff0c;作为回购方案的一部分&#xff0c;Prosus本周将采纳行动&#xff0c;把9600万股腾讯股票以凭据方式移入香港中心结算系统&#xff0c;以便…