各位老铁们好,相信很多人对微信小程序服务端都不是特别的了解,因此呢,今天就来为大家分享下关于微信小程序服务端以及微信小程序服务端是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
随着移动互联网的快速发展,微信小程序已经成为人们日常生活中不可或缺的一部分。作为一款轻量级的应用,微信小程序凭借其便捷、快速、无需下载安装等特点,深受广大用户的喜爱。而微信小程序服务端作为小程序的核心,承载着数据存储、业务逻辑处理、接口调用等重要功能。本文将深入解析微信小程序服务端,探讨其技术架构、开发流程以及在实际应用中的优势。
一、微信小程序服务端概述
1. 定义:微信小程序服务端是指运行在服务器上,负责处理小程序业务逻辑、数据存储、接口调用的程序。它通过微信提供的API与小程序客户端进行交互,实现数据传输和业务处理。
2. 作用:微信小程序服务端是小程序的核心,主要负责以下功能:
数据存储:将小程序所需的数据存储在服务器上,如用户信息、商品信息等。
业务逻辑处理:实现小程序的业务逻辑,如用户登录、商品购买等。
接口调用:提供API接口,供小程序客户端调用,实现数据交互。
二、微信小程序服务端技术架构
1. 开发语言:微信小程序服务端支持多种开发语言,包括Node.js、Python、Java等。其中,Node.js因其高性能、轻量级等特点,成为最受欢迎的开发语言。
2. 框架选择:微信小程序服务端开发框架主要包括Koa、Express、Flask等。这些框架提供了丰富的中间件、插件和工具,方便开发者快速搭建服务端应用。
3. 数据库选择:微信小程序服务端常用的数据库包括MySQL、MongoDB、Redis等。根据业务需求选择合适的数据库,可以提高应用性能和稳定性。
4. 缓存机制:微信小程序服务端可以通过Redis等缓存技术,提高数据读取速度,减轻数据库压力。
三、微信小程序服务端开发流程
1. 需求分析:明确小程序的功能需求,如用户登录、商品浏览、订单支付等。
2. 技术选型:根据需求选择合适的开发语言、框架、数据库等。
3. 数据库设计:设计合理的数据库结构,满足业务需求。
4. 接口开发:开发API接口,实现小程序客户端与服务器之间的数据交互。
5. 业务逻辑处理:实现小程序的业务逻辑,如用户登录、商品购买等。
6. 测试与优化:对小程序服务端进行测试,确保功能稳定、性能优良。
四、微信小程序服务端优势
1. 跨平台:微信小程序服务端开发一次,即可实现多平台运行,降低开发成本。
2. 性能优越:微信小程序服务端采用Node.js等高性能开发语言,提高应用性能。
3. 易于维护:微信小程序服务端采用模块化开发,便于后期维护和升级。
4. 数据安全:微信小程序服务端将数据存储在服务器上,有效保障用户数据安全。
五、案例分析
以下是一个微信小程序服务端的实际案例:
| 案例名称 | 功能描述 | 技术选型 |
|---|---|---|
| 小程序商城 | 商品浏览、搜索、购买、支付等 | Node.js、Express、MySQL、Redis |
1. 需求分析:用户可以在小程序中浏览商品、搜索商品、购买商品、支付订单等。
2. 技术选型:选择Node.js作为开发语言,Express作为框架,MySQL作为数据库,Redis作为缓存。
3. 数据库设计:设计商品表、用户表、订单表等,满足业务需求。
4. 接口开发:开发商品接口、用户接口、订单接口等,实现数据交互。
5. 业务逻辑处理:实现商品浏览、搜索、购买、支付等业务逻辑。
6. 测试与优化:对小程序服务端进行测试,确保功能稳定、性能优良。
通过以上案例,可以看出微信小程序服务端在实际应用中的优势。
总结
微信小程序服务端作为小程序的核心,承载着数据存储、业务逻辑处理、接口调用等重要功能。本文深入解析了微信小程序服务端的技术架构、开发流程以及在实际应用中的优势。相信随着微信小程序的不断发展,微信小程序服务端将在更多领域发挥重要作用。
怎么实现微信小程序登录鉴权
这次给大家带来怎么实现微信小程序登录鉴权,实现微信小程序登录鉴权的注意事项有哪些,下面就是实战案例,一起来看一下。
前言
为了方便小程序应用使用微信登录态进行授权登录,微信小程序提供了登录授权的开放接口。乍一看文档,感觉文档上讲的非常有道理,但是实现起来又真的是摸不着头脑,不知道如何管理和维护登录态。本文就来手把手的教会大家在业务里如何接入和维护微信登录态,下面话不多说了,来一起看看详细的介绍吧。
接入流程
这里官方文档上的流程图已经足够清晰,我们直接就该图展开详述和补充。
首先大家看到这张图,肯定会注意到小程序进行通信交互的不止是小程序前端和我们自己的服务端,微信第三方服务端也参与其中,那么微信服务端在其中扮演着怎样的角色呢?我们一起来串一遍登录鉴权的流程就明白了。
1.调用wx.login生成code
wx.login()这个API的作用就是为当前用户生成一个临时的登录凭证,这个临时登录凭证的有效期只有五分钟。我们拿到这个登录凭证后就可以进行下一步操作:获取 openid和 session_key
wx.login({
success: function(loginRes){
if(loginRes.code){
// example: 081LXytJ1Xq1Y40sg3uJ1FWntJ1LXyth
}
}
});2.获取openid和session_key
我们先来介绍下openid,用过公众号的童鞋应该对这个标识都不陌生了,在公众平台里,用来标识每个用户在订阅号、服务号、小程序这三种不同应用的唯一标识,也就是说每个用户在每个应用的openid都是不一致的,所以在小程序里,我们可以用openid来标识用户的唯一性。
那么session_key是用来干嘛的呢?有了用户标识,我们就需要让该用户进行登录,那么 session_key就保证了当前用户进行会话操作的有效性,这个session_key是微信服务端给我们派发的。也就是说,我们可以用这个标识来间接地维护我们小程序用户的登录态,那么这个session_key是怎么拿到的呢?我们需要在自己的服务端请求微信提供的第三方接口 ,这个接口需要带上四个参数字段:
参数值appid小程序的appidsecret小程序的secretjs_code前面调用wx.login派发的codegrant_type'authorization_code'从这几个参数,我们可以看出,要请求这个接口必须先调用wx.login()来获取到用户当前会话的code。那么为什么我们要在服务端来请求这个接口呢?其实是出于安全性的考量,如果我们在前端通过request调用此接口,就不可避免的需要将我们小程序的appid和小程序的secret暴露在外部,同时也将微信服务端下发的session_key暴露给“有心之人”,这就给我们的业务安全带来极大的风险。除了需要在服务端进行session_key的获取,我们还需要注意两点:
session_key和微信派发的code是一一对应的,同一code只能换取一次session_key。每次调用wx.login(),都会下发一个新的code和对应的session_key,为了保证用户体验和登录态的有效性,开发者需要清楚用户需要重新登录时才去调用wx.login()
session_key是有失效性的,即便是不调用wx.login,session_key也会过期,过期时间跟用户使用小程序的频率成正相关,但具体的时间长短开发者和用户都是获取不到的
function getSessionKey(code, appid, appSecret){
var opt={
method:'GET',
url:';,
params:{
appid: appid,
secret: appSecret,
js_code: code,
grant_type:'authorization_code'
}
};
return http(opt).then(function(response){
var data= response.data;
if(!data.openid||!data.session_key|| data.errcode){
return{
result:-2,
errmsg: data.errmsg||'返回数据字段不完整'
}
} else{
return data
}
});
}3.生成3rd_session
前面说过通过 session_key来“间接”地维护登录态,所谓间接,也就是我们需要自己维护用户的登录态信息,这里也是考虑到安全性因素,如果直接使用微信服务端派发的session_key来作为业务方的登录态使用,会被“有心之人”用来获取用户的敏感信息,比如wx.getUserInfo()这个接口呢,就需要session_key来配合解密微信用户的敏感信息。
那么我们如果生成自己的登录态标识呢,这里可以使用几种常见的不可逆的哈希算法,比如md5、sha1等,将生成后的登录态标识(这里我们统称为'skey')返回给前端,并在前端维护这份登录态标识(一般是存入storage)。而在服务端呢,我们会把生成的skey存在用户对应的数据表中,前端通过传递skey来存取用户的信息。
可以看到这里我们使用了sha1算法来生成了一个skey:
const crypto= require('crypto');
return getSessionKey(code, appid, secret)
.then(resData=>{
//选择加密算法生成自己的登录态标识
const{ session_key}= resData;
const skey= encryptSha1(session_key);
});
function encryptSha1(data){
return crypto.createHash('sha1').update(data,'utf8').digest('hex')
}4. checkSession
前面我们将skey存入前端的storage里,每次进行用户数据请求时会带上skey,那么如果此时session_key过期呢?所以我们需要调用到wx.checkSession()这个API来校验当前session_key是否已经过期,这个API并不需要传入任何有关session_key的信息参数,而是微信小程序自己去调自己的服务来查询用户最近一次生成的session_key是否过期。如果当前session_key过期,就让用户来重新登录,更新session_key,并将最新的skey存入用户数据表中。
checkSession这个步骤呢,我们一般是放在小程序启动时就校验登录态的逻辑处,这里贴个校验登录态的流程图:
下面代码即校验登录态的简单流程:
let loginFlag= wx.getStorageSync('skey');
if(loginFlag){
//检查 session_key是否过期
wx.checkSession({
// session_key有效(未过期)
success: function(){
//业务逻辑处理
},
// session_key过期
fail: function(){
// session_key过期,重新登录
doLogin();
}
});
) else{
//无skey,作为首次登录
doLogin();
}5.支持emoji表情存储
如果需要将用户微信名存入数据表中,那么就确认数据表及数据列的编码格式。因为用户微信名可能会包含emoji图标,而常用的UTF8编码只支持1-3个字节,emoji图标刚好是4个字节的编码进行存储。
这里有两种方式(以mysql为例):
1.设置存储字符集
在mysql5.5.3版本后,支持将数据库及数据表和数据列的字符集设置为 utf8mb4,因此可在/etc/my.cnf设置默认字符集编码及服务端编码格式
// my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake= FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci设置完默认字符集编码及服务端字符集编码,如果是对已经存在的表和字段进行编码转换,需要执行下面几个步骤:
设置数据库字符集为 utf8mb4
ALTER DATABASE数据库名称 CHARACTER SET= utf8mb4 COLLATE= utf8mb4_unicode_ci;设置数据表字符集为 utf8mb4
ALTER TABLE数据表名称 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;设置数据列字段字符集为 utf8mb4
ALTER TABLE数据表名称 CHANGE字段列名称 VARCHAR(n) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这里的 COLLATE指的是排序字符集,也就是用来对存储的字符进行排序和比较的, utf8mb4常用的collation有两种: utf8mb4_unicode_ci和 utf8mb4_general_ci,一般建议使用 utf8mb4_unicode_ci,因为它是基于标准的 Unicode Collation Algorithm(UCA)来排序的,可以在各种语言进行精确排序。这两种排序方式的具体区别可以参考: What's the difference between utf8_general_ci and utf8_unicode_ci
2.通过使用sequelize对emoji字符进行编码入库,使用时再进行解码
这里是sequelize的配置,可参考 Sequelize文档
{
dialect:'mysql',//数据库类型
dialectOptions:{
charset:'utf8mb4',
collate:”utf8mb4_unicode_ci”
},
}相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
怎样搭建vue2.0+boostrap项目
Angular入口组件与声明式组件案例对比
微信小程序服务连接失败
这里提到微信小程序连接不上的问题,鉴于你给出的信息太少,我也很难说明问题出在哪。如果愿意尝试,我就写一些排查的思路给你参考。
微信小程序常见服务请求失败问题总结及解决方案1.首先,保证手机和电脑都连接了同一个wifi或者路由器,因为你的操作信息需要通过wifi发送给电脑。
2.确定电脑上的vgpad-server服务端程序和vigembus驱动程序都完成安装,如果安装失败可能是系统版本或类型的原因,目前程序暂时只支持win10 64位系统。其他比如win11由于我目前没有多余的设备来测试,还不知道能不能用。
3.第一次启动vgpad-server程序时,系统可能会弹出防火墙安全提示,这时一定要选择“允许访问”,如果没有允许,防火墙可能会阻止手机向电脑发送数据。如果第一次没有选择允许,可以去防火墙设置里找找“允许应用通过Windows防火墙”,改一下就好。
4.通常情况下,打开小程序后会自动搜索服务端并显示在主页面上。如果你的网络条件比较特殊,如校园网或公用网络,自动搜索可能会失效,这个时候可以用ip地址直接连接服务端,至于ip地址则会显示在电脑的服务端程序中。
微信开发者工具中未勾选不校验合法域名设置
未勾选这个设置在任何环境下发送http网络请求会失败
发送的是https请求,但网络请求依旧是失败
需要到官方的微信小程序后台的开发管理->开发设置->服务器域名配置位置进行域名的配置
在体验版环境下无法发送http网络请求点击小程序右上角···打开菜单
->点击开发调试按钮
->打开调试
->打开后需要重新打开小程序
->然后小程序界面中出现绿色的 vConsole按钮即可
微信开发者工具中网络请求正常,真机上就是发不了请求
检查您的手机手机和公司的开发环境是否在同一局域网内,一般就是用着同一个网络就ok
总结:
综上所述,微信小程序服务连接失败的原因有很多,需要仔细排查和分析具体情况才能得到准确的原因。
微信小程序是什么
简介:
1、微信小程序(weixinxiaochengxu),简称小程序,缩写XCX,英文名MiniProgram,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
2、全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。小程序、订阅号、服务号、企业号是并行的体系。
3、2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线。
4、小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
5、对于开发者而言,小程序开发门槛相对较低,难度不及APP,能够满足简单的基础应用,适合生活服务类线下商铺以及非刚需低频应用的转换。小程序能够实现消息通知、线下扫码、公众号关联等七大功能。其中,通过公众号关联,用户可以实现公众号与小程序之间相互跳转。由于小程序不存在入口。
/iknow-pic.cdn.bcebos.com/3b87e950352ac65c4ccbaa94f0f2b21192138a0f”target=”_blank”title=”点击查看大图”class=”ikqb_img_alink”>/iknow-pic.cdn.bcebos.com/3b87e950352ac65c4ccbaa94f0f2b21192138a0f?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto”esrc=””/>
关于微信小程序服务端和微信小程序服务端是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。




