微信小程序和服务器通信

简介: 如果你的小程序需要和远程的服务进行交互,比如访问你自己的或别人提供的远程API来操作数据(增删改查),那么你就需要一种和远程服务器进行通信的机制来完成这样的功能。

如果你的小程序需要和远程的服务进行交互,比如访问你自己的或别人提供的远程API来操作数据(增删改查),那么你就需要一种和远程服务器进行通信的机制来完成这样的功能。

基于浏览器的Web开发中,目前主要有2种主流的服务器通信方式:

  1. 通过Ajax发起HTTP请求访问REST API
  2. 通过WebSocket进行实时通信

小程序框架提供了一套自己的API,实现了跟以上2种方式基本等同的服务器访问方法。由于无论是调用REST API,还是WebSocket通信,都是基于http协议的,为了保证安全性,小程序框架规定在生产环境下,只能使用安全的http协议,即HTTPS,这个也是一个大趋势。而在开发环境下,为了方便起见,我们还是可以用普通的http协议来做开发调试的。

HTTP请求

小程序框架提供了一个名为wx.request()的方法,用于发起HTTP请求,不过值得注意,小程序对并发请求数量限制在了5个。

这个wx.request()方法的用法跟我们用jQuery里面的ajax方法十分的相似:

wx.request({ 
  url: 'https://your-domain/test',
  method: 'GET',
  data: { 
    param1: 'foo' , 
    param2: 'bar' 
  }, 
  header: { 
    'Content-Type': 'application/json' 
  }, 
  success: function(res) { 
    console.log(res.data) 
  }
})

借这个机会,我们用node.js来写一个正真的提供REST API服务的服务器端程序,并用小程序的API来连接测试一下。在这里我选用Sails框架来实现这个REST API Server。

首先我们安装sails的命令行工具,在你的命令行工具输入:

npm install -g sails

安装完成后,建立一个新的项目目录,比如叫rest-server,然后进入该目录,执行以下命令:

sails new --no-linker --no-frontend

它会在当前的rest-server目录下,生成一堆代码。这样,一个提供REST服务的node.js服务器程序的架子就基本有了。

代码结构

但是它里面还没有包含任何可用的REST API,我们需要自行添加。让我们在api/controllers目录下新建一个UsersController.js的文件,然后添加如下内容:

UsersController.js

这个文件会被自动映射成REST API,访问路径为/users/list,如果不做任何额外配置,那么这个API可以用任何HTTP Method去访问,如果我们想要限定它只能以GET方式访问,那么我们可以去config/routes.js中进行如下配置:

routes.js

好,一个非常简单的,可以用GET方式访问的REST API就完成了,我们来把这个服务器运行起来,在rest-server目录下,运行命令:

sails lift

成功启动后,就可以在1337端口进行访问了。我们可以直接在浏览器中输入网址测试一下我们写的API:

在网页中测试API

看上去我们的REST API已经在工作了。那好,我们就在小程序中,试着去调用这个REST API:

小程序调用逻辑

如果我们成功获取到这个API返回的数组数据,我们就在小程序界面里将它们显示出来:

小程序模板

这个是实际的运行效果:

运行结果

好了,这就是关于小程序调用REST API的一个非常简单的例子,实际的项目中,可能要复杂一些,但是万变不离其宗。

WebSocket

有些应用场景下,我们会对页面的实时性有要求,在浏览器的Web页面开发中,使用WebSocket API去连接一个提供WebSocket服务的服务器端,是目前的主流方案。

在浏览器中,我们直接使用WebSocket对象,然后调用这个对象上的一些方法和监听该对象发出的一些事件。而微信小程序框架提供的是一系列的函数,不过,两者在概念上基本是一样的,所以熟悉WebSocket的朋友不会对其陌生。

小程序的WebSocket API

在下一篇的文章里,我将继续讲解如何建立一个基于node.js的WebSocket服务器,并在小程序中使用它。

谢谢大家阅读本文。

目录
相关文章
|
3月前
|
小程序
尝试使用阿里云服务器搭建微信小程序
华北电力大学核工程大一学生,出于对编程的热爱与大创项目需求,涉足微信小程序搭建。初期在实验指导下克服不熟悉编程的困难,但后期发现教程引导不足,尤其是对于代码定位缺乏清晰指引。建议加强网页图像指导,以适应不同编程水平用户,尤其是新手。
尝试使用阿里云服务器搭建微信小程序
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
|
3月前
|
PHP 开发工具
tp5+微信公众号服务器配置时使用官方sdk还是token验证失败
tp5+微信公众号服务器配置时使用官方sdk还是token验证失败
26 0
|
5月前
|
安全 Java Linux
如何实现无公网IP及服务器实现公网环境企业微信网页应用开发调试
如何实现无公网IP及服务器实现公网环境企业微信网页应用开发调试
|
5月前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
129 0
|
5月前
|
小程序 开发者
体验版小程序为何无法访问云端服务器后端接口(请求失败...(已完美解决附加图片))?
体验版小程序为何无法访问云端服务器后端接口(请求失败...(已完美解决附加图片))?
201 0
|
5月前
|
监控 小程序 前端开发
小程序全栈开发中的WebSocket实时通信实践
【4月更文挑战第12天】本文探讨了小程序全栈开发中WebSocket实时通信的实践,WebSocket作为实现双向实时通信的协议,其长连接特性和双向通信能力在实时聊天、推送、游戏和监控等场景中发挥关键作用。开发者需注意安全性、性能和兼容性问题,以优化用户体验并确保小程序稳定运行。通过掌握WebSocket,开发者能提升小程序的功能性和用户体验。
127 0
|
5月前
|
JSON 小程序 JavaScript
【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)
【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)
|
27天前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
25天前
|
编解码 前端开发 安全
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
在我们选购阿里云服务器的过程中,不管是新用户还是老用户通常都是通过阿里云的活动去买了,一是价格更加实惠,二是活动中的云服务器配置比较丰富,足可以满足大部分用户的需求,但是面对琳琅满目的云服务器实例、带宽和云盘选项,如何选择更适合自己,成为许多用户比较关注的问题。本文将介绍如何在阿里云的活动中选择合适的云服务器实例、带宽和云盘,以供参考和选择。
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
下一篇
无影云桌面