今天主要完成的是微信小程序的相关实现,大家可以参照微信官网
1.了解了微信小程序如何申请与上传,粗略听了微信小程序该如何实现
2.导入微信小程序的代码,并进行了接口测试(用微信状态码来获取用户唯一标识)
3.在Spring中配置了微信小程序所用到的参数(记得分环境配置)
4.在Spring中配置了JWT关于C端用户的参数
5.配置用户端的拦截器并且注册
6.实现了用户登录接口
7.导入商品浏览功能(和管理层基本一致)
具体流程: 微信小程序开始编译(用户点击)生成微信状态码code =》 服务端接收code(只能使用一次) =》 服务端传出code与自己小程序的id与密钥参数访问微信接口服务 =》 接收微信接口服务传递过来的参数(JSON数据) =》 进行JSON转换获取openid(用户微信的唯一标识) =》 判断是否为空 =》 为空则抛出异常,不为空则在进行操作 =》 根据openid查询数据库 =》 判断数据库中User是否有值 =》 没有,则是新用户登录,将用户数据存入数据库 /有则是进行操作 =》 最终返回User数据
1.我们获取的code是微信的授权码,用这个授权码就可以获取关于用户登录时的信息(授权码只能使用一次)
2.获取的openid则是用户微信的唯一标识(每个用户的标识都不同),唯一想到什么,数据唯一,我们可以用这个来判断该用户是否注册(在数据库查询)
3.用授权码code来获取openid需要访问https://api.weixin.qq.com/sns/jscode2session(地址固定)
用地址栏传参(参数名固定,最后一个参数值也固定)(地址?参数名=值&参数名=值)
返回参数(我们这里只需要openid即可)
4.上面涉及到小程序的密钥,我们生成的时候记得保存下来,不然你后面来查询不到(只能重新生成)
5.返回参数的类型是JSON字符串的数据,我们需要将其转换成java能够识别的数据(扩展细说)
1.我们之前拦截管理端的时候是指定拦截路径为admin(这是约束的)的,并且排除了登录请求(这里要生成令牌,JWT具体流程在我之前已经详细说明)
2.而我们拦截用户端是指定拦截路径为user,排除了登录以及查询店铺状态的请求,这里为什么要排除查询店铺状态的请求呢? =》 你要想你点进去一个小程序,哪怕你没有登录,基本的页面是不是要展示出来,而我们的店铺状态是需要查询才知道的,所以我们需要排除它
3.总结:我们进行拦截的操作时,不要只停留在排除了登录请求就行了,我们需要考虑的是什么请求是可以不登录就可以成功访问的(比如店铺状态的展示),而且我们拦截要分模块拦截,不能直接拦截所有请求(效率不高,也不方便)
1.我们调用的是JSON.parseObject(),这个方法,它可以将JSON格式的字符串反序列化转化成java对象
2.怎么使用
1.将JSON字符串转换成特定Java对象
String json = "{"name": "zhanghada" , "age": 18}"; User user = JSON.parseObject(json,User.class) ; =》 如果有一个与json参数内的属性一一对应的实体类对象User,那么我们可以直接这样写,转换成User该类的对象
2. 将JSON字符串转换成通用Java对象
String json = "{"name": "zhanghada" , "age": 18}"; JSONObject jsonObj= JSON.parseObject(json); =>没有对应实体类,那么我们可以封装成一个通用的Json对象(java能使用的对象)
3.我们今天使用的是第二种方式
解释:获取了JSONObject对象后,我们可以调用getString()方法,里面指定对应key(就是传过来的参数名),得到的值就是具体封装的属性值
4.总结:第一种方式用于获取大量参数时,我们可以封装一个实体类来接收,而第二种方法则是获取单一参数时来使用