ShareBook1后台框架与小程序用户登录接口实战

32次阅读

共计 2127 个字符,预计需要花费 6 分钟才能阅读完成。

本博客 猫叔的博客,转载请申明出处
阅读本文约“5 分钟”
适读人群:Java 后端、Java 初级、小程序前端

前后端项目的地址

  • ShareBookServer
  • ShareBookClient

小程序前端

先看一下本节的学习目录,我们项目的小程序会在首次登录的时候自动获取用户的 OpenId,并作为系统的注册信息,这里只是获取其 OpenId 或者 SessionId,还 没有获取用户信息(比如头像、Id、性别等)。

而在获取前,大家可能还要了解一下小程序的 用户注册流程,这里我就不具体说了。

我们会在 app.js(这个是所有小程序 首次都会执行的 js,我们会对小程序的 缓存区 Storage进行校验,并确定是否存在有效 token),做校验,如果没有就进行 首次注册

注册流程是从小程序(简称 vx,以下 vx 替代)获取用户的 code,给到服务器,服务器会用 code 还有自己的 appId 等信息一起去微信服务器请求用户数据,注意每一个 vx 所对应的用户 openid 都是不一样 的。

config.js 是存放整个 vx 的 统一基层 API 地址

就如上图写的,前端在第一节的内容较为简单,大家可以在 GitHub 看到源码。

针对适读人群的合理学习时间是:45 分钟,并了解 vx 官网部分简易 API

Java 服务端

本节的服务端是重点,除了搭建整个 SpringBoot 基本开发框架以外(好像不用很久)还要准备一些基本的 公关类和工具类,这个大家学习起来可能有点费劲,不过干货很多。

首先是技术栈,SpringBoot+MySQL+MyBatis,这个我就不具体说怎么搭建了,详情看源码,或者我的 官网 也有搭建教程。

在 pom 文件中,我引入了 Swagger,这会方便我们与前端对接 API 的信息,你仅需要在启动类加上一个 @EnableSwagger2 的注解 即可。

访问:http://localhost:8080/sharebook/swagger-ui.html(注意我的 application-dev.yml 中给项目起了名字叫 sharebook,如果你是 其他名字,请修改)

需要介绍的是,大家可以看看 resources 文件夹我采用 application.yml、application-dev.yml,这样可以方便我们快速切换 开发、生产、测试等多种环境的项目配置,希望大家可以养成习惯。

在项目的实体类上,我采用 Lombok 快速生成 get/set 方法,你仅需要加一个 @Data 的注解,这里你需要注意还要加 无参和全参的构造函数,例如我一开始没有全参的构造,在读取生成 User 实体类的时候,MyBatis 会报java.lang.NoSuchMethodException

同时实体类需要序列号,我这里就采用默认的 Serializable,对实体类序列化是因为它可能需要进行 网络通信或者数据持久化。对于加了 Serializable 的实体类,最好有一个对应的 UID。

因为我是用 IDEA(推荐使用),所有如果要 生成 UID,可以在配置勾选以上的 选项,然后点击实体类按“Alt+Enter”,然后选择生成 UID 即可。

common & util

对于 AppMessage,大家可能会吐槽,因为其实可以优化,不过我从 ssm 迁移过来就偷懒了,大家可以 fork 后自己改为 SpringBoot 的 yml 配置形式,它其实就是一些 静态配置

HttpService 写的不好,大家可以修改优化,是一个普通的Http 请求工具类

主要是 ResponseCode 和 ServerCache,对 API 接口返回层做了 统一处理 ,vx 前端程序员可以更好的 调试工作,推荐大家模仿优化。

TokenCache 使用了 Google 的 guava 做了本地缓存,缓存 vx 登录的 token,一定要设定有效时间。

其实 util 包和 common 包一开始拆分的不好,所以大家可以优化。

MD5Util 就是一个 MD5 的加解密处理。

业务处理

就如上面 vx 环节说的,我们 API 获取到 code 后会进行校验处理。

我在接口实现使用了很古老的方式,代码是很久以前的了,见谅,介绍流程为主。大家可以去修改优化。

我对从微信服务器获取到的结果进行校验和数据获取,得到的openid 先到数据库校验,用户是否存在,存在就生成 Token,不存在就注册后生成 Token。流程很简单。

补充以下,vx 的 API 路径我推荐:http://localhost:8080/sharebook/api/v1/

这里采用 v1 命名。是因为后续升级后 v2,这样有时可以 保证老版本 API 可以继续使用或者停用

针对适读人群的合理学习时间是:115 分钟,推荐自己模仿敲一遍

实战调试

vx 首次登录调用成功。

vx 缓存区 Storage 存储 token 数据

后端服务器日志打印正常。

SQL 数据录入正常,这里 sessionId 为 null 是正常的,项目业务没有要求存储 sessionId,注意对于在统一公众号下的不同小程序的 openid 是不同的,但是 sessionId 是一致的(不知道近期 vx 官方是否更改规则)。

目录链接

  • 没有实战经验?从零敲一个企业级共享项目前后端!

公众号:Java 猫说

学习交流群:728698035

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

正文完
 0