本博客 貓叔的博客,轉載請申明出處html
閱讀本文約 「5分鐘」前端
適讀人羣:Java後端、Java初級、小程序前端java
先看一下本節的學習目錄,咱們項目的小程序會在首次登陸的時候自動獲取用戶的OpenId
,並做爲系統的註冊信息,這裏只是獲取其OpenId或者SessionId,還沒有獲取用戶信息
(好比頭像、Id、性別等)。git
而在獲取前,你們可能還要了解一下小程序的用戶註冊流程
,這裏我就不具體說了。程序員
咱們會在app.js(這個是全部小程序首次都會執行的js
,咱們會對小程序的緩存區Storage
進行校驗,並肯定是否存在有效token),作校驗,若是沒有就進行首次註冊
。github
註冊流程是從小程序(簡稱vx,如下vx替代)獲取用戶的code,給到服務器,服務器會用code還有本身的appId等信息一塊兒去微信服務器請求用戶數據,注意每個vx所對應的用戶openid都是不同
的。數據庫
config.js是存放整個vx的統一基層API地址
。小程序
就如上圖寫的,前端在第一節的內容較爲簡單,你們能夠在GitHub看到源碼。後端
針對適讀人羣的合理學習時間是:45分鐘,並瞭解vx官網部分簡易API
。api
本節的服務端是重點,除了搭建整個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便可。
對於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官方是否更改規則)。
學習交流羣:728698035
現架構設計(碼農)兼創業技術顧問,不羈平庸,熱愛開源,雜談程序人生與不按期乾貨。